From b838d5f775ea9f941f0f0fa3bdade1c7a584ac51 Mon Sep 17 00:00:00 2001 From: Dean <69436131+emdeann@users.noreply.github.com> Date: Fri, 28 Mar 2025 14:23:57 -0700 Subject: [PATCH 1/4] [Misc] Allow Localization of Common Trainer Names (#5569) * Localize common trainer names * Update locale key usage --- .../global-trade-system-encounter.ts | 17 +- src/data/trainer-names.ts | 2645 ----------------- src/field/trainer.ts | 17 +- src/plugins/i18n.ts | 1 + 4 files changed, 21 insertions(+), 2659 deletions(-) diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index 2b7cd823af2..4f10a657e4e 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -23,7 +23,7 @@ import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species"; import { getTypeRgb } from "#app/data/type"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; -import { NumberHolder, isNullOrUndefined, randInt, randSeedInt, randSeedShuffle } from "#app/utils"; +import { NumberHolder, isNullOrUndefined, randInt, randSeedInt, randSeedShuffle, randSeedItem } from "#app/utils"; import type { PlayerPokemon } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; @@ -41,11 +41,11 @@ import { Gender, getGenderSymbol } from "#app/data/gender"; import { getNatureName } from "#app/data/nature"; import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; -import { trainerNamePools } from "#app/data/trainer-names"; import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/game-mode"; import { addPokemonDataToDexAndValidateAchievements } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import type { PokeballType } from "#enums/pokeball"; import { doShinySparkleAnim } from "#app/field/anims"; +import { TrainerType } from "#enums/trainer-type"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/globalTradeSystem"; @@ -982,15 +982,14 @@ function doTradeReceivedSequence( } function generateRandomTraderName() { - const length = Object.keys(trainerNamePools).length; + const length = TrainerType.YOUNGSTER - TrainerType.ACE_TRAINER + 1; // +1 avoids TrainerType.UNKNOWN - let trainerTypePool = trainerNamePools[randInt(length) + 1]; - while (!trainerTypePool) { - trainerTypePool = trainerNamePools[randInt(length) + 1]; - } + const trainerTypePool = i18next.t("trainersCommon:" + TrainerType[randInt(length) + 1], { returnObjects: true }); // Some trainers have 2 gendered pools, some do not - const genderedPool = trainerTypePool[randInt(trainerTypePool.length)]; - const trainerNameString = Array.isArray(genderedPool) ? genderedPool[randInt(genderedPool.length)] : genderedPool; + const gender = randInt(2) === 0 ? "MALE" : "FEMALE"; + const trainerNameString = randSeedItem( + Object.values(trainerTypePool.hasOwnProperty(gender) ? trainerTypePool[gender] : trainerTypePool), + ) as string; // Some names have an '&' symbol and need to be trimmed to a single name instead of a double name const trainerNames = trainerNameString.split(" & "); return trainerNames[randInt(trainerNames.length)]; diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index c72356d88ae..26cea19070f 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -74,2651 +74,6 @@ const trainerNameConfigs: TrainerNameConfigs = { [TrainerType.YOUNGSTER]: new TrainerNameConfig(TrainerType.YOUNGSTER).hasGenderVariant("Lass"), }; -export const trainerNamePools = { - [TrainerType.ACE_TRAINER]: [ - [ - "Aaron", - "Allen", - "Blake", - "Brian", - "Gaven", - "Jake", - "Kevin", - "Mike", - "Nick", - "Paul", - "Ryan", - "Sean", - "Darin", - "Albert", - "Berke", - "Clyde", - "Edgar", - "George", - "Leroy", - "Owen", - "Parker", - "Randall", - "Ruben", - "Samuel", - "Vincent", - "Warren", - "Wilton", - "Zane", - "Alfred", - "Braxton", - "Felix", - "Gerald", - "Jonathan", - "Leonel", - "Marcel", - "Mitchell", - "Quincy", - "Roderick", - "Colby", - "Rolando", - "Yuji", - "Abel", - "Anton", - "Arthur", - "Cesar", - "Dalton", - "Dennis", - "Ernest", - "Garrett", - "Graham", - "Henry", - "Isaiah", - "Jonah", - "Jose", - "Keenan", - "Micah", - "Omar", - "Quinn", - "Rodolfo", - "Saul", - "Sergio", - "Skylar", - "Stefan", - "Zachery", - "Alton", - "Arabella", - "Bonita", - "Cal", - "Cody", - "French", - "Kobe", - "Paulo", - "Shaye", - "Austin", - "Beckett", - "Charlie", - "Corky", - "David", - "Dwayne", - "Elmer", - "Jesse", - "Jared", - "Johan", - "Jordan", - "Kipp", - "Lou", - "Terry", - "Tom", - "Webster", - "Billy", - "Doyle", - "Enzio", - "Geoff", - "Grant", - "Kelsey", - "Miguel", - "Pierce", - "Ray", - "Santino", - "Shel", - "Adelbert", - "Bence", - "Emil", - "Evan", - "Mathis", - "Maxim", - "Neil", - "Rico", - "Robbie", - "Theo", - "Viktor", - "Benedict", - "Cornelius", - "Hisato", - "Leopold", - "Neville", - "Vito", - "Chase", - "Cole", - "Hiroshi", - "Jackson", - "Jim", - "Kekoa", - "Makana", - "Yuki", - "Elwood", - "Seth", - "Alvin", - "Arjun", - "Arnold", - "Cameron", - "Carl", - "Carlton", - "Christopher", - "Dave", - "Dax", - "Dominic", - "Edmund", - "Finn", - "Fred", - "Garret", - "Grayson", - "Jace", - "Jaxson", - "Jay", - "Jirard", - "Johnson", - "Kayden", - "Kite", - "Louis", - "Mac", - "Marty", - "Percy", - "Raymond", - "Ronnie", - "Satch", - "Tim", - "Zach", - "Conner", - "Vince", - "Bedro", - "Boda", - "Botan", - "Daras", - "Dury", - "Herton", - "Rewn", - "Stum", - "Tock", - "Trilo", - "Berki", - "Cruik", - "Dazon", - "Desid", - "Dillot", - "Farfin", - "Forgon", - "Hebel", - "Morfon", - "Moril", - "Shadd", - "Vanhub", - "Bardo", - "Carben", - "Degin", - "Gorps", - "Klept", - "Lask", - "Malex", - "Mopar", - "Niled", - "Noxon", - "Teslor", - "Tetil", - ], - [ - "Beth", - "Carol", - "Cybil", - "Emma", - "Fran", - "Gwen", - "Irene", - "Jenn", - "Joyce", - "Kate", - "Kelly", - "Lois", - "Lola", - "Megan", - "Quinn", - "Reena", - "Cara", - "Alexa", - "Brooke", - "Caroline", - "Elaine", - "Hope", - "Jennifer", - "Jody", - "Julie", - "Lori", - "Mary", - "Michelle", - "Shannon", - "Wendy", - "Alexia", - "Alicia", - "Athena", - "Carolina", - "Cristin", - "Darcy", - "Dianne", - "Halle", - "Jazmyn", - "Katelynn", - "Keira", - "Marley", - "Allyson", - "Kathleen", - "Naomi", - "Alyssa", - "Ariana", - "Brandi", - "Breanna", - "Brenda", - "Brenna", - "Catherine", - "Clarice", - "Dana", - "Deanna", - "Destiny", - "Jamie", - "Jasmin", - "Kassandra", - "Laura", - "Maria", - "Mariah", - "Maya", - "Meagan", - "Mikayla", - "Monique", - "Natasha", - "Olivia", - "Sandra", - "Savannah", - "Sydney", - "Moira", - "Piper", - "Salma", - "Allison", - "Beverly", - "Cathy", - "Cheyenne", - "Clara", - "Dara", - "Eileen", - "Glinda", - "Junko", - "Lena", - "Lucille", - "Mariana", - "Olwen", - "Shanta", - "Stella", - "Angi", - "Belle", - "Chandra", - "Cora", - "Eve", - "Jacqueline", - "Jeanne", - "Juliet", - "Kathrine", - "Layla", - "Lucca", - "Melina", - "Miki", - "Nina", - "Sable", - "Shelly", - "Summer", - "Trish", - "Vicki", - "Alanza", - "Cordelia", - "Hilde", - "Imelda", - "Michele", - "Mireille", - "Claudia", - "Constance", - "Harriet", - "Honor", - "Melba", - "Portia", - "Alexis", - "Angela", - "Karla", - "Lindsey", - "Tori", - "Sheri", - "Jada", - "Kailee", - "Amanda", - "Annie", - "Kindra", - "Kyla", - "Sofia", - "Yvette", - "Becky", - "Flora", - "Gloria", - "Buna", - "Ferda", - "Lehan", - "Liqui", - "Lomen", - "Neira", - "Atilo", - "Detta", - "Gilly", - "Gosney", - "Levens", - "Moden", - "Rask", - "Rateis", - "Rosno", - "Tynan", - "Veron", - "Zoel", - "Cida", - "Dibsin", - "Dodin", - "Ebson", - "Equin", - "Flostin", - "Gabsen", - "Halsion", - "Hileon", - "Quelor", - "Rapeel", - "Roze", - "Tensin", - ], - ], - [TrainerType.ARTIST]: [ - ["Ismael", "William", "Horton", "Pierre", "Zach", "Gough", "Salvador", "Vincent", "Duncan"], - ["Georgia"], - ], - [TrainerType.BACKERS]: [ - ["Alf & Fred", "Hawk & Dar", "Joe & Ross", "Les & Web", "Masa & Yas", "Stu & Art"], - [ - "Ai & Ciel", - "Ami & Eira", - "Cam & Abby", - "Fey & Sue", - "Kat & Phae", - "Kay & Ali", - "Ava & Aya", - "Cleo & Rio", - "May & Mal", - ], - ], - [TrainerType.BACKPACKER]: [ - [ - "Alexander", - "Carlos", - "Herman", - "Jerome", - "Keane", - "Kelsey", - "Kiyo", - "Michael", - "Nate", - "Peter", - "Sam", - "Stephen", - "Talon", - "Terrance", - "Toru", - "Waylon", - "Boone", - "Clifford", - "Ivan", - "Kendall", - "Lowell", - "Randall", - "Reece", - "Roland", - "Shane", - "Walt", - "Farid", - "Heike", - "Joren", - "Lane", - "Roderick", - "Darnell", - "Deon", - "Emory", - "Graeme", - "Grayson", - "Aitor", - "Alex", - "Arturo", - "Asier", - "Jaime", - "Jonathan", - "Julio", - "Kevin", - "Kosuke", - "Lander", - "Markel", - "Mateo", - "Nil", - "Pau", - "Samuel", - ], - [ - "Anna", - "Corin", - "Elaine", - "Emi", - "Jill", - "Kumiko", - "Liz", - "Lois", - "Lora", - "Molly", - "Patty", - "Ruth", - "Vicki", - "Annie", - "Blossom", - "Clara", - "Eileen", - "Mae", - "Myra", - "Rachel", - "Tami", - "Ashley", - "Mikiko", - "Kiana", - "Perdy", - "Maria", - "Yuho", - "Peren", - "Barbara", - "Diane", - ], - ], - [TrainerType.BAKER]: ["Chris", "Jenn", "Lilly"], - [TrainerType.BEAUTY]: [ - "Cassie", - "Julia", - "Olivia", - "Samantha", - "Valerie", - "Victoria", - "Bridget", - "Connie", - "Jessica", - "Johanna", - "Melissa", - "Sheila", - "Shirley", - "Tiffany", - "Namiko", - "Thalia", - "Grace", - "Lola", - "Lori", - "Maura", - "Tamia", - "Cyndy", - "Devon", - "Gabriella", - "Harley", - "Lindsay", - "Nicola", - "Callie", - "Charlotte", - "Kassandra", - "December", - "Fleming", - "Nikola", - "Aimee", - "Anais", - "Brigitte", - "Cassandra", - "Andrea", - "Brittney", - "Carolyn", - "Krystal", - "Alexis", - "Alice", - "Aina", - "Anya", - "Arianna", - "Aubrey", - "Beverly", - "Camille", - "Beauty", - "Evette", - "Hansol", - "Haruka", - "Jill", - "Jo", - "Lana", - "Lois", - "Lucy", - "Mai", - "Nickie", - "Nicole", - "Prita", - "Rose", - "Shelly", - "Suzy", - "Tessa", - "Anita", - "Alissa", - "Rita", - "Cudsy", - "Eloff", - "Miru", - "Minot", - "Nevah", - "Niven", - "Ogoin", - ], - [TrainerType.BIKER]: [ - "Charles", - "Dwayne", - "Glenn", - "Harris", - "Joel", - "Riley", - "Zeke", - "Alex", - "Billy", - "Ernest", - "Gerald", - "Hideo", - "Isaac", - "Jared", - "Jaren", - "Jaxon", - "Jordy", - "Lao", - "Lukas", - "Malik", - "Nikolas", - "Ricardo", - "Ruben", - "Virgil", - "William", - "Aiden", - "Dale", - "Dan", - "Jacob", - "Markey", - "Reese", - "Teddy", - "Theron", - "Jeremy", - "Morgann", - "Phillip", - "Philip", - "Stanley", - "Dillon", - ], - [TrainerType.BLACK_BELT]: [ - [ - "Kenji", - "Lao", - "Lung", - "Nob", - "Wai", - "Yoshi", - "Atsushi", - "Daisuke", - "Hideki", - "Hitoshi", - "Kiyo", - "Koichi", - "Koji", - "Yuji", - "Cristian", - "Rhett", - "Takao", - "Theodore", - "Zander", - "Aaron", - "Hugh", - "Mike", - "Nicolas", - "Shea", - "Takashi", - "Adam", - "Carl", - "Colby", - "Darren", - "David", - "Davon", - "Derek", - "Eddie", - "Gregory", - "Griffin", - "Jarrett", - "Jeffery", - "Kendal", - "Kyle", - "Luke", - "Miles", - "Nathaniel", - "Philip", - "Rafael", - "Ray", - "Ricky", - "Sean", - "Willie", - "Ander", - "Manford", - "Benjamin", - "Corey", - "Edward", - "Grant", - "Jay", - "Kendrew", - "Kentaro", - "Ryder", - "Teppei", - "Thomas", - "Tyrone", - "Andrey", - "Donny", - "Drago", - "Gordon", - "Grigor", - "Jeriel", - "Kenneth", - "Martell", - "Mathis", - "Rich", - "Rocky", - "Rodrigo", - "Wesley", - "Zachery", - "Alonzo", - "Cadoc", - "Gunnar", - "Igor", - "Killian", - "Markus", - "Ricardo", - "Yanis", - "Banting", - "Clayton", - "Duane", - "Earl", - "Greg", - "Roy", - "Terry", - "Tracy", - "Walter", - "Alvaro", - "Curtis", - "Francis", - "Ross", - "Brice", - "Cheng", - "Dudley", - "Eric", - "Kano", - "Masahiro", - "Randy", - "Ryuji", - "Steve", - "Tadashi", - "Wong", - "Yuen", - "Brian", - "Carter", - "Reece", - "Nick", - "Yang", - ], - [ - "Cora", - "Cyndy", - "Jill", - "Laura", - "Sadie", - "Tessa", - "Vivian", - "Aisha", - "Callie", - "Danielle", - "Helene", - "Jocelyn", - "Lilith", - "Paula", - "Reyna", - "Helen", - "Kelsey", - "Tyler", - "Amy", - "Chandra", - "Hillary", - "Janie", - "Lee", - "Maggie", - "Mikiko", - "Miriam", - "Sharon", - "Susie", - "Xiao", - "Alize", - "Azra", - "Brenda", - "Chalina", - "Chan", - "Glinda", - "Maki", - "Tia", - "Tiffany", - "Wendy", - "Andrea", - "Gabrielle", - "Gerardine", - "Hailey", - "Hedvig", - "Justine", - "Kinsey", - "Sigrid", - "Veronique", - "Tess", - ], - ], - [TrainerType.BREEDER]: [ - [ - "Isaac", - "Myles", - "Salvadore", - "Albert", - "Kahlil", - "Eustace", - "Galen", - "Owen", - "Addison", - "Marcus", - "Foster", - "Cory", - "Glenn", - "Jay", - "Wesley", - "William", - "Adrian", - "Bradley", - "Jaime", - ], - [ - "Allison", - "Alize", - "Bethany", - "Lily", - "Lydia", - "Gabrielle", - "Jayden", - "Pat", - "Veronica", - "Amber", - "Jennifer", - "Kaylee", - "Adelaide", - "Brooke", - "Ethel", - "April", - "Irene", - "Magnolia", - "Amala", - "Mercy", - "Amanda", - "Ikue", - "Savannah", - "Yuka", - "Chloe", - "Debra", - "Denise", - "Elena", - ], - ], - [TrainerType.CLERK]: [ - [ - "Chaz", - "Clemens", - "Doug", - "Fredric", - "Ivan", - "Isaac", - "Nelson", - "Wade", - "Warren", - "Augustin", - "Gilligan", - "Cody", - "Jeremy", - "Shane", - "Dugal", - "Royce", - "Ronald", - ], - [ - "Alberta", - "Ingrid", - "Katie", - "Piper", - "Trisha", - "Wren", - "Britney", - "Lana", - "Jessica", - "Kristen", - "Michelle", - "Gabrielle", - ], - ], - [TrainerType.CYCLIST]: [ - ["Axel", "James", "John", "Ryan", "Hector", "Jeremiah"], - ["Kayla", "Megan", "Nicole", "Rachel", "Krissa", "Adelaide"], - ], - [TrainerType.DANCER]: [ - "Brian", - "Davey", - "Dirk", - "Edmond", - "Mickey", - "Raymond", - "Cara", - "Julia", - "Maika", - "Mireille", - "Ronda", - "Zoe", - ], - [TrainerType.DEPOT_AGENT]: ["Josh", "Hank", "Vincent"], - [TrainerType.DOCTOR]: [ - ["Hank", "Jerry", "Jules", "Logan", "Wayne", "Braid", "Derek", "Heath", "Julius", "Kit", "Graham"], - ["Kirsten", "Sachiko", "Shery", "Carol", "Dixie", "Mariah"], - ], - [TrainerType.FIREBREATHER]: ["Bill", "Burt", "Cliff", "Dick", "Lyle", "Ned", "Otis", "Ray", "Richard", "Walt"], - [TrainerType.FISHERMAN]: [ - "Andre", - "Arnold", - "Barney", - "Chris", - "Edgar", - "Henry", - "Jonah", - "Justin", - "Kyle", - "Martin", - "Marvin", - "Ralph", - "Raymond", - "Scott", - "Stephen", - "Wilton", - "Tully", - "Andrew", - "Barny", - "Carter", - "Claude", - "Dale", - "Elliot", - "Eugene", - "Ivan", - "Ned", - "Nolan", - "Roger", - "Ronald", - "Wade", - "Wayne", - "Darian", - "Kai", - "Chip", - "Hank", - "Kaden", - "Tommy", - "Tylor", - "Alec", - "Brett", - "Cameron", - "Cody", - "Cole", - "Cory", - "Erick", - "George", - "Joseph", - "Juan", - "Kenneth", - "Luc", - "Miguel", - "Travis", - "Walter", - "Zachary", - "Josh", - "Gideon", - "Kyler", - "Liam", - "Murphy", - "Bruce", - "Damon", - "Devon", - "Hubert", - "Jones", - "Lydon", - "Mick", - "Pete", - "Sean", - "Sid", - "Vince", - "Bucky", - "Dean", - "Eustace", - "Kenzo", - "Leroy", - "Mack", - "Ryder", - "Ewan", - "Finn", - "Murray", - "Seward", - "Shad", - "Wharton", - "Finley", - "Fisher", - "Fisk", - "River", - "Sheaffer", - "Timin", - "Carl", - "Ernest", - "Hal", - "Herbert", - "Hisato", - "Mike", - "Vernon", - "Harriet", - "Marina", - "Chase", - ], - [TrainerType.GUITARIST]: [ - "Anna", - "Beverly", - "January", - "Tina", - "Alicia", - "Claudia", - "Julia", - "Lidia", - "Mireia", - "Noelia", - "Sara", - "Sheila", - "Tatiana", - ], - [TrainerType.HARLEQUIN]: [ - "Charley", - "Ian", - "Jack", - "Kerry", - "Louis", - "Pat", - "Paul", - "Rick", - "Anders", - "Clarence", - "Gary", - ], - [TrainerType.HIKER]: [ - "Anthony", - "Bailey", - "Benjamin", - "Daniel", - "Erik", - "Jim", - "Kenny", - "Leonard", - "Michael", - "Parry", - "Phillip", - "Russell", - "Sidney", - "Tim", - "Timothy", - "Alan", - "Brice", - "Clark", - "Eric", - "Lenny", - "Lucas", - "Mike", - "Trent", - "Devan", - "Eli", - "Marc", - "Sawyer", - "Allen", - "Daryl", - "Dudley", - "Earl", - "Franklin", - "Jeremy", - "Marcos", - "Nob", - "Oliver", - "Wayne", - "Alexander", - "Damon", - "Jonathan", - "Justin", - "Kevin", - "Lorenzo", - "Louis", - "Maurice", - "Nicholas", - "Reginald", - "Robert", - "Theodore", - "Bruce", - "Clarke", - "Devin", - "Dwight", - "Edwin", - "Eoin", - "Noland", - "Russel", - "Andy", - "Bret", - "Darrell", - "Gene", - "Hardy", - "Hugh", - "Jebediah", - "Jeremiah", - "Kit", - "Neil", - "Terrell", - "Don", - "Doug", - "Hunter", - "Jared", - "Jerome", - "Keith", - "Manuel", - "Markus", - "Otto", - "Shelby", - "Stephen", - "Teppei", - "Tobias", - "Wade", - "Zaiem", - "Aaron", - "Alain", - "Bergin", - "Bernard", - "Brent", - "Corwin", - "Craig", - "Delmon", - "Dunstan", - "Orestes", - "Ross", - "Davian", - "Calhoun", - "David", - "Gabriel", - "Ryan", - "Thomas", - "Travis", - "Zachary", - "Anuhea", - "Barnaby", - "Claus", - "Collin", - "Colson", - "Dexter", - "Dillan", - "Eugine", - "Farkas", - "Hisato", - "Julius", - "Kenji", - "Irwin", - "Lionel", - "Paul", - "Richter", - "Valentino", - "Donald", - "Douglas", - "Kevyn", - "Chester", - ], //["Angela","Carla","Celia","Daniela","Estela","Fatima","Helena","Leire","Lucia","Luna","Manuela","Mar","Marina","Miyu","Nancy","Nerea","Paula","Rocio","Yanira"] - [TrainerType.HOOLIGANS]: ["Jim & Cas", "Rob & Sal"], - [TrainerType.HOOPSTER]: ["Bobby", "John", "Lamarcus", "Derrick", "Nicolas"], - [TrainerType.INFIELDER]: ["Alex", "Connor", "Todd"], - [TrainerType.JANITOR]: ["Caleb", "Geoff", "Brady", "Felix", "Orville", "Melvin", "Shawn"], - [TrainerType.LINEBACKER]: ["Bob", "Dan", "Jonah"], - [TrainerType.MAID]: ["Belinda", "Sophie", "Emily", "Elena", "Clare", "Alica", "Tanya", "Tammy"], - [TrainerType.MUSICIAN]: [ - "Boris", - "Preston", - "Charles", - "Clyde", - "Vincent", - "Dalton", - "Kirk", - "Shawn", - "Fabian", - "Fernando", - "Joseph", - "Marcos", - "Arturo", - "Jerry", - "Lonnie", - "Tony", - ], - [TrainerType.NURSERY_AIDE]: [ - "Autumn", - "Briana", - "Leah", - "Miho", - "Ethel", - "Hollie", - "Ilse", - "June", - "Kimya", - "Rosalyn", - ], - [TrainerType.OFFICER]: [ - "Dirk", - "Keith", - "Alex", - "Bobby", - "Caleb", - "Danny", - "Dylan", - "Thomas", - "Daniel", - "Jeff", - "Braven", - "Dell", - "Neagle", - "Haruki", - "Mitchell", - "Raymond", - ], - [TrainerType.PARASOL_LADY]: [ - "Angelica", - "Clarissa", - "Madeline", - "Akari", - "Annabell", - "Kayley", - "Rachel", - "Alexa", - "Sabrina", - "April", - "Gwyneth", - "Laura", - "Lumi", - "Mariah", - "Melita", - "Nicole", - "Tihana", - "Ingrid", - "Tyra", - ], - [TrainerType.PILOT]: ["Chase", "Leonard", "Ted", "Elron", "Ewing", "Flynn", "Winslow"], - [TrainerType.POKEFAN]: [ - [ - "Alex", - "Allan", - "Brandon", - "Carter", - "Colin", - "Derek", - "Jeremy", - "Joshua", - "Rex", - "Robert", - "Trevor", - "William", - "Colton", - "Miguel", - "Francisco", - "Kaleb", - "Leonard", - "Boone", - "Elliot", - "Jude", - "Norbert", - "Corey", - "Gabe", - "Baxter", - ], - [ - "Beverly", - "Georgia", - "Jaime", - "Ruth", - "Isabel", - "Marissa", - "Vanessa", - "Annika", - "Bethany", - "Kimberly", - "Meredith", - "Rebekah", - "Eleanor", - "Darcy", - "Lydia", - "Sachiko", - "Abigail", - "Agnes", - "Lydie", - "Roisin", - "Tara", - "Carmen", - "Janet", - ], - ], - [TrainerType.PRESCHOOLER]: [ - [ - "Billy", - "Doyle", - "Evan", - "Homer", - "Tully", - "Albert", - "Buster", - "Greg", - "Ike", - "Jojo", - "Tyrone", - "Adrian", - "Oliver", - "Hayden", - "Hunter", - "Kaleb", - "Liam", - "Dylan", - ], - [ - "Juliet", - "Mia", - "Sarah", - "Wendy", - "Winter", - "Chrissy", - "Eva", - "Lin", - "Samantha", - "Ella", - "Lily", - "Natalie", - "Ailey", - "Hannah", - "Malia", - "Kindra", - "Nancy", - ], - ], - [TrainerType.PSYCHIC]: [ - [ - "Fidel", - "Franklin", - "Gilbert", - "Greg", - "Herman", - "Jared", - "Mark", - "Nathan", - "Norman", - "Phil", - "Richard", - "Rodney", - "Cameron", - "Edward", - "Fritz", - "Joshua", - "Preston", - "Virgil", - "William", - "Alvaro", - "Blake", - "Cedric", - "Keenan", - "Nicholas", - "Dario", - "Johan", - "Lorenzo", - "Tyron", - "Bryce", - "Corbin", - "Deandre", - "Elijah", - "Kody", - "Landon", - "Maxwell", - "Mitchell", - "Sterling", - "Eli", - "Nelson", - "Vernon", - "Gaven", - "Gerard", - "Low", - "Micki", - "Perry", - "Rudolf", - "Tommy", - "Al", - "Nandor", - "Tully", - "Arthur", - "Emanuel", - "Franz", - "Harry", - "Paschal", - "Robert", - "Sayid", - "Angelo", - "Anton", - "Arin", - "Avery", - "Danny", - "Frasier", - "Harrison", - "Jaime", - "Ross", - "Rui", - "Vlad", - "Mason", - ], - [ - "Alexis", - "Hannah", - "Jacki", - "Jaclyn", - "Kayla", - "Maura", - "Samantha", - "Alix", - "Brandi", - "Edie", - "Macey", - "Mariella", - "Marlene", - "Laura", - "Rodette", - "Abigail", - "Brittney", - "Chelsey", - "Daisy", - "Desiree", - "Kendra", - "Lindsey", - "Rachael", - "Valencia", - "Belle", - "Cybil", - "Doreen", - "Dua", - "Future", - "Lin", - "Madhu", - "Alia", - "Ena", - "Joyce", - "Lynette", - "Olesia", - "Sarah", - ], - ], - [TrainerType.RANGER]: [ - [ - "Carlos", - "Jackson", - "Sebastian", - "Gav", - "Lorenzo", - "Logan", - "Nicolas", - "Trenton", - "Deshawn", - "Dwayne", - "Jeffery", - "Kyler", - "Taylor", - "Alain", - "Claude", - "Crofton", - "Forrest", - "Harry", - "Jaden", - "Keith", - "Lewis", - "Miguel", - "Pedro", - "Ralph", - "Richard", - "Bret", - "Daryl", - "Eddie", - "Johan", - "Leaf", - "Louis", - "Maxwell", - "Parker", - "Rick", - "Steve", - "Bjorn", - "Chaise", - "Dean", - "Lee", - "Maurice", - "Nash", - "Ralf", - "Reed", - "Shinobu", - "Silas", - ], - [ - "Catherine", - "Jenna", - "Sophia", - "Merdith", - "Nora", - "Beth", - "Chelsea", - "Katelyn", - "Madeline", - "Allison", - "Ashlee", - "Felicia", - "Krista", - "Annie", - "Audra", - "Brenda", - "Chloris", - "Eliza", - "Heidi", - "Irene", - "Mary", - "Mylene", - "Shanti", - "Shelly", - "Thalia", - "Anja", - "Briana", - "Dianna", - "Elaine", - "Elle", - "Hillary", - "Katie", - "Lena", - "Lois", - "Malory", - "Melita", - "Mikiko", - "Naoko", - "Serenity", - "Ambre", - "Brooke", - "Clementine", - "Melina", - "Petra", - "Twiggy", - ], - ], - [TrainerType.RICH]: [ - [ - "Alfred", - "Edward", - "Gregory", - "Preston", - "Thomas", - "Tucker", - "Walter", - "Clifford", - "Everett", - "Micah", - "Nate", - "Pierre", - "Terrance", - "Arthur", - "Brooks", - "Emanuel", - "Lamar", - "Jeremy", - "Leonardo", - "Milton", - "Frederic", - "Renaud", - "Robert", - "Yan", - "Daniel", - "Sheldon", - "Stonewall", - "Gerald", - "Ronald", - "Smith", - "Stanley", - "Reginald", - "Orson", - "Wilco", - "Caden", - "Glenn", - ], - [ - "Rebecca", - "Reina", - "Cassandra", - "Emilia", - "Grace", - "Marian", - "Elizabeth", - "Kathleen", - "Sayuri", - "Caroline", - "Judy", - ], - ], - [TrainerType.RICH_KID]: [ - [ - "Garret", - "Winston", - "Dawson", - "Enrique", - "Jason", - "Roman", - "Trey", - "Liam", - "Anthony", - "Brad", - "Cody", - "Manuel", - "Martin", - "Pierce", - "Rolan", - "Keenan", - "Filbert", - "Antoin", - "Cyus", - "Diek", - "Dugo", - "Flitz", - "Jurek", - "Lond", - "Perd", - "Quint", - "Basto", - "Benit", - "Brot", - "Denc", - "Guyit", - "Marcon", - "Perc", - "Puros", - "Roex", - "Sainz", - "Symin", - "Tark", - "Venak", - ], - [ - "Anette", - "Brianna", - "Cindy", - "Colleen", - "Daphne", - "Elizabeth", - "Naomi", - "Sarah", - "Charlotte", - "Gillian", - "Jacki", - "Lady", - "Melissa", - "Celeste", - "Colette", - "Elizandra", - "Isabel", - "Lynette", - "Magnolia", - "Sophie", - "Lina", - "Dulcie", - "Auro", - "Brin", - "Caril", - "Eloos", - "Gwin", - "Illa", - "Kowly", - "Rima", - "Ristin", - "Vesey", - "Brena", - "Deasy", - "Denslon", - "Kylet", - "Nemi", - "Rene", - "Sanol", - "Stouner", - "Sturk", - "Talmen", - "Zoila", - ], - ], - [TrainerType.ROUGHNECK]: [ - "Camron", - "Corey", - "Gabriel", - "Isaiah", - "Jamal", - "Koji", - "Luke", - "Paxton", - "Raul", - "Zeek", - "Kirby", - "Chance", - "Dave", - "Fletcher", - "Johnny", - "Reese", - "Joey", - "Ricky", - "Silvester", - "Martin", - ], - [TrainerType.SAILOR]: [ - "Alberto", - "Bost", - "Brennan", - "Brenden", - "Claude", - "Cory", - "Damian", - "Dirk", - "Duncan", - "Dwayne", - "Dylan", - "Eddie", - "Edmond", - "Elijah", - "Ernest", - "Eugene", - "Garrett", - "Golos", - "Gratin", - "Grestly", - "Harry", - "Hols", - "Hudson", - "Huey", - "Jebol", - "Jeff", - "Leonald", - "Luther", - "Kelvin", - "Kenneth", - "Kent", - "Knook", - "Marc", - "Mifis", - "Monar", - "Morkor", - "Ordes", - "Oxlin", - "Parker", - "Paul", - "Philip", - "Roberto", - "Samson", - "Skyler", - "Stanly", - "Tebu", - "Terrell", - "Trevor", - "Yasu", - "Zachariah", - ], - [TrainerType.SCIENTIST]: [ - [ - "Jed", - "Marc", - "Mitch", - "Rich", - "Ross", - "Beau", - "Braydon", - "Connor", - "Ed", - "Ivan", - "Jerry", - "Jose", - "Joshua", - "Parker", - "Rodney", - "Taylor", - "Ted", - "Travis", - "Zackery", - "Darrius", - "Emilio", - "Fredrick", - "Shaun", - "Stefano", - "Travon", - "Daniel", - "Garett", - "Gregg", - "Linden", - "Lowell", - "Trenton", - "Dudley", - "Luke", - "Markus", - "Nathan", - "Orville", - "Randall", - "Ron", - "Ronald", - "Simon", - "Steve", - "William", - "Franklin", - "Clarke", - "Jacques", - "Terrance", - "Ernst", - "Justus", - "Ikaika", - "Jayson", - "Kyle", - "Reid", - "Tyrone", - "Adam", - "Albert", - "Alphonse", - "Cory", - "Donnie", - "Elton", - "Francis", - "Gordon", - "Herbert", - "Humphrey", - "Jordan", - "Julian", - "Keaton", - "Levi", - "Melvin", - "Murray", - "West", - "Craig", - "Coren", - "Dubik", - "Kotan", - "Lethco", - "Mante", - "Mort", - "Myron", - "Odlow", - "Ribek", - "Roeck", - "Vogi", - "Vonder", - "Zogo", - "Doimo", - "Doton", - "Durel", - "Hildon", - "Kukla", - "Messa", - "Nanot", - "Platen", - "Raburn", - "Reman", - "Acrod", - "Coffy", - "Elrok", - "Foss", - "Hardig", - "Hombol", - "Hospel", - "Kaller", - "Klots", - "Krilok", - "Limar", - "Loket", - "Mesak", - "Morbit", - "Newin", - "Orill", - "Tabor", - "Tekot", - ], - [ - "Blythe", - "Chan", - "Kathrine", - "Marie", - "Maria", - "Naoko", - "Samantha", - "Satomi", - "Shannon", - "Athena", - "Caroline", - "Lumi", - "Lumina", - "Marissa", - "Sonia", - ], - ], - [TrainerType.SMASHER]: ["Aspen", "Elena", "Mari", "Amy", "Lizzy"], - [TrainerType.SNOW_WORKER]: [ - [ - "Braden", - "Brendon", - "Colin", - "Conrad", - "Dillan", - "Gary", - "Gerardo", - "Holden", - "Jackson", - "Mason", - "Quentin", - "Willy", - "Noel", - "Arnold", - "Brady", - "Brand", - "Cairn", - "Cliff", - "Don", - "Eddie", - "Felix", - "Filipe", - "Glenn", - "Gus", - "Heath", - "Matthew", - "Patton", - "Rich", - "Rob", - "Ryan", - "Scott", - "Shelby", - "Sterling", - "Tyler", - "Victor", - "Zack", - "Friedrich", - "Herman", - "Isaac", - "Leo", - "Maynard", - "Mitchell", - "Morgann", - "Nathan", - "Niel", - "Pasqual", - "Paul", - "Tavarius", - "Tibor", - "Dimitri", - "Narek", - "Yusif", - "Frank", - "Jeff", - "Vaclav", - "Ovid", - "Francis", - "Keith", - "Russel", - "Sangon", - "Toway", - "Bomber", - "Chean", - "Demit", - "Hubor", - "Kebile", - "Laber", - "Ordo", - "Retay", - "Ronix", - "Wagel", - "Dobit", - "Kaster", - "Lobel", - "Releo", - "Saken", - "Rustix", - ], - ["Georgia", "Sandra", "Yvonne"], - ], - [TrainerType.STRIKER]: ["Marco", "Roberto", "Tony"], - [TrainerType.SCHOOL_KID]: [ - [ - "Alan", - "Billy", - "Chad", - "Danny", - "Dudley", - "Jack", - "Joe", - "Johnny", - "Kipp", - "Nate", - "Ricky", - "Tommy", - "Jerry", - "Paul", - "Ted", - "Chance", - "Esteban", - "Forrest", - "Harrison", - "Connor", - "Sherman", - "Torin", - "Travis", - "Al", - "Carter", - "Edgar", - "Jem", - "Sammy", - "Shane", - "Shayne", - "Alvin", - "Keston", - "Neil", - "Seymour", - "William", - "Carson", - "Clark", - "Nolan", - ], - [ - "Georgia", - "Karen", - "Meiko", - "Christine", - "Mackenzie", - "Tiera", - "Ann", - "Gina", - "Lydia", - "Marsha", - "Millie", - "Sally", - "Serena", - "Silvia", - "Alberta", - "Cassie", - "Mara", - "Rita", - "Georgie", - "Meena", - "Nitzel", - ], - ], - [TrainerType.SWIMMER]: [ - [ - "Berke", - "Cameron", - "Charlie", - "George", - "Harold", - "Jerome", - "Kirk", - "Mathew", - "Parker", - "Randall", - "Seth", - "Simon", - "Tucker", - "Austin", - "Barry", - "Chad", - "Cody", - "Darrin", - "David", - "Dean", - "Douglas", - "Franklin", - "Gilbert", - "Herman", - "Jack", - "Luis", - "Matthew", - "Reed", - "Richard", - "Rodney", - "Roland", - "Spencer", - "Stan", - "Tony", - "Clarence", - "Declan", - "Dominik", - "Harrison", - "Kevin", - "Leonardo", - "Nolen", - "Pete", - "Santiago", - "Axle", - "Braden", - "Finn", - "Garrett", - "Mymo", - "Reece", - "Samir", - "Toby", - "Adrian", - "Colton", - "Dillon", - "Erik", - "Evan", - "Francisco", - "Glenn", - "Kurt", - "Oscar", - "Ricardo", - "Sam", - "Sheltin", - "Troy", - "Vincent", - "Wade", - "Wesley", - "Duane", - "Elmo", - "Esteban", - "Frankie", - "Ronald", - "Tyson", - "Bart", - "Matt", - "Tim", - "Wright", - "Jeffery", - "Kyle", - "Alessandro", - "Estaban", - "Kieran", - "Ramses", - "Casey", - "Dakota", - "Jared", - "Kalani", - "Keoni", - "Lawrence", - "Logan", - "Robert", - "Roddy", - "Yasu", - "Derek", - "Jacob", - "Bruce", - "Clayton", - ], - [ - "Briana", - "Dawn", - "Denise", - "Diana", - "Elaine", - "Kara", - "Kaylee", - "Lori", - "Nicole", - "Nikki", - "Paula", - "Susie", - "Wendy", - "Alice", - "Beth", - "Beverly", - "Brenda", - "Dana", - "Debra", - "Grace", - "Jenny", - "Katie", - "Laurel", - "Linda", - "Missy", - "Sharon", - "Tanya", - "Tara", - "Tisha", - "Carlee", - "Imani", - "Isabelle", - "Kyla", - "Sienna", - "Abigail", - "Amara", - "Anya", - "Connie", - "Maria", - "Melissa", - "Nora", - "Shirley", - "Shania", - "Tiffany", - "Aubree", - "Cassandra", - "Claire", - "Crystal", - "Erica", - "Gabrielle", - "Haley", - "Jessica", - "Joanna", - "Lydia", - "Mallory", - "Mary", - "Miranda", - "Paige", - "Sophia", - "Vanessa", - "Chelan", - "Debbie", - "Joy", - "Kendra", - "Leona", - "Mina", - "Caroline", - "Joyce", - "Larissa", - "Rebecca", - "Tyra", - "Dara", - "Desiree", - "Kaoru", - "Ruth", - "Coral", - "Genevieve", - "Isla", - "Marissa", - "Romy", - "Sheryl", - "Alexandria", - "Alicia", - "Chelsea", - "Jade", - "Kelsie", - "Laura", - "Portia", - "Shelby", - "Sara", - "Tiare", - "Kyra", - "Natasha", - "Layla", - "Scarlett", - "Cora", - ], - ], - [TrainerType.TWINS]: [ - "Amy & May", - "Jo & Zoe", - "Meg & Peg", - "Ann & Anne", - "Lea & Pia", - "Amy & Liv", - "Gina & Mia", - "Miu & Yuki", - "Tori & Tia", - "Eli & Anne", - "Jen & Kira", - "Joy & Meg", - "Kiri & Jan", - "Miu & Mia", - "Emma & Lil", - "Liv & Liz", - "Teri & Tia", - "Amy & Mimi", - "Clea & Gil", - "Day & Dani", - "Kay & Tia", - "Tori & Til", - "Saya & Aya", - "Emy & Lin", - "Kumi & Amy", - "Mayo & May", - "Ally & Amy", - "Lia & Lily", - "Rae & Ula", - "Sola & Ana", - "Tara & Val", - "Faith & Joy", - "Nana & Nina", - ], - [TrainerType.VETERAN]: [ - [ - "Armando", - "Brenden", - "Brian", - "Clayton", - "Edgar", - "Emanuel", - "Grant", - "Harlan", - "Terrell", - "Arlen", - "Chester", - "Hugo", - "Martell", - "Ray", - "Shaun", - "Abraham", - "Carter", - "Claude", - "Jerry", - "Lucius", - "Murphy", - "Rayne", - "Ron", - "Sinan", - "Sterling", - "Vincent", - "Zach", - "Gerard", - "Gilles", - "Louis", - "Timeo", - "Akira", - "Don", - "Eric", - "Harry", - "Leon", - "Roger", - "Angus", - "Aristo", - "Brone", - "Johnny", - ], - [ - "Julia", - "Karla", - "Kim", - "Sayuri", - "Tiffany", - "Cathy", - "Cecile", - "Chloris", - "Denae", - "Gina", - "Maya", - "Oriana", - "Portia", - "Rhona", - "Rosaline", - "Catrina", - "Inga", - "Trisha", - "Heather", - "Lynn", - "Sheri", - "Alonsa", - "Ella", - "Leticia", - "Kiara", - ], - ], - [TrainerType.WAITER]: [ - ["Bert", "Clint", "Maxwell", "Lou"], - ["Kati", "Aurora", "Bonita", "Flo", "Tia", "Jan", "Olwen", "Paget", "Paula", "Talia"], - ], - [TrainerType.WORKER]: [ - [ - "Braden", - "Brendon", - "Colin", - "Conrad", - "Dillan", - "Gary", - "Gerardo", - "Holden", - "Jackson", - "Mason", - "Quentin", - "Willy", - "Noel", - "Arnold", - "Brady", - "Brand", - "Cairn", - "Cliff", - "Don", - "Eddie", - "Felix", - "Filipe", - "Glenn", - "Gus", - "Heath", - "Matthew", - "Patton", - "Rich", - "Rob", - "Ryan", - "Scott", - "Shelby", - "Sterling", - "Tyler", - "Victor", - "Zack", - "Friedrich", - "Herman", - "Isaac", - "Leo", - "Maynard", - "Mitchell", - "Morgann", - "Nathan", - "Niel", - "Pasqual", - "Paul", - "Tavarius", - "Tibor", - "Dimitri", - "Narek", - "Yusif", - "Frank", - "Jeff", - "Vaclav", - "Ovid", - "Francis", - "Keith", - "Russel", - "Sangon", - "Toway", - "Bomber", - "Chean", - "Demit", - "Hubor", - "Kebile", - "Laber", - "Ordo", - "Retay", - "Ronix", - "Wagel", - "Dobit", - "Kaster", - "Lobel", - "Releo", - "Saken", - "Rustix", - ], - ["Georgia", "Sandra", "Yvonne"], - ], - [TrainerType.YOUNGSTER]: [ - [ - "Albert", - "Gordon", - "Ian", - "Jason", - "Jimmy", - "Mikey", - "Owen", - "Samuel", - "Warren", - "Allen", - "Ben", - "Billy", - "Calvin", - "Dillion", - "Eddie", - "Joey", - "Josh", - "Neal", - "Timmy", - "Tommy", - "Breyden", - "Deandre", - "Demetrius", - "Dillon", - "Jaylen", - "Johnson", - "Shigenobu", - "Chad", - "Cole", - "Cordell", - "Dan", - "Dave", - "Destin", - "Nash", - "Tyler", - "Yasu", - "Austin", - "Dallas", - "Darius", - "Donny", - "Jonathon", - "Logan", - "Michael", - "Oliver", - "Sebastian", - "Tristan", - "Wayne", - "Norman", - "Roland", - "Regis", - "Abe", - "Astor", - "Keita", - "Kenneth", - "Kevin", - "Kyle", - "Lester", - "Masao", - "Nicholas", - "Parker", - "Wes", - "Zachary", - "Cody", - "Henley", - "Jaye", - "Karl", - "Kenny", - "Masahiro", - "Pedro", - "Petey", - "Sinclair", - "Terrell", - "Waylon", - "Aidan", - "Anthony", - "David", - "Jacob", - "Jayden", - "Cutler", - "Ham", - "Caleb", - "Kai", - "Honus", - "Kenway", - "Bret", - "Chris", - "Cid", - "Dennis", - "Easton", - "Ken", - "Robby", - "Ronny", - "Shawn", - "Benjamin", - "Jake", - "Travis", - "Adan", - "Aday", - "Beltran", - "Elian", - "Hernan", - "Julen", - "Luka", - "Roi", - "Bernie", - "Dustin", - "Jonathan", - "Wyatt", - ], - [ - "Alice", - "Bridget", - "Carrie", - "Connie", - "Dana", - "Ellen", - "Krise", - "Laura", - "Linda", - "Michelle", - "Shannon", - "Andrea", - "Crissy", - "Janice", - "Robin", - "Sally", - "Tiana", - "Haley", - "Ali", - "Ann", - "Dalia", - "Dawn", - "Iris", - "Joana", - "Julia", - "Kay", - "Lisa", - "Megan", - "Mikaela", - "Miriam", - "Paige", - "Reli", - "Blythe", - "Briana", - "Caroline", - "Cassidy", - "Kaitlin", - "Madeline", - "Molly", - "Natalie", - "Samantha", - "Sarah", - "Cathy", - "Dye", - "Eri", - "Eva", - "Fey", - "Kara", - "Lurleen", - "Maki", - "Mali", - "Maya", - "Miki", - "Sibyl", - "Daya", - "Diana", - "Flo", - "Helia", - "Henrietta", - "Isabel", - "Mai", - "Persephone", - "Serena", - "Anna", - "Charlotte", - "Elin", - "Elsa", - "Lise", - "Sara", - "Suzette", - "Audrey", - "Emmy", - "Isabella", - "Madison", - "Rika", - "Rylee", - "Salla", - "Ellie", - "Alexandra", - "Amy", - "Lass", - "Brittany", - "Chel", - "Cindy", - "Dianne", - "Emily", - "Emma", - "Evelyn", - "Hana", - "Harleen", - "Hazel", - "Jocelyn", - "Katrina", - "Kimberly", - "Lina", - "Marge", - "Mila", - "Mizuki", - "Rena", - "Sal", - "Satoko", - "Summer", - "Tomoe", - "Vicky", - "Yue", - "Yumi", - "Lauren", - "Rei", - "Riley", - "Lois", - "Nancy", - "Tammy", - "Terry", - ], - ], - [TrainerType.HEX_MANIAC]: [ - "Kindra", - "Patricia", - "Tammy", - "Tasha", - "Valerie", - "Alaina", - "Kathleen", - "Leah", - "Makie", - "Sylvia", - "Anina", - "Arachna", - "Carrie", - "Desdemona", - "Josette", - "Luna", - "Melanie", - "Osanna", - "Raziah", - ], -}; - // function used in a commented code // biome-ignore lint/correctness/noUnusedVariables: TODO make this into a script instead of having it be in src/data... function fetchAndPopulateTrainerNames( diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 98919ebfa93..2af3e25050f 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -14,7 +14,6 @@ import { import type { EnemyPokemon } from "#app/field/pokemon"; import * as Utils from "#app/utils"; import type { PersistentModifier } from "#app/modifier/modifier"; -import { trainerNamePools } from "#app/data/trainer-names"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { getIsInitialized, initI18n } from "#app/plugins/i18n"; import i18next from "i18next"; @@ -61,11 +60,17 @@ export default class Trainer extends Phaser.GameObjects.Container { : Utils.randSeedWeightedItem(this.config.partyTemplates.map((_, i) => i)), this.config.partyTemplates.length - 1, ); - if (trainerNamePools.hasOwnProperty(trainerType)) { - const namePool = trainerNamePools[trainerType]; + if (i18next.exists("trainersCommon:" + TrainerType[trainerType], { returnObjects: true })) { + const namePool = i18next.t("trainersCommon:" + TrainerType[trainerType], { returnObjects: true }); this.name = name || - Utils.randSeedItem(Array.isArray(namePool[0]) ? namePool[variant === TrainerVariant.FEMALE ? 1 : 0] : namePool); + Utils.randSeedItem( + Object.values( + namePool.hasOwnProperty("MALE") + ? namePool[variant === TrainerVariant.FEMALE ? "FEMALE" : "MALE"] + : namePool, + ), + ); if (variant === TrainerVariant.DOUBLE) { if (this.config.doubleOnly) { if (partnerName) { @@ -74,7 +79,9 @@ export default class Trainer extends Phaser.GameObjects.Container { [this.name, this.partnerName] = this.name.split(" & "); } } else { - this.partnerName = partnerName || Utils.randSeedItem(Array.isArray(namePool[0]) ? namePool[1] : namePool); + this.partnerName = + partnerName || + Utils.randSeedItem(Object.values(namePool.hasOwnProperty("FEMALE") ? namePool["FEMALE"] : namePool)); } } } diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 92b0e15dbb9..008bd03dc9e 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -237,6 +237,7 @@ export async function initI18n(): Promise { "terrain", "titles", "trainerClasses", + "trainersCommon", "trainerNames", "tutorial", "voucher", From 35e733e87a9ab3ac09b58c6bc41d3811774ea6d8 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:30:38 -0500 Subject: [PATCH 2/4] [Test] [Refactor] [GitHub] Enable no isolate for vitest (#5566) * Reuse global scene between tests Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> * Add missing each method to mockContainer * Fix select-modifier-phase test * Sanitize overrides before tests Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> * Sanitize overrides before tests Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> * [WIP] fix things * Fix tests not working with --no-isolate * Update npm tests to use no isolate * Update test-shard-template * Update package.json Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- .github/workflows/test-shard-template.yml | 2 +- .github/workflows/tests.yml | 21 --- lefthook.yml | 2 +- package-lock.json | 174 +++++++++--------- package.json | 12 +- src/@types/DexData.ts | 16 ++ src/battle-scene.ts | 17 +- src/overrides.ts | 5 + src/system/game-data.ts | 78 ++++---- src/ui/starter-select-ui-handler.ts | 9 + test/abilities/steely_spirit.test.ts | 4 +- test/abilities/supreme_overlord.test.ts | 7 +- test/abilities/unseen_fist.test.ts | 16 +- test/abilities/wonder_skin.test.ts | 13 +- test/achievements/achievement.test.ts | 22 ++- test/battlerTags/substitute.test.ts | 28 ++- test/data/status_effect.test.ts | 6 - test/moves/copycat.test.ts | 3 +- test/moves/dynamax_cannon.test.ts | 4 +- test/moves/fusion_flare_bolt.test.ts | 19 +- test/moves/hard_press.test.ts | 4 +- test/moves/last_respects.test.ts | 7 +- test/moves/metronome.test.ts | 3 +- test/moves/rage_fist.test.ts | 4 +- test/moves/retaliate.test.ts | 4 +- test/moves/shell_side_arm.test.ts | 7 +- test/moves/spit_up.test.ts | 4 +- test/moves/tera_blast.test.ts | 8 +- test/moves/triple_arrows.test.ts | 10 +- .../mystery-encounter/encounter-test-utils.ts | 10 - test/phases/phases.test.ts | 6 +- test/phases/select-modifier-phase.test.ts | 4 +- .../plugins/api/pokerogue-account-api.test.ts | 10 +- test/plugins/api/pokerogue-admin-api.test.ts | 10 +- test/plugins/api/pokerogue-api.test.ts | 10 +- test/plugins/api/pokerogue-daily-api.test.ts | 10 +- .../api/pokerogue-savedata-api.test.ts | 10 +- .../pokerogue-session-savedata-api.test.ts | 10 +- .../api/pokerogue-system-savedata-api.test.ts | 11 +- test/pre.test.ts | 6 - test/testUtils/gameManager.ts | 34 +++- test/testUtils/gameWrapper.ts | 37 +--- test/testUtils/helpers/overridesHelper.ts | 29 +-- test/testUtils/listenersManager.ts | 41 +++++ test/testUtils/mocks/mockConsoleLog.ts | 156 ++++++++-------- test/testUtils/mocks/mockContextCanvas.ts | 26 +++ test/testUtils/mocks/mockLocalStorage.ts | 4 +- test/testUtils/mocks/mockTextureManager.ts | 2 +- .../mocks/mocksContainer/mockContainer.ts | 6 + .../mocks/mocksContainer/mockImage.ts | 2 +- .../mocks/mocksContainer/mockRectangle.ts | 3 + test/testUtils/testFileInitialization.ts | 117 ++++++++++++ test/vitest.setup.ts | 23 +-- vitest.config.ts | 30 ++- 54 files changed, 714 insertions(+), 402 deletions(-) create mode 100644 src/@types/DexData.ts delete mode 100644 test/pre.test.ts create mode 100644 test/testUtils/listenersManager.ts create mode 100644 test/testUtils/mocks/mockContextCanvas.ts create mode 100644 test/testUtils/testFileInitialization.ts diff --git a/.github/workflows/test-shard-template.yml b/.github/workflows/test-shard-template.yml index 185764c86a8..9fc41d1b965 100644 --- a/.github/workflows/test-shard-template.yml +++ b/.github/workflows/test-shard-template.yml @@ -29,4 +29,4 @@ jobs: - name: Install Node.js dependencies run: npm ci - name: Run tests - run: npx vitest --project ${{ inputs.project }} --shard=${{ inputs.shard }}/${{ inputs.totalShards }} ${{ !runner.debug && '--silent' || '' }} + run: npx vitest --project ${{ inputs.project }} --no-isolate --shard=${{ inputs.shard }}/${{ inputs.totalShards }} ${{ !runner.debug && '--silent' || '' }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d30d8adba38..167a108e58c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,29 +15,8 @@ on: types: [checks_requested] jobs: - pre-test: - name: Run Pre-test - runs-on: ubuntu-latest - steps: - - name: Check out Git repository - uses: actions/checkout@v4 - with: - submodules: 'recursive' - path: tests-action - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Install Node.js dependencies - working-directory: tests-action - run: npm ci - - name: Run Pre-test - working-directory: tests-action - run: npx vitest run --project pre ${{ !runner.debug && '--silent' || '' }} - run-tests: name: Run Tests - needs: [pre-test] strategy: matrix: shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] diff --git a/lefthook.yml b/lefthook.yml index 4eff2ad1f8e..aa64a176191 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -13,7 +13,7 @@ pre-push: commands: biome-lint: glob: "*.{js,ts,jsx,tsx}" - run: npx @biomejs/biome check --write --reporter=summary {push_files} --no-errors-on-unmatched + run: npx @biomejs/biome check --reporter=summary {push_files} --no-errors-on-unmatched post-merge: commands: diff --git a/package-lock.json b/package-lock.json index 87e2e150c65..40ef47965ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "@types/node": "^20.12.13", "@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54", "@typescript-eslint/parser": "^8.0.0-alpha.54", - "@vitest/coverage-istanbul": "^2.1.9", + "@vitest/coverage-istanbul": "^3.0.9", "dependency-cruiser": "^16.3.10", "eslint": "^9.7.0", "eslint-plugin-import-x": "^4.2.1", @@ -43,7 +43,7 @@ "typescript-eslint": "^8.0.0-alpha.54", "vite": "^5.4.14", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^2.1.9", + "vitest": "^3.0.9", "vitest-canvas-mock": "^0.3.3" }, "engines": { @@ -2312,14 +2312,14 @@ } }, "node_modules/@vitest/coverage-istanbul": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-2.1.9.tgz", - "integrity": "sha512-vdYE4FkC/y2lxcN3Dcj54Bw+ericmDwiex0B8LV5F/YNYEYP1mgVwhPnHwWGAXu38qizkjOuyczKbFTALfzFKw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-3.0.9.tgz", + "integrity": "sha512-/TXh2qmOhclmVPjOnPTpIO4Xr6l2P5EwyXQygenwq4/ZQ/vPsrz+GCRZF9kBeQi6xrGcHv368Si9PGImWQawVg==", "dev": true, "license": "MIT", "dependencies": { "@istanbuljs/schema": "^0.1.3", - "debug": "^4.3.7", + "debug": "^4.4.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-instrument": "^6.0.3", "istanbul-lib-report": "^3.0.1", @@ -2327,48 +2327,48 @@ "istanbul-reports": "^3.1.7", "magicast": "^0.3.5", "test-exclude": "^7.0.1", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "2.1.9" + "vitest": "3.0.9" } }, "node_modules/@vitest/expect": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", - "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", + "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/spy": "3.0.9", + "@vitest/utils": "3.0.9", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", - "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", + "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.9", + "@vitest/spy": "3.0.9", "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0" + "vite": "^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { "msw": { @@ -2380,51 +2380,51 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", - "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", + "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.9", - "pathe": "^1.1.2" + "@vitest/utils": "3.0.9", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", - "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", + "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "magic-string": "^0.30.12", - "pathe": "^1.1.2" + "@vitest/pretty-format": "3.0.9", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", - "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", + "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2435,15 +2435,15 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", + "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/pretty-format": "3.0.9", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2738,9 +2738,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -5450,9 +5450,9 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, @@ -6308,9 +6308,9 @@ } }, "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, "license": "MIT", "engines": { @@ -6677,23 +6677,23 @@ } }, "node_modules/vite-node": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", - "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz", + "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -6720,47 +6720,48 @@ } }, "node_modules/vitest": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", - "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz", + "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "2.1.9", - "@vitest/mocker": "2.1.9", - "@vitest/pretty-format": "^2.1.9", - "@vitest/runner": "2.1.9", - "@vitest/snapshot": "2.1.9", - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "debug": "^4.3.7", + "@vitest/expect": "3.0.9", + "@vitest/mocker": "3.0.9", + "@vitest/pretty-format": "^3.0.9", + "@vitest/runner": "3.0.9", + "@vitest/snapshot": "3.0.9", + "@vitest/spy": "3.0.9", + "@vitest/utils": "3.0.9", + "chai": "^5.2.0", + "debug": "^4.4.0", "expect-type": "^1.1.0", - "magic-string": "^0.30.12", - "pathe": "^1.1.2", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", "std-env": "^3.8.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.1", - "tinypool": "^1.0.1", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.1.9", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.0.9", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.9", - "@vitest/ui": "2.1.9", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.0.9", + "@vitest/ui": "3.0.9", "happy-dom": "*", "jsdom": "*" }, @@ -6768,6 +6769,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, diff --git a/package.json b/package.json index ce9e8b4a07b..6048b0bae36 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ "build": "vite build", "build:beta": "vite build --mode beta", "preview": "vite preview", - "test": "vitest run --project pre && vitest run --project main", - "test:cov": "vitest run --project pre && vitest run --project main --coverage", - "test:watch": "vitest run --project pre && vitest watch --project main --coverage", - "test:silent": "vitest run --project pre && vitest run --project main --silent", + "test": "vitest run", + "test:cov": "vitest run --coverage --no-isolate", + "test:watch": "vitest watch --coverage --no-isolate", + "test:silent": "vitest run --silent --no-isolate", "typecheck": "tsc --noEmit", "eslint": "eslint --fix .", "eslint-ci": "eslint .", @@ -36,7 +36,7 @@ "@types/node": "^20.12.13", "@typescript-eslint/eslint-plugin": "^8.0.0-alpha.54", "@typescript-eslint/parser": "^8.0.0-alpha.54", - "@vitest/coverage-istanbul": "^2.1.9", + "@vitest/coverage-istanbul": "^3.0.9", "dependency-cruiser": "^16.3.10", "eslint": "^9.7.0", "eslint-plugin-import-x": "^4.2.1", @@ -50,7 +50,7 @@ "typescript-eslint": "^8.0.0-alpha.54", "vite": "^5.4.14", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^2.1.9", + "vitest": "^3.0.9", "vitest-canvas-mock": "^0.3.3" }, "dependencies": { diff --git a/src/@types/DexData.ts b/src/@types/DexData.ts new file mode 100644 index 00000000000..19bb0357471 --- /dev/null +++ b/src/@types/DexData.ts @@ -0,0 +1,16 @@ +/** + * Dex entry for a single Pokemon Species + */ +export interface DexEntry { + seenAttr: bigint; + caughtAttr: bigint; + natureAttr: number; + seenCount: number; + caughtCount: number; + hatchedCount: number; + ivs: number[]; +} + +export interface DexData { + [key: number]: DexEntry; +} diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 544dbc40350..443113daef6 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1403,7 +1403,10 @@ export default class BattleScene extends SceneBase { this.field.add(newTrainer); } } else { - if (!this.gameMode.hasTrainers) { + if ( + !this.gameMode.hasTrainers || + (Overrides.DISABLE_STANDARD_TRAINERS_OVERRIDE && isNullOrUndefined(trainerData)) + ) { newBattleType = BattleType.WILD; } else if (battleType === undefined) { newBattleType = this.gameMode.isWaveTrainer(newWaveIndex, this.arena) ? BattleType.TRAINER : BattleType.WILD; @@ -2721,6 +2724,18 @@ export default class BattleScene extends SceneBase { this.phaseQueue.splice(0, this.phaseQueue.length); } + /** + * Clears all phase-related stuff, including all phase queues, the current and standby phases, and a splice index + */ + clearAllPhases(): void { + for (const queue of [this.phaseQueue, this.phaseQueuePrepend, this.conditionalQueue, this.nextCommandPhaseQueue]) { + queue.splice(0, queue.length); + } + this.currentPhase = null; + this.standbyPhase = null; + this.clearPhaseQueueSplice(); + } + /** * Used by function unshiftPhase(), sets index to start inserting at current length instead of the end of the array, useful if phaseQueuePrepend gets longer with Phases */ diff --git a/src/overrides.ts b/src/overrides.ts index 882a634ff90..3a9a54e740b 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -254,6 +254,11 @@ class DefaultOverrides { * Note that, for all items in the array, `count` is not used. */ readonly ITEM_REWARD_OVERRIDE: ModifierOverride[] = []; + + /** + * If `true`, disable all non-scripted opponent trainer encounters. + */ + readonly DISABLE_STANDARD_TRAINERS_OVERRIDE: boolean = false; } export const defaultOverrides = new DefaultOverrides(); diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 82ad2276fef..7845d50b2ad 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -98,12 +98,13 @@ export function getDataTypeKey(dataType: GameDataType, slotId = 0): string { switch (dataType) { case GameDataType.SYSTEM: return "data"; - case GameDataType.SESSION: + case GameDataType.SESSION: { let ret = "sessionData"; if (slotId) { ret += slotId; } return ret; + } case GameDataType.SETTINGS: return "settings"; case GameDataType.TUTORIALS: @@ -201,39 +202,6 @@ export interface DexEntry { ivs: number[]; } -export const DexAttr = { - NON_SHINY: 1n, - SHINY: 2n, - MALE: 4n, - FEMALE: 8n, - DEFAULT_VARIANT: 16n, - VARIANT_2: 32n, - VARIANT_3: 64n, - DEFAULT_FORM: 128n, -}; - -export interface DexAttrProps { - shiny: boolean; - female: boolean; - variant: Variant; - formIndex: number; -} - -export const AbilityAttr = { - ABILITY_1: 1, - ABILITY_2: 2, - ABILITY_HIDDEN: 4, -}; - -export type RunHistoryData = Record; - -export interface RunEntry { - entry: SessionSaveData; - isVictory: boolean; - /*Automatically set to false at the moment - implementation TBD*/ - isFavorite: boolean; -} - export type StarterMoveset = [Moves] | [Moves, Moves] | [Moves, Moves, Moves] | [Moves, Moves, Moves, Moves]; export interface StarterFormMoveData { @@ -260,6 +228,39 @@ export interface StarterPreferences { [key: number]: StarterAttributes; } +export interface DexAttrProps { + shiny: boolean; + female: boolean; + variant: Variant; + formIndex: number; +} + +export type RunHistoryData = Record; + +export interface RunEntry { + entry: SessionSaveData; + isVictory: boolean; + /*Automatically set to false at the moment - implementation TBD*/ + isFavorite: boolean; +} + +export const DexAttr = { + NON_SHINY: 1n, + SHINY: 2n, + MALE: 4n, + FEMALE: 8n, + DEFAULT_VARIANT: 16n, + VARIANT_2: 32n, + VARIANT_3: 64n, + DEFAULT_FORM: 128n, +}; + +export const AbilityAttr = { + ABILITY_1: 1, + ABILITY_2: 2, + ABILITY_HIDDEN: 4, +}; + // the latest data saved/loaded for the Starter Preferences. Required to reduce read/writes. Initialize as "{}", since this is the default value and no data needs to be stored if present. // if they ever add private static variables, move this into StarterPrefs const StarterPrefers_DEFAULT: string = "{}"; @@ -1553,16 +1554,18 @@ export class GameData { try { dataName = GameDataType[dataType].toLowerCase(); switch (dataType) { - case GameDataType.SYSTEM: + case GameDataType.SYSTEM: { dataStr = this.convertSystemDataStr(dataStr); const systemData = this.parseSystemData(dataStr); valid = !!systemData.dexData && !!systemData.timestamp; break; - case GameDataType.SESSION: + } + case GameDataType.SESSION: { const sessionData = this.parseSessionData(dataStr); valid = !!sessionData.party && !!sessionData.enemyParty && !!sessionData.timestamp; break; - case GameDataType.RUN_HISTORY: + } + case GameDataType.RUN_HISTORY: { const data = JSON.parse(dataStr); const keys = Object.keys(data); dataName = i18next.t("menuUiHandler:RUN_HISTORY").toLowerCase(); @@ -1572,6 +1575,7 @@ export class GameData { ["isFavorite", "isVictory", "entry"].every(v => entryKeys.includes(v)) && entryKeys.length === 3; }); break; + } case GameDataType.SETTINGS: case GameDataType.TUTORIALS: valid = true; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 91940d3af76..1599c86aa87 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -4553,4 +4553,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { icon.setFrame(species.getIconId(female, formIndex, false, variant)); } } + + /** + * Clears this UI's starter preferences. + * + * Designed to be used for unit tests that utilize this UI. + */ + clearStarterPreferences() { + this.starterPreferences = {}; + } } diff --git a/test/abilities/steely_spirit.test.ts b/test/abilities/steely_spirit.test.ts index 9b4d32efcae..b180ff8919e 100644 --- a/test/abilities/steely_spirit.test.ts +++ b/test/abilities/steely_spirit.test.ts @@ -12,7 +12,8 @@ describe("Abilities - Steely Spirit", () => { let game: GameManager; const steelySpiritMultiplier = 1.5; const moveToCheck = Moves.IRON_HEAD; - const ironHeadPower = allMoves[moveToCheck].power; + + let ironHeadPower: number; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -25,6 +26,7 @@ describe("Abilities - Steely Spirit", () => { }); beforeEach(() => { + ironHeadPower = allMoves[moveToCheck].power; game = new GameManager(phaserGame); game.override.battleType("double"); game.override.enemySpecies(Species.SHUCKLE); diff --git a/test/abilities/supreme_overlord.test.ts b/test/abilities/supreme_overlord.test.ts index b70acbd8d17..a71bf0a9354 100644 --- a/test/abilities/supreme_overlord.test.ts +++ b/test/abilities/supreme_overlord.test.ts @@ -1,4 +1,5 @@ import { Moves } from "#app/enums/moves"; +import type Move from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Species } from "#enums/species"; import { BattlerIndex } from "#app/battle"; @@ -12,8 +13,8 @@ describe("Abilities - Supreme Overlord", () => { let phaserGame: Phaser.Game; let game: GameManager; - const move = allMoves[Moves.TACKLE]; - const basePower = move.power; + let move: Move; + let basePower: number; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -26,6 +27,8 @@ describe("Abilities - Supreme Overlord", () => { }); beforeEach(() => { + move = allMoves[Moves.TACKLE]; + basePower = move.power; game = new GameManager(phaserGame); game.override .battleType("single") diff --git a/test/abilities/unseen_fist.test.ts b/test/abilities/unseen_fist.test.ts index 73ae25ff3b0..459bb00628c 100644 --- a/test/abilities/unseen_fist.test.ts +++ b/test/abilities/unseen_fist.test.ts @@ -32,22 +32,22 @@ describe("Abilities - Unseen Fist", () => { game.override.enemyLevel(100); }); - it("should cause a contact move to ignore Protect", () => - testUnseenFistHitResult(game, Moves.QUICK_ATTACK, Moves.PROTECT, true)); + it("should cause a contact move to ignore Protect", async () => + await testUnseenFistHitResult(game, Moves.QUICK_ATTACK, Moves.PROTECT, true)); - it("should not cause a non-contact move to ignore Protect", () => - testUnseenFistHitResult(game, Moves.ABSORB, Moves.PROTECT, false)); + it("should not cause a non-contact move to ignore Protect", async () => + await testUnseenFistHitResult(game, Moves.ABSORB, Moves.PROTECT, false)); it("should not apply if the source has Long Reach", async () => { game.override.passiveAbility(Abilities.LONG_REACH); await testUnseenFistHitResult(game, Moves.QUICK_ATTACK, Moves.PROTECT, false); }); - it("should cause a contact move to ignore Wide Guard", () => - testUnseenFistHitResult(game, Moves.BREAKING_SWIPE, Moves.WIDE_GUARD, true)); + it("should cause a contact move to ignore Wide Guard", async () => + await testUnseenFistHitResult(game, Moves.BREAKING_SWIPE, Moves.WIDE_GUARD, true)); - it("should not cause a non-contact move to ignore Wide Guard", () => - testUnseenFistHitResult(game, Moves.BULLDOZE, Moves.WIDE_GUARD, false)); + it("should not cause a non-contact move to ignore Wide Guard", async () => + await testUnseenFistHitResult(game, Moves.BULLDOZE, Moves.WIDE_GUARD, false)); it("should cause a contact move to ignore Protect, but not Substitute", async () => { game.override.enemyLevel(1); diff --git a/test/abilities/wonder_skin.test.ts b/test/abilities/wonder_skin.test.ts index f2cb0faed72..db746831753 100644 --- a/test/abilities/wonder_skin.test.ts +++ b/test/abilities/wonder_skin.test.ts @@ -56,16 +56,21 @@ describe("Abilities - Wonder Skin", () => { expect(moveToCheck.calculateBattleAccuracy).toHaveReturnedWith(100); }); - const bypassAbilities = [Abilities.MOLD_BREAKER, Abilities.TERAVOLT, Abilities.TURBOBLAZE]; + const bypassAbilities = [ + [Abilities.MOLD_BREAKER, "Mold Breaker"], + [Abilities.TERAVOLT, "Teravolt"], + [Abilities.TURBOBLAZE, "Turboblaze"], + ]; bypassAbilities.forEach(ability => { - it(`does not affect pokemon with ${allAbilities[ability].name}`, async () => { + it(`does not affect pokemon with ${ability[1]}`, async () => { const moveToCheck = allMoves[Moves.CHARM]; - game.override.ability(ability); + // @ts-ignore ts doesn't know that ability[0] is an ability and not a string... + game.override.ability(ability[0]); vi.spyOn(moveToCheck, "calculateBattleAccuracy"); - await game.startBattle([Species.PIKACHU]); + await game.classicMode.startBattle([Species.PIKACHU]); game.move.select(Moves.CHARM); await game.phaseInterceptor.to(MoveEffectPhase); diff --git a/test/achievements/achievement.test.ts b/test/achievements/achievement.test.ts index 26d33adb00a..5c53e38e208 100644 --- a/test/achievements/achievement.test.ts +++ b/test/achievements/achievement.test.ts @@ -14,7 +14,7 @@ import { NumberHolder } from "#app/utils"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; describe("check some Achievement related stuff", () => { it("should check Achievement creation", () => { @@ -77,6 +77,25 @@ describe("Achv", () => { }); describe("MoneyAchv", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + let scene: BattleScene; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + scene = game.scene; + }); + it("should create an instance of MoneyAchv", () => { const moneyAchv = new MoneyAchv("", "Test Money Achievement", 10000, "money_icon", 10); expect(moneyAchv).toBeInstanceOf(MoneyAchv); @@ -85,7 +104,6 @@ describe("MoneyAchv", () => { it("should validate the achievement based on the money amount", () => { const moneyAchv = new MoneyAchv("", "Test Money Achievement", 10000, "money_icon", 10); - const scene = new BattleScene(); scene.money = 5000; expect(moneyAchv.validate([])).toBe(false); diff --git a/test/battlerTags/substitute.test.ts b/test/battlerTags/substitute.test.ts index e80453d2933..fca3dc5ef7e 100644 --- a/test/battlerTags/substitute.test.ts +++ b/test/battlerTags/substitute.test.ts @@ -1,22 +1,40 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { PokemonTurnData, TurnMove, PokemonMove } from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon"; import { MoveResult } from "#app/field/pokemon"; -import BattleScene from "#app/battle-scene"; +import type BattleScene from "#app/battle-scene"; import { BattlerTagLapseType, BindTag, SubstituteTag } from "#app/data/battler-tags"; import { Moves } from "#app/enums/moves"; import { PokemonAnimType } from "#app/enums/pokemon-anim-type"; import * as messages from "#app/messages"; import { allMoves } from "#app/data/moves/move"; import type { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import GameManager from "#test/testUtils/gameManager"; describe("BattlerTag - SubstituteTag", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + }); + let mockPokemon: Pokemon; describe("onAdd behavior", () => { beforeEach(() => { mockPokemon = { - scene: new BattleScene(), + scene: game.scene, hp: 101, id: 0, getMaxHp: vi.fn().mockReturnValue(101) as Pokemon["getMaxHp"], @@ -77,7 +95,7 @@ describe("BattlerTag - SubstituteTag", () => { describe("onRemove behavior", () => { beforeEach(() => { mockPokemon = { - scene: new BattleScene(), + scene: game.scene, hp: 101, id: 0, isFainted: vi.fn().mockReturnValue(false) as Pokemon["isFainted"], @@ -109,7 +127,7 @@ describe("BattlerTag - SubstituteTag", () => { describe("lapse behavior", () => { beforeEach(() => { mockPokemon = { - scene: new BattleScene(), + scene: game.scene, hp: 101, id: 0, turnData: { acted: true } as PokemonTurnData, diff --git a/test/data/status_effect.test.ts b/test/data/status_effect.test.ts index 61dafc1c9b8..0fd2daa308b 100644 --- a/test/data/status_effect.test.ts +++ b/test/data/status_effect.test.ts @@ -13,17 +13,12 @@ import { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; import GameManager from "#test/testUtils/gameManager"; import { mockI18next } from "#test/testUtils/testUtils"; -import i18next from "i18next"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; const pokemonName = "PKM"; const sourceText = "SOURCE"; describe("Status Effect Messages", () => { - beforeAll(async () => { - await i18next.init(); - }); - describe("NONE", () => { const statusEffect = StatusEffect.NONE; @@ -31,7 +26,6 @@ describe("Status Effect Messages", () => { mockI18next(); const text = getStatusEffectObtainText(statusEffect, pokemonName); - console.log("text:", text); expect(text).toBe(""); const emptySourceText = getStatusEffectObtainText(statusEffect, pokemonName, ""); diff --git a/test/moves/copycat.test.ts b/test/moves/copycat.test.ts index c7242f0940e..0d9b0951f89 100644 --- a/test/moves/copycat.test.ts +++ b/test/moves/copycat.test.ts @@ -13,7 +13,7 @@ describe("Moves - Copycat", () => { let phaserGame: Phaser.Game; let game: GameManager; - const randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + let randomMoveAttr: RandomMoveAttr; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -26,6 +26,7 @@ describe("Moves - Copycat", () => { }); beforeEach(() => { + randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; game = new GameManager(phaserGame); game.override .moveset([Moves.COPYCAT, Moves.SPIKY_SHIELD, Moves.SWORDS_DANCE, Moves.SPLASH]) diff --git a/test/moves/dynamax_cannon.test.ts b/test/moves/dynamax_cannon.test.ts index 0ff0712710d..9cf3106b9c1 100644 --- a/test/moves/dynamax_cannon.test.ts +++ b/test/moves/dynamax_cannon.test.ts @@ -3,6 +3,7 @@ import { allMoves } from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { Moves } from "#enums/moves"; +import type Move from "#app/data/moves/move"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -12,7 +13,7 @@ describe("Moves - Dynamax Cannon", () => { let phaserGame: Phaser.Game; let game: GameManager; - const dynamaxCannon = allMoves[Moves.DYNAMAX_CANNON]; + let dynamaxCannon: Move; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -25,6 +26,7 @@ describe("Moves - Dynamax Cannon", () => { }); beforeEach(() => { + dynamaxCannon = allMoves[Moves.DYNAMAX_CANNON]; game = new GameManager(phaserGame); game.override.moveset([dynamaxCannon.id]); diff --git a/test/moves/fusion_flare_bolt.test.ts b/test/moves/fusion_flare_bolt.test.ts index 9a379cb4588..c340aeea63f 100644 --- a/test/moves/fusion_flare_bolt.test.ts +++ b/test/moves/fusion_flare_bolt.test.ts @@ -1,6 +1,7 @@ import { Stat } from "#enums/stat"; import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; import { DamageAnimPhase } from "#app/phases/damage-anim-phase"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import { MoveEndPhase } from "#app/phases/move-end-phase"; @@ -15,8 +16,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { let phaserGame: Phaser.Game; let game: GameManager; - const fusionFlare = allMoves[Moves.FUSION_FLARE]; - const fusionBolt = allMoves[Moves.FUSION_BOLT]; + let fusionFlare: Move; + let fusionBolt: Move; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -29,6 +30,8 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }); beforeEach(() => { + fusionFlare = allMoves[Moves.FUSION_FLARE]; + fusionBolt = allMoves[Moves.FUSION_BOLT]; game = new GameManager(phaserGame); game.override.moveset([fusionFlare.id, fusionBolt.id]); game.override.startingLevel(1); @@ -45,7 +48,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }); it("FUSION_FLARE should double power of subsequent FUSION_BOLT", async () => { - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); game.move.select(fusionBolt.id, 1, BattlerIndex.ENEMY); @@ -65,7 +68,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_BOLT should double power of subsequent FUSION_FLARE", async () => { - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionBolt.id, 0, BattlerIndex.ENEMY); game.move.select(fusionFlare.id, 1, BattlerIndex.ENEMY); @@ -85,7 +88,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { }, 20000); it("FUSION_FLARE should double power of subsequent FUSION_BOLT if a move failed in between", async () => { - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.PLAYER); game.move.select(fusionBolt.id, 1, BattlerIndex.PLAYER); @@ -111,7 +114,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { it("FUSION_FLARE should not double power of subsequent FUSION_BOLT if a move succeeded in between", async () => { game.override.enemyMoveset([Moves.SPLASH, Moves.SPLASH, Moves.SPLASH, Moves.SPLASH]); - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); game.move.select(fusionFlare.id, 0, BattlerIndex.ENEMY); game.move.select(fusionBolt.id, 1, BattlerIndex.ENEMY); @@ -156,7 +159,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves", async () => { game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); const enemyParty = game.scene.getEnemyParty(); @@ -210,7 +213,7 @@ describe("Moves - Fusion Flare and Fusion Bolt", () => { it("FUSION_FLARE and FUSION_BOLT alternating throughout turn should double power of subsequent moves if moves are aimed at allies", async () => { game.override.enemyMoveset([fusionFlare.id, fusionFlare.id, fusionFlare.id, fusionFlare.id]); - await game.startBattle([Species.ZEKROM, Species.ZEKROM]); + await game.classicMode.startBattle([Species.ZEKROM, Species.ZEKROM]); const party = game.scene.getPlayerParty(); const enemyParty = game.scene.getEnemyParty(); diff --git a/test/moves/hard_press.test.ts b/test/moves/hard_press.test.ts index 1bb6adc8e90..8891f0bf0e2 100644 --- a/test/moves/hard_press.test.ts +++ b/test/moves/hard_press.test.ts @@ -6,12 +6,13 @@ import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import type Move from "#app/data/moves/move"; describe("Moves - Hard Press", () => { let phaserGame: Phaser.Game; let game: GameManager; - const moveToCheck = allMoves[Moves.HARD_PRESS]; + let moveToCheck: Move; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -24,6 +25,7 @@ describe("Moves - Hard Press", () => { }); beforeEach(() => { + moveToCheck = allMoves[Moves.HARD_PRESS]; game = new GameManager(phaserGame); game.override.battleType("single"); game.override.ability(Abilities.BALL_FETCH); diff --git a/test/moves/last_respects.test.ts b/test/moves/last_respects.test.ts index 57752cea1af..ccab8a43415 100644 --- a/test/moves/last_respects.test.ts +++ b/test/moves/last_respects.test.ts @@ -4,6 +4,7 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import GameManager from "#test/testUtils/gameManager"; import { allMoves } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; import { MoveEffectPhase } from "#app/phases/move-effect-phase"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -12,8 +13,8 @@ describe("Moves - Last Respects", () => { let phaserGame: Phaser.Game; let game: GameManager; - const move = allMoves[Moves.LAST_RESPECTS]; - const basePower = move.power; + let move: Move; + let basePower: number; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -27,6 +28,8 @@ describe("Moves - Last Respects", () => { beforeEach(() => { game = new GameManager(phaserGame); + move = allMoves[Moves.LAST_RESPECTS]; + basePower = move.power; game.override .battleType("single") .disableCrits() diff --git a/test/moves/metronome.test.ts b/test/moves/metronome.test.ts index 15790777ed3..80f32a3a6fb 100644 --- a/test/moves/metronome.test.ts +++ b/test/moves/metronome.test.ts @@ -13,7 +13,7 @@ describe("Moves - Metronome", () => { let phaserGame: Phaser.Game; let game: GameManager; - const randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; + let randomMoveAttr: RandomMoveAttr; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -26,6 +26,7 @@ describe("Moves - Metronome", () => { }); beforeEach(() => { + randomMoveAttr = allMoves[Moves.METRONOME].getAttrs(RandomMoveAttr)[0]; game = new GameManager(phaserGame); game.override .moveset([Moves.METRONOME, Moves.SPLASH]) diff --git a/test/moves/rage_fist.test.ts b/test/moves/rage_fist.test.ts index 8bcb212d60e..f44901c5aba 100644 --- a/test/moves/rage_fist.test.ts +++ b/test/moves/rage_fist.test.ts @@ -3,6 +3,7 @@ import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { allMoves } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -10,7 +11,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite describe("Moves - Rage Fist", () => { let phaserGame: Phaser.Game; let game: GameManager; - const move = allMoves[Moves.RAGE_FIST]; + let move: Move; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -23,6 +24,7 @@ describe("Moves - Rage Fist", () => { }); beforeEach(() => { + move = allMoves[Moves.RAGE_FIST]; game = new GameManager(phaserGame); game.override .battleType("single") diff --git a/test/moves/retaliate.test.ts b/test/moves/retaliate.test.ts index 5cc0b08ccc6..e916c9ffeaa 100644 --- a/test/moves/retaliate.test.ts +++ b/test/moves/retaliate.test.ts @@ -4,12 +4,13 @@ import GameManager from "#test/testUtils/gameManager"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; import { allMoves } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; describe("Moves - Retaliate", () => { let phaserGame: Phaser.Game; let game: GameManager; - const retaliate = allMoves[Moves.RETALIATE]; + let retaliate: Move; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -22,6 +23,7 @@ describe("Moves - Retaliate", () => { }); beforeEach(() => { + retaliate = allMoves[Moves.RETALIATE]; game = new GameManager(phaserGame); game.override .battleType("single") diff --git a/test/moves/shell_side_arm.test.ts b/test/moves/shell_side_arm.test.ts index 47da5e1c2f7..a5b065b76cb 100644 --- a/test/moves/shell_side_arm.test.ts +++ b/test/moves/shell_side_arm.test.ts @@ -1,5 +1,6 @@ import { BattlerIndex } from "#app/battle"; import { allMoves, ShellSideArmCategoryAttr } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -10,8 +11,8 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite describe("Moves - Shell Side Arm", () => { let phaserGame: Phaser.Game; let game: GameManager; - const shellSideArm = allMoves[Moves.SHELL_SIDE_ARM]; - const shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0]; + let shellSideArm: Move; + let shellSideArmAttr: ShellSideArmCategoryAttr; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -24,6 +25,8 @@ describe("Moves - Shell Side Arm", () => { }); beforeEach(() => { + shellSideArm = allMoves[Moves.SHELL_SIDE_ARM]; + shellSideArmAttr = shellSideArm.getAttrs(ShellSideArmCategoryAttr)[0]; game = new GameManager(phaserGame); game.override .moveset([Moves.SHELL_SIDE_ARM, Moves.SPLASH]) diff --git a/test/moves/spit_up.test.ts b/test/moves/spit_up.test.ts index d986ae4d141..d71647bda52 100644 --- a/test/moves/spit_up.test.ts +++ b/test/moves/spit_up.test.ts @@ -7,6 +7,7 @@ import { MoveResult } from "#app/field/pokemon"; import GameManager from "#test/testUtils/gameManager"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; +import type Move from "#app/data/moves/move"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; @@ -17,7 +18,7 @@ describe("Moves - Spit Up", () => { let phaserGame: Phaser.Game; let game: GameManager; - const spitUp = allMoves[Moves.SPIT_UP]; + let spitUp: Move; beforeAll(() => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS }); @@ -28,6 +29,7 @@ describe("Moves - Spit Up", () => { }); beforeEach(() => { + spitUp = allMoves[Moves.SPIT_UP]; game = new GameManager(phaserGame); game.override.battleType("single"); diff --git a/test/moves/tera_blast.test.ts b/test/moves/tera_blast.test.ts index dffe39f4d87..c1a2b999fa0 100644 --- a/test/moves/tera_blast.test.ts +++ b/test/moves/tera_blast.test.ts @@ -1,6 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { Stat } from "#enums/stat"; import { allMoves, TeraMoveCategoryAttr } from "#app/data/moves/move"; +import type Move from "#app/data/moves/move"; import { PokemonType } from "#enums/pokemon-type"; import { Abilities } from "#app/enums/abilities"; import { HitResult } from "#app/field/pokemon"; @@ -13,13 +14,16 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite describe("Moves - Tera Blast", () => { let phaserGame: Phaser.Game; let game: GameManager; - const moveToCheck = allMoves[Moves.TERA_BLAST]; - const teraBlastAttr = moveToCheck.getAttrs(TeraMoveCategoryAttr)[0]; + + let moveToCheck: Move; + let teraBlastAttr: TeraMoveCategoryAttr; beforeAll(() => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); + moveToCheck = allMoves[Moves.TERA_BLAST]; + teraBlastAttr = moveToCheck.getAttrs(TeraMoveCategoryAttr)[0]; }); afterEach(() => { diff --git a/test/moves/triple_arrows.test.ts b/test/moves/triple_arrows.test.ts index c1114b69b99..eb434b25815 100644 --- a/test/moves/triple_arrows.test.ts +++ b/test/moves/triple_arrows.test.ts @@ -1,6 +1,7 @@ import { allMoves, FlinchAttr, StatStageChangeAttr } from "#app/data/moves/move"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; +import type Move from "#app/data/moves/move"; import { Species } from "#enums/species"; import GameManager from "#test/testUtils/gameManager"; import Phaser from "phaser"; @@ -9,14 +10,17 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite describe("Moves - Triple Arrows", () => { let phaserGame: Phaser.Game; let game: GameManager; - const tripleArrows = allMoves[Moves.TRIPLE_ARROWS]; - const flinchAttr = tripleArrows.getAttrs(FlinchAttr)[0]; - const defDropAttr = tripleArrows.getAttrs(StatStageChangeAttr)[0]; + let tripleArrows: Move; + let flinchAttr: FlinchAttr; + let defDropAttr: StatStageChangeAttr; beforeAll(() => { phaserGame = new Phaser.Game({ type: Phaser.HEADLESS, }); + tripleArrows = allMoves[Moves.TRIPLE_ARROWS]; + flinchAttr = tripleArrows.getAttrs(FlinchAttr)[0]; + defDropAttr = tripleArrows.getAttrs(StatStageChangeAttr)[0]; }); afterEach(() => { diff --git a/test/mystery-encounter/encounter-test-utils.ts b/test/mystery-encounter/encounter-test-utils.ts index 19ec364618e..8c54e0dd606 100644 --- a/test/mystery-encounter/encounter-test-utils.ts +++ b/test/mystery-encounter/encounter-test-utils.ts @@ -48,16 +48,6 @@ export async function runMysteryEncounterToEnd( ); if (isBattle) { - game.onNextPrompt( - "DamageAnimPhase", - Mode.MESSAGE, - () => { - game.setMode(Mode.MESSAGE); - game.endPhase(); - }, - () => game.isCurrentPhase(CommandPhase), - ); - game.onNextPrompt( "CheckSwitchPhase", Mode.CONFIRM, diff --git a/test/phases/phases.test.ts b/test/phases/phases.test.ts index 4aabeb55b9e..96225c9151c 100644 --- a/test/phases/phases.test.ts +++ b/test/phases/phases.test.ts @@ -31,7 +31,7 @@ describe("Phases", () => { it("should start the login phase", async () => { const loginPhase = new LoginPhase(); scene.unshiftPhase(loginPhase); - await game.phaseInterceptor.run(LoginPhase); + await game.phaseInterceptor.to(LoginPhase); expect(scene.ui.getMode()).to.equal(Mode.MESSAGE); }); }); @@ -40,7 +40,7 @@ describe("Phases", () => { it("should start the title phase", async () => { const titlePhase = new TitlePhase(); scene.unshiftPhase(titlePhase); - await game.phaseInterceptor.run(TitlePhase); + await game.phaseInterceptor.to(TitlePhase); expect(scene.ui.getMode()).to.equal(Mode.TITLE); }); }); @@ -49,7 +49,7 @@ describe("Phases", () => { it("should start the unavailable phase", async () => { const unavailablePhase = new UnavailablePhase(); scene.unshiftPhase(unavailablePhase); - await game.phaseInterceptor.run(UnavailablePhase); + await game.phaseInterceptor.to(UnavailablePhase); expect(scene.ui.getMode()).to.equal(Mode.UNAVAILABLE); }, 20000); }); diff --git a/test/phases/select-modifier-phase.test.ts b/test/phases/select-modifier-phase.test.ts index bb3d5debc7c..d352acea77a 100644 --- a/test/phases/select-modifier-phase.test.ts +++ b/test/phases/select-modifier-phase.test.ts @@ -48,8 +48,8 @@ describe("SelectModifierPhase", () => { it("should start a select modifier phase", async () => { initSceneWithoutEncounterPhase(scene, [Species.ABRA, Species.VOLCARONA]); const selectModifierPhase = new SelectModifierPhase(); - scene.pushPhase(selectModifierPhase); - await game.phaseInterceptor.run(SelectModifierPhase); + scene.unshiftPhase(selectModifierPhase); + await game.phaseInterceptor.to(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(Mode.MODIFIER_SELECT); }); diff --git a/test/plugins/api/pokerogue-account-api.test.ts b/test/plugins/api/pokerogue-account-api.test.ts index 9ec98b6a59f..e7e1b2d52b0 100644 --- a/test/plugins/api/pokerogue-account-api.test.ts +++ b/test/plugins/api/pokerogue-account-api.test.ts @@ -4,11 +4,17 @@ import { PokerogueAccountApi } from "#app/plugins/api/pokerogue-account-api"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import * as Utils from "#app/utils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const accountApi = new PokerogueAccountApi(apiBase); -const { server } = global; +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-admin-api.test.ts b/test/plugins/api/pokerogue-admin-api.test.ts index 0ce727b88da..08c4cf0dc45 100644 --- a/test/plugins/api/pokerogue-admin-api.test.ts +++ b/test/plugins/api/pokerogue-admin-api.test.ts @@ -9,11 +9,17 @@ import type { import { PokerogueAdminApi } from "#app/plugins/api/pokerogue-admin-api"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const adminApi = new PokerogueAdminApi(apiBase); -const { server } = global; +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-api.test.ts b/test/plugins/api/pokerogue-api.test.ts index 241453866a5..c53a38e23ab 100644 --- a/test/plugins/api/pokerogue-api.test.ts +++ b/test/plugins/api/pokerogue-api.test.ts @@ -2,10 +2,16 @@ import type { TitleStatsResponse } from "#app/@types/PokerogueApi"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); -const { server } = global; +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-daily-api.test.ts b/test/plugins/api/pokerogue-daily-api.test.ts index 95d938e6625..563e6d09009 100644 --- a/test/plugins/api/pokerogue-daily-api.test.ts +++ b/test/plugins/api/pokerogue-daily-api.test.ts @@ -3,11 +3,17 @@ import { PokerogueDailyApi } from "#app/plugins/api/pokerogue-daily-api"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { ScoreboardCategory, type RankingEntry } from "#app/ui/daily-run-scoreboard"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const dailyApi = new PokerogueDailyApi(apiBase); -const { server } = global; +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-savedata-api.test.ts b/test/plugins/api/pokerogue-savedata-api.test.ts index 47eafa0a933..481ba62c19d 100644 --- a/test/plugins/api/pokerogue-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-savedata-api.test.ts @@ -2,11 +2,17 @@ import type { UpdateAllSavedataRequest } from "#app/@types/PokerogueSavedataApi" import { PokerogueSavedataApi } from "#app/plugins/api/pokerogue-savedata-api"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const savedataApi = new PokerogueSavedataApi(apiBase); -const { server } = global; +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-session-savedata-api.test.ts b/test/plugins/api/pokerogue-session-savedata-api.test.ts index 67abc9c9336..d4c235ac51a 100644 --- a/test/plugins/api/pokerogue-session-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-session-savedata-api.test.ts @@ -10,11 +10,17 @@ import { PokerogueSessionSavedataApi } from "#app/plugins/api/pokerogue-session- import type { SessionSaveData } from "#app/system/game-data"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeAll, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const sessionSavedataApi = new PokerogueSessionSavedataApi(apiBase); -const { server } = global; + +let server: SetupServerApi; +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/plugins/api/pokerogue-system-savedata-api.test.ts b/test/plugins/api/pokerogue-system-savedata-api.test.ts index 81d863049f0..0c69ab8f922 100644 --- a/test/plugins/api/pokerogue-system-savedata-api.test.ts +++ b/test/plugins/api/pokerogue-system-savedata-api.test.ts @@ -6,13 +6,20 @@ import type { } from "#app/@types/PokerogueSystemSavedataApi"; import { PokerogueSystemSavedataApi } from "#app/plugins/api/pokerogue-system-savedata-api"; import type { SystemSaveData } from "#app/system/game-data"; +import { initServerForApiTests } from "#test/testUtils/testFileInitialization"; import { getApiBaseUrl } from "#test/testUtils/testUtils"; import { http, HttpResponse } from "msw"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import type { SetupServerApi } from "msw/node"; const apiBase = getApiBaseUrl(); const systemSavedataApi = new PokerogueSystemSavedataApi(getApiBaseUrl()); -const { server } = global; + +let server: SetupServerApi; + +beforeAll(async () => { + server = await initServerForApiTests(); +}); afterEach(() => { server.resetHandlers(); diff --git a/test/pre.test.ts b/test/pre.test.ts deleted file mode 100644 index 6ed29dce481..00000000000 --- a/test/pre.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import Overrides, { defaultOverrides } from "#app/overrides"; -import { expect, test } from "vitest"; - -test("Overrides are default values", () => { - expect(Overrides).toEqual(defaultOverrides); -}); diff --git a/test/testUtils/gameManager.ts b/test/testUtils/gameManager.ts index 3289c0ade01..390e71af126 100644 --- a/test/testUtils/gameManager.ts +++ b/test/testUtils/gameManager.ts @@ -55,6 +55,9 @@ import TextInterceptor from "#test/testUtils/TextInterceptor"; import { AES, enc } from "crypto-js"; import fs from "node:fs"; import { expect, vi } from "vitest"; +import { globalScene } from "#app/global-scene"; +import type StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; +import { MockFetch } from "#test/testUtils/mocks/mockFetch"; /** * Class to manage the game state and transitions between phases. @@ -84,10 +87,34 @@ export default class GameManager { ErrorInterceptor.getInstance().clear(); BattleScene.prototype.randBattleSeedInt = (range, min = 0) => min + range - 1; // This simulates a max roll this.gameWrapper = new GameWrapper(phaserGame, bypassLogin); - this.scene = new BattleScene(); + + let firstTimeScene = false; + + if (globalScene) { + this.scene = globalScene; + } else { + this.scene = new BattleScene(); + this.gameWrapper.setScene(this.scene); + firstTimeScene = true; + } + this.phaseInterceptor = new PhaseInterceptor(this.scene); + + if (!firstTimeScene) { + this.scene.reset(false, true); + (this.scene.ui.handlers[Mode.STARTER_SELECT] as StarterSelectUiHandler).clearStarterPreferences(); + this.scene.clearAllPhases(); + + // Must be run after phase interceptor has been initialized. + + this.scene.pushPhase(new LoginPhase()); + this.scene.pushPhase(new TitlePhase()); + this.scene.shiftPhase(); + + this.gameWrapper.scene = this.scene; + } + this.textInterceptor = new TextInterceptor(this.scene); - this.gameWrapper.setScene(this.scene); this.override = new OverridesHelper(this); this.move = new MoveHelper(this); this.classicMode = new ClassicModeHelper(this); @@ -96,9 +123,12 @@ export default class GameManager { this.settings = new SettingsHelper(this); this.reload = new ReloadHelper(this); this.modifiers = new ModifierHelper(this); + this.override.sanitizeOverrides(); // Disables Mystery Encounters on all tests (can be overridden at test level) this.override.mysteryEncounterChance(0); + + global.fetch = vi.fn(MockFetch) as any; } /** diff --git a/test/testUtils/gameWrapper.ts b/test/testUtils/gameWrapper.ts index 6af36f22d24..28c7c4af80f 100644 --- a/test/testUtils/gameWrapper.ts +++ b/test/testUtils/gameWrapper.ts @@ -6,11 +6,11 @@ import Pokemon from "#app/field/pokemon"; import * as Utils from "#app/utils"; import { blobToString } from "#test/testUtils/gameManagerUtils"; import { MockClock } from "#test/testUtils/mocks/mockClock"; -import mockConsoleLog from "#test/testUtils/mocks/mockConsoleLog"; +import { MockConsoleLog } from "#test/testUtils/mocks/mockConsoleLog"; import { MockFetch } from "#test/testUtils/mocks/mockFetch"; import MockLoader from "#test/testUtils/mocks/mockLoader"; -import mockLocalStorage from "#test/testUtils/mocks/mockLocalStorage"; -import MockImage from "#test/testUtils/mocks/mocksContainer/mockImage"; +import { mockLocalStorage } from "#test/testUtils/mocks/mockLocalStorage"; +import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; import MockTextureManager from "#test/testUtils/mocks/mockTextureManager"; import fs from "node:fs"; import Phaser from "phaser"; @@ -27,18 +27,6 @@ import UpdateList = Phaser.GameObjects.UpdateList; import { version } from "../../package.json"; import { MockTimedEventManager } from "./mocks/mockTimedEventManager"; -Object.defineProperty(window, "localStorage", { - value: mockLocalStorage(), -}); -Object.defineProperty(window, "console", { - value: mockConsoleLog(false), -}); - -BBCodeText.prototype.destroy = () => null; -BBCodeText.prototype.resize = () => null; -InputText.prototype.setElement = () => null; -InputText.prototype.resize = () => null; -Phaser.GameObjects.Image = MockImage; window.URL.createObjectURL = (blob: Blob) => { blobToString(blob).then((data: string) => { localStorage.setItem("toExport", data); @@ -53,25 +41,6 @@ window.matchMedia = () => ({ matches: false, }); -/** - * Sets this object's position relative to another object with a given offset - * @param guideObject {@linkcode Phaser.GameObjects.GameObject} to base the position off of - * @param x The relative x position - * @param y The relative y position - */ -const setPositionRelative = function (guideObject: any, x: number, y: number) { - const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); - const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); - this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); -}; - -Phaser.GameObjects.Container.prototype.setPositionRelative = setPositionRelative; -Phaser.GameObjects.Sprite.prototype.setPositionRelative = setPositionRelative; -Phaser.GameObjects.Image.prototype.setPositionRelative = setPositionRelative; -Phaser.GameObjects.NineSlice.prototype.setPositionRelative = setPositionRelative; -Phaser.GameObjects.Text.prototype.setPositionRelative = setPositionRelative; -Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative; - export default class GameWrapper { public game: Phaser.Game; public scene: BattleScene; diff --git a/test/testUtils/helpers/overridesHelper.ts b/test/testUtils/helpers/overridesHelper.ts index e69e05bce45..2d56ae35fce 100644 --- a/test/testUtils/helpers/overridesHelper.ts +++ b/test/testUtils/helpers/overridesHelper.ts @@ -6,7 +6,7 @@ import type { GameModes } from "#app/game-mode"; import { getGameMode } from "#app/game-mode"; import type { ModifierOverride } from "#app/modifier/modifier-type"; import type { BattleStyle } from "#app/overrides"; -import Overrides from "#app/overrides"; +import Overrides, { defaultOverrides } from "#app/overrides"; import type { Unlockables } from "#app/system/unlockables"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; @@ -15,8 +15,9 @@ import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { Species } from "#enums/species"; import { StatusEffect } from "#enums/status-effect"; import type { WeatherType } from "#enums/weather-type"; -import { vi } from "vitest"; +import { expect, vi } from "vitest"; import { GameManagerHelper } from "./gameManagerHelper"; +import { shiftCharCodes } from "#app/utils"; /** * Helper to handle overrides in tests @@ -226,12 +227,7 @@ export class OverridesHelper extends GameManagerHelper { * @returns `this` */ public disableTrainerWaves(): this { - const realFn = getGameMode; - vi.spyOn(GameMode, "getGameMode").mockImplementation((gameMode: GameModes) => { - const mode = realFn(gameMode); - mode.hasTrainers = false; - return mode; - }); + vi.spyOn(Overrides, "DISABLE_STANDARD_TRAINERS_OVERRIDE", "get").mockReturnValue(true); this.log("Standard trainer waves are disabled!"); return this; } @@ -263,11 +259,8 @@ export class OverridesHelper extends GameManagerHelper { * @returns `this` */ public seed(seed: string): this { - vi.spyOn(this.game.scene, "resetSeed").mockImplementation(() => { - this.game.scene.waveSeed = seed; - Phaser.Math.RND.sow([seed]); - this.game.scene.rngCounter = 0; - }); + // Shift the seed here with a negative wave number, to compensate for `resetSeed()` shifting the seed itself. + this.game.scene.setSeed(shiftCharCodes(seed, (this.game.scene.currentBattle?.waveIndex ?? 0) * -1)); this.game.scene.resetSeed(); this.log(`Seed set to "${seed}"!`); return this; @@ -539,4 +532,14 @@ export class OverridesHelper extends GameManagerHelper { private log(...params: any[]) { console.log("Overrides:", ...params); } + + public sanitizeOverrides(): void { + for (const key of Object.keys(defaultOverrides)) { + if (Overrides[key] !== defaultOverrides[key]) { + vi.spyOn(Overrides, key as any, "get").mockReturnValue(defaultOverrides[key]); + } + } + expect(Overrides).toEqual(defaultOverrides); + this.log("Sanitizing all overrides!"); + } } diff --git a/test/testUtils/listenersManager.ts b/test/testUtils/listenersManager.ts new file mode 100644 index 00000000000..da624aa8a56 --- /dev/null +++ b/test/testUtils/listenersManager.ts @@ -0,0 +1,41 @@ +import { expect } from "vitest"; + +/** + * Whether or not it is currently the first time running this manager. + */ +let firstTime = true; + +/** + * The list of listeners that were present during the first time this manager is run. + * These initial listeners are needed throughout the entire test suite, so we never remove them. + */ +const initialListeners: NodeJS.MessageListener[] = []; + +/** + * The current listener that is only needed for the current test file. + * We plan to delete it during the next test file, when it is no longer needed. + */ +let currentListener: NodeJS.MessageListener | null; + +export function manageListeners() { + if (firstTime) { + initialListeners.push(...process.listeners("message")); + } else { + expect(process.listeners("message").length).toBeLessThan(7); + + // Remove the listener that was used during the previous test file + if (currentListener) { + process.removeListener("message", currentListener); + currentListener = null; + } + + // Find the new listener that is being used for the current test file + process.listeners("message").forEach(fn => { + if (!initialListeners.includes(fn)) { + currentListener = fn; + } + }); + } + + firstTime = false; +} diff --git a/test/testUtils/mocks/mockConsoleLog.ts b/test/testUtils/mocks/mockConsoleLog.ts index 808b6ea4d4d..f54d41fea3e 100644 --- a/test/testUtils/mocks/mockConsoleLog.ts +++ b/test/testUtils/mocks/mockConsoleLog.ts @@ -1,82 +1,80 @@ -const MockConsoleLog = (_logDisabled = false, _phaseText = false) => { - let logs: any[] = []; - const logDisabled: boolean = _logDisabled; - const phaseText: boolean = _phaseText; - const originalLog = console.log; - const originalError = console.error; - const originalDebug = console.debug; - const originalWarn = console.warn; - const notified: any[] = []; +const originalLog = console.log; +const originalError = console.error; +const originalDebug = console.debug; +const originalWarn = console.warn; - const blacklist = ["Phaser", "variant icon does not exist", 'Texture "%s" not found']; - const whitelist = ["Phase"]; +const blacklist = ["Phaser", "variant icon does not exist", 'Texture "%s" not found']; +const whitelist = ["Phase"]; - return { - log(...args) { - const argsStr = this.getStr(args); - logs.push(argsStr); - if (logDisabled && !phaseText) { - return; - } - if ((phaseText && !whitelist.some(b => argsStr.includes(b))) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalLog(args); - }, - error(...args) { - const argsStr = this.getStr(args); - logs.push(argsStr); - originalError(args); // Appelle le console.error originel - }, - debug(...args) { - const argsStr = this.getStr(args); - logs.push(argsStr); - if (logDisabled && !phaseText) { - return; - } - if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalDebug(args); - }, - warn(...args) { - const argsStr = this.getStr(args); - logs.push(args); - if (logDisabled && !phaseText) { - return; - } - if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { - return; - } - originalWarn(args); - }, - notify(msg) { - originalLog(msg); - notified.push(msg); - }, - getLogs() { - return logs; - }, - clearLogs() { - logs = []; - }, - getStr(...args) { - return args - .map(arg => { - if (typeof arg === "object" && arg !== null) { - // Handle objects including arrays - return JSON.stringify(arg, (_key, value) => (typeof value === "bigint" ? value.toString() : value)); - } - if (typeof arg === "bigint") { - // Handle BigInt values - return arg.toString(); - } - // Handle all other types +export class MockConsoleLog { + constructor( + private logDisabled = false, + private phaseText = false, + ) {} + private logs: any[] = []; + private notified: any[] = []; + + public log(...args) { + const argsStr = this.getStr(args); + this.logs.push(argsStr); + if (this.logDisabled && !this.phaseText) { + return; + } + if ((this.phaseText && !whitelist.some(b => argsStr.includes(b))) || blacklist.some(b => argsStr.includes(b))) { + return; + } + originalLog(args); + } + public error(...args) { + const argsStr = this.getStr(args); + this.logs.push(argsStr); + originalError(args); // Appelle le console.error originel + } + public debug(...args) { + const argsStr = this.getStr(args); + this.logs.push(argsStr); + if (this.logDisabled && !this.phaseText) { + return; + } + if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { + return; + } + originalDebug(args); + } + warn(...args) { + const argsStr = this.getStr(args); + this.logs.push(args); + if (this.logDisabled && !this.phaseText) { + return; + } + if (!whitelist.some(b => argsStr.includes(b)) || blacklist.some(b => argsStr.includes(b))) { + return; + } + originalWarn(args); + } + notify(msg) { + originalLog(msg); + this.notified.push(msg); + } + getLogs() { + return this.logs; + } + clearLogs() { + this.logs = []; + } + getStr(...args) { + return args + .map(arg => { + if (typeof arg === "object" && arg !== null) { + // Handle objects including arrays + return JSON.stringify(arg, (_key, value) => (typeof value === "bigint" ? value.toString() : value)); + } + if (typeof arg === "bigint") { + // Handle BigInt values return arg.toString(); - }) - .join(";"); - }, - }; -}; - -export default MockConsoleLog; + } + return arg.toString(); + }) + .join(";"); + } +} diff --git a/test/testUtils/mocks/mockContextCanvas.ts b/test/testUtils/mocks/mockContextCanvas.ts new file mode 100644 index 00000000000..a69f039c5e9 --- /dev/null +++ b/test/testUtils/mocks/mockContextCanvas.ts @@ -0,0 +1,26 @@ +/** + * A minimal stub object to mock HTMLCanvasElement + */ +export const mockCanvas: any = { + width: 0, + getContext() { + return mockContext; + }, +}; +/** + * A minimal stub object to mock CanvasRenderingContext2D + */ +export const mockContext: any = { + font: "", + measureText: () => { + return {}; + }, + save: () => {}, + scale: () => {}, + clearRect: () => {}, + fillRect: () => {}, + fillText: () => {}, + getImageData: () => {}, + canvas: mockCanvas, + restore: () => {}, +}; diff --git a/test/testUtils/mocks/mockLocalStorage.ts b/test/testUtils/mocks/mockLocalStorage.ts index 235aa76f664..6b336841ad6 100644 --- a/test/testUtils/mocks/mockLocalStorage.ts +++ b/test/testUtils/mocks/mockLocalStorage.ts @@ -1,4 +1,4 @@ -const mockLocalStorage = () => { +export const mockLocalStorage = () => { let store = {} as Storage; return { @@ -23,5 +23,3 @@ const mockLocalStorage = () => { }, }; }; - -export default mockLocalStorage; diff --git a/test/testUtils/mocks/mockTextureManager.ts b/test/testUtils/mocks/mockTextureManager.ts index fe249c5a5f7..585ee0a674a 100644 --- a/test/testUtils/mocks/mockTextureManager.ts +++ b/test/testUtils/mocks/mockTextureManager.ts @@ -1,5 +1,5 @@ import MockContainer from "#test/testUtils/mocks/mocksContainer/mockContainer"; -import MockImage from "#test/testUtils/mocks/mocksContainer/mockImage"; +import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; import MockNineslice from "#test/testUtils/mocks/mocksContainer/mockNineslice"; import MockPolygon from "#test/testUtils/mocks/mocksContainer/mockPolygon"; import MockRectangle from "#test/testUtils/mocks/mocksContainer/mockRectangle"; diff --git a/test/testUtils/mocks/mocksContainer/mockContainer.ts b/test/testUtils/mocks/mocksContainer/mockContainer.ts index 0a792c6fc79..5e739fbe3cc 100644 --- a/test/testUtils/mocks/mocksContainer/mockContainer.ts +++ b/test/testUtils/mocks/mocksContainer/mockContainer.ts @@ -215,4 +215,10 @@ export default class MockContainer implements MockGameObject { } disableInteractive = () => null; + + each(method) { + for (const item of this.list) { + method(item); + } + } } diff --git a/test/testUtils/mocks/mocksContainer/mockImage.ts b/test/testUtils/mocks/mocksContainer/mockImage.ts index 768fcfeb765..d20b4663771 100644 --- a/test/testUtils/mocks/mocksContainer/mockImage.ts +++ b/test/testUtils/mocks/mocksContainer/mockImage.ts @@ -1,6 +1,6 @@ import MockContainer from "#test/testUtils/mocks/mocksContainer/mockContainer"; -export default class MockImage extends MockContainer { +export class MockImage extends MockContainer { private texture; constructor(textureManager, x, y, texture) { diff --git a/test/testUtils/mocks/mocksContainer/mockRectangle.ts b/test/testUtils/mocks/mocksContainer/mockRectangle.ts index eec431d8ada..854baed5915 100644 --- a/test/testUtils/mocks/mocksContainer/mockRectangle.ts +++ b/test/testUtils/mocks/mocksContainer/mockRectangle.ts @@ -1,3 +1,4 @@ +import { off } from "process"; import type { MockGameObject } from "../mockGameObject"; export default class MockRectangle implements MockGameObject { @@ -72,4 +73,6 @@ export default class MockRectangle implements MockGameObject { setScale(_scale) { // return this.phaserText.setScale(scale); } + + off() {} } diff --git a/test/testUtils/testFileInitialization.ts b/test/testUtils/testFileInitialization.ts new file mode 100644 index 00000000000..2b41f3aa29a --- /dev/null +++ b/test/testUtils/testFileInitialization.ts @@ -0,0 +1,117 @@ +import { SESSION_ID_COOKIE_NAME } from "#app/constants"; +import { initLoggedInUser } from "#app/account"; +import { initAbilities } from "#app/data/ability"; +import { initBiomes } from "#app/data/balance/biomes"; +import { initEggMoves } from "#app/data/balance/egg-moves"; +import { initPokemonPrevolutions } from "#app/data/balance/pokemon-evolutions"; +import { initMoves } from "#app/data/moves/move"; +import { initMysteryEncounters } from "#app/data/mystery-encounters/mystery-encounters"; +import { initPokemonForms } from "#app/data/pokemon-forms"; +import { initSpecies } from "#app/data/pokemon-species"; +import { initAchievements } from "#app/system/achv"; +import { initVouchers } from "#app/system/voucher"; +import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; +import { setCookie } from "#app/utils"; +import { blobToString } from "#test/testUtils/gameManagerUtils"; +import { MockConsoleLog } from "#test/testUtils/mocks/mockConsoleLog"; +import { mockContext } from "#test/testUtils/mocks/mockContextCanvas"; +import { mockLocalStorage } from "#test/testUtils/mocks/mockLocalStorage"; +import { MockImage } from "#test/testUtils/mocks/mocksContainer/mockImage"; +import Phaser from "phaser"; +import InputText from "phaser3-rex-plugins/plugins/inputtext"; +import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import { manageListeners } from "./listenersManager"; + +let wasInitialized = false; +/** + * An initialization function that is run at the beginning of every test file (via `beforeAll()`). + */ +export function initTestFile() { + // Set the timezone to UTC for tests. + process.env.TZ = "UTC"; + + Object.defineProperty(window, "localStorage", { + value: mockLocalStorage(), + }); + Object.defineProperty(window, "console", { + value: new MockConsoleLog(false), + }); + Object.defineProperty(document, "fonts", { + writable: true, + value: { + add: () => {}, + }, + }); + + BBCodeText.prototype.destroy = () => null; + // @ts-ignore + BBCodeText.prototype.resize = () => null; + InputText.prototype.setElement = () => null as any; + InputText.prototype.resize = () => null as any; + Phaser.GameObjects.Image = MockImage as any; + window.URL.createObjectURL = (blob: Blob) => { + blobToString(blob).then((data: string) => { + localStorage.setItem("toExport", data); + }); + return null as any; + }; + navigator.getGamepads = () => []; + setCookie(SESSION_ID_COOKIE_NAME, "fake_token"); + + window.matchMedia = () => + ({ + matches: false, + }) as any; + + /** + * Sets this object's position relative to another object with a given offset + * @param guideObject {@linkcode Phaser.GameObjects.GameObject} to base the position off of + * @param x The relative x position + * @param y The relative y position + */ + const setPositionRelative = function (guideObject: any, x: number, y: number) { + const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); + const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); + this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); + }; + + Phaser.GameObjects.Container.prototype.setPositionRelative = setPositionRelative; + Phaser.GameObjects.Sprite.prototype.setPositionRelative = setPositionRelative; + Phaser.GameObjects.Image.prototype.setPositionRelative = setPositionRelative; + Phaser.GameObjects.NineSlice.prototype.setPositionRelative = setPositionRelative; + Phaser.GameObjects.Text.prototype.setPositionRelative = setPositionRelative; + Phaser.GameObjects.Rectangle.prototype.setPositionRelative = setPositionRelative; + HTMLCanvasElement.prototype.getContext = () => mockContext; + + // Initialize all of these things if and only if they have not been initialized yet + // initSpecies(); + if (!wasInitialized) { + wasInitialized = true; + initVouchers(); + initAchievements(); + initStatsKeys(); + initPokemonPrevolutions(); + initBiomes(); + initEggMoves(); + initPokemonForms(); + initSpecies(); + initMoves(); + initAbilities(); + initLoggedInUser(); + initMysteryEncounters(); + } + + manageListeners(); +} + +/** + * Closes the current mock server and initializes a new mock server. + * This is run at the beginning of every API test file. + */ +export async function initServerForApiTests() { + global.server?.close(); + const { setupServer } = await import("msw/node"); + global.server = setupServer(); + global.server.listen({ onUnhandledRequest: "error" }); + return global.server; +} diff --git a/test/vitest.setup.ts b/test/vitest.setup.ts index 44175049042..b9da0850306 100644 --- a/test/vitest.setup.ts +++ b/test/vitest.setup.ts @@ -14,8 +14,9 @@ import { initVouchers } from "#app/system/voucher"; import { initStatsKeys } from "#app/ui/game-stats-ui-handler"; import { afterAll, beforeAll, vi } from "vitest"; +import { initTestFile } from "./testUtils/testFileInitialization"; + /** Set the timezone to UTC for tests. */ -process.env.TZ = "UTC"; /** Mock the override import to always return default values, ignoring any custom overrides. */ vi.mock("#app/overrides", async importOriginal => { @@ -63,28 +64,10 @@ vi.mock("i18next", async importOriginal => { return await importOriginal(); }); -initVouchers(); -initAchievements(); -initStatsKeys(); -initPokemonPrevolutions(); -initBiomes(); -initEggMoves(); -initPokemonForms(); -initSpecies(); -initMoves(); -initAbilities(); -initLoggedInUser(); -initMysteryEncounters(); - global.testFailed = false; beforeAll(() => { - Object.defineProperty(document, "fonts", { - writable: true, - value: { - add: () => {}, - }, - }); + initTestFile(); }); afterAll(() => { diff --git a/vitest.config.ts b/vitest.config.ts index b52c16ec00c..c781bde97ed 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,20 +1,31 @@ import { defineProject } from "vitest/config"; import { defaultConfig } from "./vite.config"; +import { BaseSequencer, type TestSpecification } from "vitest/node"; + +function getTestOrder(testName: string): number { + if (testName.includes("battle-scene.test.ts")) { + return 1; + } + if (testName.includes("inputs.test.ts")) { + return 2; + } + return 3; +} export default defineProject(({ mode }) => ({ ...defaultConfig, test: { testTimeout: 20000, setupFiles: ["./test/fontFace.setup.ts", "./test/vitest.setup.ts"], - server: { - deps: { - inline: ["vitest-canvas-mock"], - //@ts-ignore - optimizer: { - web: { - include: ["vitest-canvas-mock"], - }, - }, + sequence: { + sequencer: class CustomSequencer extends BaseSequencer { + async sort(files: TestSpecification[]) { + // use default sorting at first. + files = await super.sort(files); + // Except, forcibly reorder + + return files.sort((a, b) => getTestOrder(a.moduleId) - getTestOrder(b.moduleId)); + } }, }, environment: "jsdom" as const, @@ -34,7 +45,6 @@ export default defineProject(({ mode }) => ({ }, name: "main", include: ["./test/**/*.{test,spec}.ts"], - exclude: ["./test/pre.test.ts"], }, esbuild: { pure: mode === "production" ? ["console.log"] : [], From 4149d3600af2c48149557bbe84925ef891ff8f27 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:49:54 -0500 Subject: [PATCH 3/4] [Misc] Remove pre-push lefthook (#5572) Remove pre-push lefthook --- lefthook.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lefthook.yml b/lefthook.yml index aa64a176191..ddf875f15de 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -8,12 +8,6 @@ pre-commit: skip: - merge - rebase - -pre-push: - commands: - biome-lint: - glob: "*.{js,ts,jsx,tsx}" - run: npx @biomejs/biome check --reporter=summary {push_files} --no-errors-on-unmatched post-merge: commands: From 4a560d7185665775954c7bfffab959feaa92b3c1 Mon Sep 17 00:00:00 2001 From: Unicorn_Power <189861924+Unicornpowerstar@users.noreply.github.com> Date: Sat, 29 Mar 2025 00:02:47 +0100 Subject: [PATCH 4/4] [Sprite] Reduce Mystical Rock sprite's size (#5570) * Updating the size to be smaller * Update item atlas * Fix Malicious Armor missing outline Noticed when exporting atlas that the item sprite broke --------- Co-authored-by: Madmadness65 Co-authored-by: damocleas --- public/images/items.json | 15378 +++++++++++----------- public/images/items.png | Bin 57986 -> 55816 bytes public/images/items/malicious_armor.png | Bin 686 -> 894 bytes public/images/items/mystical_rock.png | Bin 697 -> 915 bytes 4 files changed, 7689 insertions(+), 7689 deletions(-) diff --git a/public/images/items.json b/public/images/items.json index 64265382dea..5848b02dd6a 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,13 +4,13 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 431, - "h": 431 + "w": 435, + "h": 435 }, "scale": 1, "frames": [ { - "filename": "mystical_rock", + "filename": "relic_gold", "rotated": false, "trimmed": true, "sourceSize": { @@ -18,356 +18,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 32, - "h": 29 + "x": 9, + "y": 11, + "w": 15, + "h": 11 }, "frame": { "x": 0, "y": 0, - "w": 32, - "h": 29 + "w": 15, + "h": 11 } }, { - "filename": "galarica_cuff", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 1, - "y": 1, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 29, - "w": 29, - "h": 30 - } - }, - { - "filename": "galarica_wreath", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 0, - "y": 3, - "w": 32, - "h": 27 - }, - "frame": { - "x": 32, - "y": 0, - "w": 32, - "h": 27 - } - }, - { - "filename": "max_mushrooms", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 1, - "y": 3, - "w": 29, - "h": 28 - }, - "frame": { - "x": 0, - "y": 59, - "w": 29, - "h": 28 - } - }, - { - "filename": "ribbon_gen4", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 30, - "h": 28 - }, - "frame": { - "x": 64, - "y": 0, - "w": 30, - "h": 28 - } - }, - { - "filename": "leaders_crest", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 29, - "h": 27 - }, - "frame": { - "x": 0, - "y": 87, - "w": 29, - "h": 27 - } - }, - { - "filename": "ribbon_gen2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 2, - "w": 28, - "h": 28 - }, - "frame": { - "x": 94, - "y": 0, - "w": 28, - "h": 28 - } - }, - { - "filename": "bronze_ribbon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 31 - }, - "frame": { - "x": 0, - "y": 114, - "w": 22, - "h": 31 - } - }, - { - "filename": "great_ribbon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 31 - }, - "frame": { - "x": 0, - "y": 145, - "w": 22, - "h": 31 - } - }, - { - "filename": "linking_cord", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 27, - "h": 26 - }, - "frame": { - "x": 122, - "y": 0, - "w": 27, - "h": 26 - } - }, - { - "filename": "master_ribbon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 31 - }, - "frame": { - "x": 0, - "y": 176, - "w": 22, - "h": 31 - } - }, - { - "filename": "rogue_ribbon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 31 - }, - "frame": { - "x": 0, - "y": 207, - "w": 22, - "h": 31 - } - }, - { - "filename": "ultra_ribbon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 31 - }, - "frame": { - "x": 0, - "y": 238, - "w": 22, - "h": 31 - } - }, - { - "filename": "inverse", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 30 - }, - "frame": { - "x": 0, - "y": 269, - "w": 22, - "h": 30 - } - }, - { - "filename": "ribbon_gen3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 29 - }, - "frame": { - "x": 0, - "y": 299, - "w": 22, - "h": 29 - } - }, - { - "filename": "ribbon_gen7", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 29 - }, - "frame": { - "x": 0, - "y": 328, - "w": 22, - "h": 29 - } - }, - { - "filename": "ribbon_gen9", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 22, - "h": 29 - }, - "frame": { - "x": 0, - "y": 357, - "w": 22, - "h": 29 - } - }, - { - "filename": "cornerstone_mask", + "filename": "ability_capsule", "rotated": false, "trimmed": true, "sourceSize": { @@ -376,19 +40,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 3, + "y": 9, "w": 24, - "h": 26 + "h": 14 }, "frame": { - "x": 149, + "x": 15, "y": 0, "w": 24, - "h": 26 + "h": 14 } }, { - "filename": "ribbon_gen1", + "filename": "candy_overlay", "rotated": false, "trimmed": true, "sourceSize": { @@ -396,16 +60,1234 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 22, - "h": 28 + "x": 8, + "y": 12, + "w": 16, + "h": 15 + }, + "frame": { + "x": 39, + "y": 0, + "w": 16, + "h": 15 + } + }, + { + "filename": "eviolite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 55, + "y": 0, + "w": 15, + "h": 15 + } + }, + { + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 70, + "y": 0, + "w": 15, + "h": 15 + } + }, + { + "filename": "silver_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 24, + "h": 15 + }, + "frame": { + "x": 85, + "y": 0, + "w": 24, + "h": 15 + } + }, + { + "filename": "ultranecrozium_z", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 1, + "y": 9, + "w": 30, + "h": 15 + }, + "frame": { + "x": 109, + "y": 0, + "w": 30, + "h": 15 + } + }, + { + "filename": "abomasite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 139, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "absolite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 155, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "aerodactylite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 171, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "aggronite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 187, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "alakazite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 203, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "altarianite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 219, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "ampharosite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 235, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "audinite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 251, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "banettite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 267, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "beedrillite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 283, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "blastoisinite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 299, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "blazikenite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 315, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "cameruptite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 331, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "charizardite_x", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 347, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "charizardite_y", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 363, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "diancite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 379, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "galladite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 395, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "garchompite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 411, + "y": 0, + "w": 16, + "h": 16 + } + }, + { + "filename": "revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 12, + "h": 17 }, "frame": { "x": 0, - "y": 386, - "w": 22, - "h": 28 + "y": 11, + "w": 12, + "h": 17 + } + }, + { + "filename": "gardevoirite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 12, + "y": 14, + "w": 16, + "h": 16 + } + }, + { + "filename": "gengarite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 28, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "glalitite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 44, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "gyaradosite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 60, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "heracronite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 76, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "houndoominite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 92, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "kangaskhanite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 108, + "y": 15, + "w": 16, + "h": 16 + } + }, + { + "filename": "latiasite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 124, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "latiosite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 140, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "lopunnite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 156, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "lucarionite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 172, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "manectite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 188, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "mawilite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 204, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "medichamite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 220, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "mega_bracelet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 16 + }, + "frame": { + "x": 236, + "y": 16, + "w": 20, + "h": 16 + } + }, + { + "filename": "metagrossite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 256, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "mewtwonite_x", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 272, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "mewtwonite_y", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 288, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "nugget", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 304, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "pidgeotite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 320, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "pinsirite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 336, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "rayquazite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 352, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "relic_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 16 + }, + "frame": { + "x": 368, + "y": 16, + "w": 17, + "h": 16 + } + }, + { + "filename": "sablenite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 385, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "salamencite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 401, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "sceptilite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 417, + "y": 16, + "w": 16, + "h": 16 + } + }, + { + "filename": "scizorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 0, + "y": 30, + "w": 16, + "h": 16 + } + }, + { + "filename": "sharpedonite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 16, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "slowbronite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 32, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "soul_dew", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 48, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "steelixite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 64, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "strawberry_sweet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 16, + "h": 16 + }, + "frame": { + "x": 80, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "swampertite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 96, + "y": 31, + "w": 16, + "h": 16 + } + }, + { + "filename": "tyranitarite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 112, + "y": 32, + "w": 16, + "h": 16 + } + }, + { + "filename": "venusaurite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 128, + "y": 32, + "w": 16, + "h": 16 } }, { @@ -423,432 +1305,12 @@ "h": 17 }, "frame": { - "x": 0, - "y": 414, + "x": 144, + "y": 32, "w": 23, "h": 17 } }, - { - "filename": "ability_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 23, - "h": 26 - }, - "frame": { - "x": 173, - "y": 0, - "w": 23, - "h": 26 - } - }, - { - "filename": "map", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 27, - "h": 22 - }, - "frame": { - "x": 196, - "y": 0, - "w": 27, - "h": 22 - } - }, - { - "filename": "mint_atk", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 223, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "mint_def", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 251, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "mint_neutral", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 279, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "mint_spatk", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 307, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "mint_spd", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 335, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "mint_spdef", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 28, - "h": 21 - }, - "frame": { - "x": 363, - "y": 0, - "w": 28, - "h": 21 - } - }, - { - "filename": "chipped_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 26, - "h": 20 - }, - "frame": { - "x": 391, - "y": 0, - "w": 26, - "h": 20 - } - }, - { - "filename": "exp_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 17, - "h": 31 - }, - "frame": { - "x": 22, - "y": 114, - "w": 17, - "h": 31 - } - }, - { - "filename": "golden_exp_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 17, - "h": 31 - }, - "frame": { - "x": 22, - "y": 145, - "w": 17, - "h": 31 - } - }, - { - "filename": "super_exp_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 17, - "h": 31 - }, - "frame": { - "x": 22, - "y": 176, - "w": 17, - "h": 31 - } - }, - { - "filename": "prison_bottle", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 17, - "h": 30 - }, - "frame": { - "x": 22, - "y": 207, - "w": 17, - "h": 30 - } - }, - { - "filename": "ribbon_gen5", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 22, - "h": 28 - }, - "frame": { - "x": 22, - "y": 237, - "w": 22, - "h": 28 - } - }, - { - "filename": "ribbon_gen6", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 22, - "h": 28 - }, - "frame": { - "x": 22, - "y": 265, - "w": 22, - "h": 28 - } - }, - { - "filename": "ribbon_gen8", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 22, - "h": 28 - }, - "frame": { - "x": 22, - "y": 293, - "w": 22, - "h": 28 - } - }, - { - "filename": "black_augurite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 22, - "h": 25 - }, - "frame": { - "x": 22, - "y": 321, - "w": 22, - "h": 25 - } - }, - { - "filename": "big_root", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 22, - "y": 346, - "w": 23, - "h": 24 - } - }, - { - "filename": "blank_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 22, - "y": 370, - "w": 24, - "h": 24 - } - }, - { - "filename": "cracked_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 26, - "h": 20 - }, - "frame": { - "x": 22, - "y": 394, - "w": 26, - "h": 20 - } - }, { "filename": "burn_drive", "rotated": false, @@ -864,8 +1326,8 @@ "h": 17 }, "frame": { - "x": 23, - "y": 414, + "x": 167, + "y": 32, "w": 23, "h": 17 } @@ -885,2301 +1347,12 @@ "h": 17 }, "frame": { - "x": 46, - "y": 414, + "x": 190, + "y": 32, "w": 23, "h": 17 } }, - { - "filename": "ultranecrozium_z", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 1, - "y": 9, - "w": 30, - "h": 15 - }, - "frame": { - "x": 122, - "y": 26, - "w": 30, - "h": 15 - } - }, - { - "filename": "legend_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 6, - "w": 25, - "h": 20 - }, - "frame": { - "x": 152, - "y": 26, - "w": 25, - "h": 20 - } - }, - { - "filename": "adamant_crystal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 177, - "y": 26, - "w": 23, - "h": 21 - } - }, - { - "filename": "choice_scarf", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 200, - "y": 22, - "w": 24, - "h": 24 - } - }, - { - "filename": "draco_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 224, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "dread_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 248, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "earth_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 272, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "fist_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 296, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "flame_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 320, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "focus_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 344, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "golden_punch", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 368, - "y": 21, - "w": 24, - "h": 24 - } - }, - { - "filename": "gracidea", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 392, - "y": 20, - "w": 24, - "h": 24 - } - }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 416, - "y": 20, - "w": 15, - "h": 23 - } - }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 416, - "y": 43, - "w": 15, - "h": 22 - } - }, - { - "filename": "clefairy_doll", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 392, - "y": 44, - "w": 24, - "h": 23 - } - }, - { - "filename": "eviolite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 416, - "y": 65, - "w": 15, - "h": 15 - } - }, - { - "filename": "revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 - }, - "frame": { - "x": 417, - "y": 0, - "w": 12, - "h": 17 - } - }, - { - "filename": "calcium", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 29, - "y": 29, - "w": 16, - "h": 24 - } - }, - { - "filename": "carbos", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 29, - "y": 53, - "w": 16, - "h": 24 - } - }, - { - "filename": "catching_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 29, - "y": 77, - "w": 21, - "h": 24 - } - }, - { - "filename": "elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 45, - "y": 27, - "w": 18, - "h": 24 - } - }, - { - "filename": "coin_case", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 63, - "y": 28, - "w": 24, - "h": 23 - } - }, - { - "filename": "grip_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 45, - "y": 51, - "w": 24, - "h": 24 - } - }, - { - "filename": "expert_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 23 - }, - "frame": { - "x": 87, - "y": 28, - "w": 24, - "h": 23 - } - }, - { - "filename": "icicle_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 69, - "y": 51, - "w": 24, - "h": 24 - } - }, - { - "filename": "insect_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 50, - "y": 75, - "w": 24, - "h": 24 - } - }, - { - "filename": "iron_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 74, - "y": 75, - "w": 24, - "h": 24 - } - }, - { - "filename": "ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 93, - "y": 51, - "w": 18, - "h": 24 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 98, - "y": 75, - "w": 18, - "h": 24 - } - }, - { - "filename": "lucky_punch", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 111, - "y": 41, - "w": 24, - "h": 24 - } - }, - { - "filename": "lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 135, - "y": 41, - "w": 17, - "h": 24 - } - }, - { - "filename": "exp_balance", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 152, - "y": 46, - "w": 24, - "h": 22 - } - }, - { - "filename": "exp_share", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 176, - "y": 47, - "w": 24, - "h": 22 - } - }, - { - "filename": "hearthflame_mask", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 23 - }, - "frame": { - "x": 200, - "y": 46, - "w": 24, - "h": 23 - } - }, - { - "filename": "lucky_punch_great", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 224, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "lucky_punch_master", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 248, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "lucky_punch_ultra", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 272, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "lustrous_globe", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 296, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "meadow_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 320, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "mind_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 344, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "muscle_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 368, - "y": 45, - "w": 24, - "h": 24 - } - }, - { - "filename": "ability_capsule", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 9, - "w": 24, - "h": 14 - }, - "frame": { - "x": 392, - "y": 67, - "w": 24, - "h": 14 - } - }, - { - "filename": "pixie_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 116, - "y": 65, - "w": 24, - "h": 24 - } - }, - { - "filename": "choice_specs", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 116, - "y": 89, - "w": 24, - "h": 18 - } - }, - { - "filename": "salac_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 140, - "y": 68, - "w": 24, - "h": 24 - } - }, - { - "filename": "dragon_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 24, - "h": 18 - }, - "frame": { - "x": 140, - "y": 92, - "w": 24, - "h": 18 - } - }, - { - "filename": "scanner", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 164, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "silk_scarf", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 188, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "sky_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 212, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "splash_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 236, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "spooky_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 260, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "stone_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 284, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "sun_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 308, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "toxic_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 332, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "zap_plate", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 356, - "y": 69, - "w": 24, - "h": 24 - } - }, - { - "filename": "golden_net", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 21 - }, - "frame": { - "x": 164, - "y": 93, - "w": 24, - "h": 21 - } - }, - { - "filename": "leppa_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 188, - "y": 93, - "w": 24, - "h": 23 - } - }, - { - "filename": "scope_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 212, - "y": 93, - "w": 24, - "h": 23 - } - }, - { - "filename": "twisted_spoon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 236, - "y": 93, - "w": 24, - "h": 23 - } - }, - { - "filename": "berry_pouch", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 260, - "y": 93, - "w": 23, - "h": 23 - } - }, - { - "filename": "dynamax_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 23 - }, - "frame": { - "x": 283, - "y": 93, - "w": 23, - "h": 23 - } - }, - { - "filename": "griseous_core", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 306, - "y": 93, - "w": 23, - "h": 23 - } - }, - { - "filename": "kings_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 329, - "y": 93, - "w": 23, - "h": 24 - } - }, - { - "filename": "reveal_glass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 352, - "y": 93, - "w": 23, - "h": 24 - } - }, - { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 416, - "y": 80, - "w": 15, - "h": 15 - } - }, - { - "filename": "hp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 375, - "y": 93, - "w": 16, - "h": 24 - } - }, - { - "filename": "leek", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 391, - "y": 81, - "w": 23, - "h": 23 - } - }, - { - "filename": "max_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 414, - "y": 95, - "w": 17, - "h": 24 - } - }, - { - "filename": "amulet_coin", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 23, - "h": 21 - }, - "frame": { - "x": 391, - "y": 104, - "w": 23, - "h": 21 - } - }, - { - "filename": "super_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 414, - "y": 119, - "w": 17, - "h": 24 - } - }, - { - "filename": "icy_reins_of_unity", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 50, - "y": 99, - "w": 24, - "h": 20 - } - }, - { - "filename": "metal_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 74, - "y": 99, - "w": 24, - "h": 20 - } - }, - { - "filename": "berry_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 18, - "h": 22 - }, - "frame": { - "x": 98, - "y": 99, - "w": 18, - "h": 22 - } - }, - { - "filename": "peat_block", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 116, - "y": 107, - "w": 24, - "h": 22 - } - }, - { - "filename": "quick_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 140, - "y": 110, - "w": 24, - "h": 20 - } - }, - { - "filename": "rusted_shield", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 24, - "h": 20 - }, - "frame": { - "x": 164, - "y": 114, - "w": 24, - "h": 20 - } - }, - { - "filename": "sacred_ash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 188, - "y": 116, - "w": 24, - "h": 20 - } - }, - { - "filename": "shadow_reins_of_unity", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 212, - "y": 116, - "w": 24, - "h": 20 - } - }, - { - "filename": "soft_sand", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 236, - "y": 116, - "w": 24, - "h": 20 - } - }, - { - "filename": "auspicious_armor", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 21 - }, - "frame": { - "x": 260, - "y": 116, - "w": 23, - "h": 21 - } - }, - { - "filename": "healing_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 22 - }, - "frame": { - "x": 283, - "y": 116, - "w": 23, - "h": 22 - } - }, - { - "filename": "macho_brace", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 306, - "y": 116, - "w": 23, - "h": 23 - } - }, - { - "filename": "rare_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 329, - "y": 117, - "w": 23, - "h": 23 - } - }, - { - "filename": "rarer_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 352, - "y": 117, - "w": 23, - "h": 23 - } - }, - { - "filename": "iron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 375, - "y": 117, - "w": 16, - "h": 24 - } - }, - { - "filename": "binding_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 391, - "y": 125, - "w": 23, - "h": 20 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 414, - "y": 143, - "w": 17, - "h": 23 - } - }, - { - "filename": "max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 39, - "y": 119, - "w": 22, - "h": 24 - } - }, - { - "filename": "black_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 61, - "y": 119, - "w": 22, - "h": 23 - } - }, - { - "filename": "bug_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 39, - "y": 143, - "w": 22, - "h": 23 - } - }, - { - "filename": "dark_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 39, - "y": 166, - "w": 22, - "h": 23 - } - }, - { - "filename": "dragon_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 61, - "y": 142, - "w": 22, - "h": 23 - } - }, - { - "filename": "electric_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 39, - "y": 189, - "w": 22, - "h": 23 - } - }, - { - "filename": "fairy_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 61, - "y": 165, - "w": 22, - "h": 23 - } - }, - { - "filename": "fighting_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 39, - "y": 212, - "w": 22, - "h": 23 - } - }, - { - "filename": "fire_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 61, - "y": 188, - "w": 22, - "h": 23 - } - }, - { - "filename": "fire_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 61, - "y": 211, - "w": 22, - "h": 23 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 44, - "y": 235, - "w": 18, - "h": 24 - } - }, - { - "filename": "oval_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 62, - "y": 234, - "w": 21, - "h": 24 - } - }, - { - "filename": "max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 44, - "y": 259, - "w": 18, - "h": 24 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 62, - "y": 258, - "w": 21, - "h": 24 - } - }, - { - "filename": "max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 44, - "y": 283, - "w": 18, - "h": 24 - } - }, - { - "filename": "dragon_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 62, - "y": 282, - "w": 21, - "h": 23 - } - }, - { - "filename": "red_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 44, - "y": 307, - "w": 20, - "h": 24 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 64, - "y": 305, - "w": 22, - "h": 23 - } - }, - { - "filename": "silver_powder", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 24, - "h": 15 - }, - "frame": { - "x": 44, - "y": 331, - "w": 24, - "h": 15 - } - }, - { - "filename": "ghost_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 45, - "y": 346, - "w": 22, - "h": 23 - } - }, - { - "filename": "grass_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 46, - "y": 369, - "w": 22, - "h": 23 - } - }, - { - "filename": "bug_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 48, - "y": 392, - "w": 22, - "h": 22 - } - }, { "filename": "douse_drive", "rotated": false, @@ -3195,1020 +1368,12 @@ "h": 17 }, "frame": { - "x": 69, - "y": 414, + "x": 213, + "y": 32, "w": 23, "h": 17 } }, - { - "filename": "apicot_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 68, - "y": 328, - "w": 19, - "h": 20 - } - }, - { - "filename": "berry_juice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 21 - }, - "frame": { - "x": 67, - "y": 348, - "w": 22, - "h": 21 - } - }, - { - "filename": "ground_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 68, - "y": 369, - "w": 22, - "h": 23 - } - }, - { - "filename": "charcoal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 70, - "y": 392, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 121, - "w": 22, - "h": 23 - } - }, - { - "filename": "never_melt_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 144, - "w": 22, - "h": 23 - } - }, - { - "filename": "normal_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 167, - "w": 22, - "h": 23 - } - }, - { - "filename": "petaya_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 190, - "w": 22, - "h": 23 - } - }, - { - "filename": "poison_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 213, - "w": 22, - "h": 23 - } - }, - { - "filename": "psychic_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 236, - "w": 22, - "h": 23 - } - }, - { - "filename": "reaper_cloth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 259, - "w": 22, - "h": 23 - } - }, - { - "filename": "rock_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 83, - "y": 282, - "w": 22, - "h": 23 - } - }, - { - "filename": "lansat_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 86, - "y": 305, - "w": 21, - "h": 23 - } - }, - { - "filename": "big_nugget", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 87, - "y": 328, - "w": 20, - "h": 20 - } - }, - { - "filename": "dawn_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 21 - }, - "frame": { - "x": 89, - "y": 348, - "w": 20, - "h": 21 - } - }, - { - "filename": "leaf_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 90, - "y": 369, - "w": 21, - "h": 23 - } - }, - { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 92, - "y": 392, - "w": 20, - "h": 23 - } - }, - { - "filename": "mega_bracelet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 16 - }, - "frame": { - "x": 92, - "y": 415, - "w": 20, - "h": 16 - } - }, - { - "filename": "rusted_sword", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 22 - }, - "frame": { - "x": 105, - "y": 129, - "w": 23, - "h": 22 - } - }, - { - "filename": "steel_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 105, - "y": 151, - "w": 22, - "h": 23 - } - }, - { - "filename": "stellar_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 105, - "y": 174, - "w": 22, - "h": 23 - } - }, - { - "filename": "water_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 105, - "y": 197, - "w": 22, - "h": 23 - } - }, - { - "filename": "wide_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 105, - "y": 220, - "w": 22, - "h": 23 - } - }, - { - "filename": "dark_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 105, - "y": 243, - "w": 22, - "h": 22 - } - }, - { - "filename": "dire_hit", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 105, - "y": 265, - "w": 22, - "h": 22 - } - }, - { - "filename": "relic_crown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 18 - }, - "frame": { - "x": 105, - "y": 287, - "w": 23, - "h": 18 - } - }, - { - "filename": "sharp_beak", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 107, - "y": 305, - "w": 21, - "h": 23 - } - }, - { - "filename": "deep_sea_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 107, - "y": 328, - "w": 22, - "h": 20 - } - }, - { - "filename": "deep_sea_tooth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 109, - "y": 348, - "w": 22, - "h": 21 - } - }, - { - "filename": "whipped_dream", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 111, - "y": 369, - "w": 21, - "h": 23 - } - }, - { - "filename": "dna_splicers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 112, - "y": 392, - "w": 22, - "h": 22 - } - }, - { - "filename": "shock_drive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 112, - "y": 414, - "w": 23, - "h": 17 - } - }, - { - "filename": "moon_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 128, - "y": 130, - "w": 23, - "h": 21 - } - }, - { - "filename": "dragon_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 151, - "w": 22, - "h": 22 - } - }, - { - "filename": "electirizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 173, - "w": 22, - "h": 22 - } - }, - { - "filename": "electric_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 195, - "w": 22, - "h": 22 - } - }, - { - "filename": "enigma_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 217, - "w": 22, - "h": 22 - } - }, - { - "filename": "fairy_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 239, - "w": 22, - "h": 22 - } - }, - { - "filename": "fighting_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 127, - "y": 261, - "w": 22, - "h": 22 - } - }, - { - "filename": "fire_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 128, - "y": 283, - "w": 22, - "h": 22 - } - }, - { - "filename": "flying_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 128, - "y": 305, - "w": 22, - "h": 22 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 129, - "y": 327, - "w": 21, - "h": 21 - } - }, - { - "filename": "flying_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 20, - "h": 21 - }, - "frame": { - "x": 131, - "y": 348, - "w": 20, - "h": 21 - } - }, - { - "filename": "sachet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 132, - "y": 369, - "w": 18, - "h": 23 - } - }, - { - "filename": "ganlon_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 134, - "y": 392, - "w": 22, - "h": 22 - } - }, - { - "filename": "wise_glasses", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 135, - "y": 414, - "w": 23, - "h": 17 - } - }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 150, - "y": 369, - "w": 17, - "h": 23 - } - }, - { - "filename": "ghost_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 156, - "y": 392, - "w": 22, - "h": 22 - } - }, { "filename": "everstone", "rotated": false, @@ -4224,14 +1389,14 @@ "h": 17 }, "frame": { - "x": 158, - "y": 414, + "x": 236, + "y": 32, "w": 20, "h": 17 } }, { - "filename": "coupon", + "filename": "shock_drive", "rotated": false, "trimmed": true, "sourceSize": { @@ -4240,208 +1405,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 7, + "y": 8, "w": 23, - "h": 19 + "h": 17 }, "frame": { - "x": 151, - "y": 134, + "x": 256, + "y": 32, "w": 23, - "h": 19 + "h": 17 } }, { - "filename": "grass_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 153, - "w": 22, - "h": 22 - } - }, - { - "filename": "ground_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 175, - "w": 22, - "h": 22 - } - }, - { - "filename": "guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 197, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 219, - "w": 22, - "h": 22 - } - }, - { - "filename": "ice_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 149, - "y": 241, - "w": 22, - "h": 22 - } - }, - { - "filename": "fairy_feather", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 20 - }, - "frame": { - "x": 149, - "y": 263, - "w": 22, - "h": 20 - } - }, - { - "filename": "magmarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 150, - "y": 283, - "w": 22, - "h": 22 - } - }, - { - "filename": "mini_black_hole", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 150, - "y": 305, - "w": 22, - "h": 22 - } - }, - { - "filename": "liechi_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 150, - "y": 327, - "w": 22, - "h": 21 - } - }, - { - "filename": "n_lunarizer", + "filename": "wise_glasses", "rotated": false, "trimmed": true, "sourceSize": { @@ -4450,19 +1426,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 6, + "y": 8, "w": 23, - "h": 21 + "h": 17 }, "frame": { - "x": 151, - "y": 348, + "x": 279, + "y": 32, "w": 23, - "h": 21 + "h": 17 } }, { - "filename": "super_potion", + "filename": "baton", "rotated": false, "trimmed": true, "sourceSize": { @@ -4470,20 +1446,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 + "x": 7, + "y": 7, + "w": 18, + "h": 18 }, "frame": { - "x": 167, - "y": 369, - "w": 17, - "h": 23 + "x": 302, + "y": 32, + "w": 18, + "h": 18 } }, { - "filename": "max_repel", + "filename": "candy", "rotated": false, "trimmed": true, "sourceSize": { @@ -4491,20 +1467,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 + "x": 7, + "y": 11, + "w": 18, + "h": 18 }, "frame": { - "x": 178, - "y": 392, - "w": 16, - "h": 24 + "x": 320, + "y": 32, + "w": 18, + "h": 18 } }, { - "filename": "candy_overlay", + "filename": "choice_specs", "rotated": false, "trimmed": true, "sourceSize": { @@ -4512,20 +1488,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 12, - "w": 16, - "h": 15 + "x": 4, + "y": 8, + "w": 24, + "h": 18 }, "frame": { - "x": 178, - "y": 416, - "w": 16, - "h": 15 + "x": 338, + "y": 32, + "w": 24, + "h": 18 } }, { - "filename": "pp_max", + "filename": "dark_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -4533,20 +1509,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 + "x": 7, + "y": 7, + "w": 18, + "h": 18 }, "frame": { - "x": 171, - "y": 153, - "w": 16, - "h": 24 + "x": 362, + "y": 32, + "w": 18, + "h": 18 } }, { - "filename": "pp_up", + "filename": "dragon_scale", "rotated": false, "trimmed": true, "sourceSize": { @@ -4554,20 +1530,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 + "x": 4, + "y": 8, + "w": 24, + "h": 18 }, "frame": { - "x": 171, - "y": 177, - "w": 16, - "h": 24 + "x": 380, + "y": 32, + "w": 24, + "h": 18 } }, { - "filename": "protein", + "filename": "flame_orb", "rotated": false, "trimmed": true, "sourceSize": { @@ -4575,62 +1551,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 + "x": 7, + "y": 7, + "w": 18, + "h": 18 }, "frame": { - "x": 171, - "y": 201, - "w": 16, - "h": 24 + "x": 404, + "y": 32, + "w": 18, + "h": 18 } }, { - "filename": "repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 171, - "y": 225, - "w": 16, - "h": 24 - } - }, - { - "filename": "super_repel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 171, - "y": 249, - "w": 16, - "h": 24 - } - }, - { - "filename": "abomasite", + "filename": "mystery_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -4641,395 +1575,17 @@ "x": 8, "y": 8, "w": 16, - "h": 16 + "h": 18 }, "frame": { - "x": 174, - "y": 137, + "x": 0, + "y": 46, "w": 16, - "h": 16 + "h": 18 } }, { - "filename": "golden_mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 190, - "y": 136, - "w": 23, - "h": 19 - } - }, - { - "filename": "mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 213, - "y": 136, - "w": 23, - "h": 19 - } - }, - { - "filename": "n_solarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 236, - "y": 136, - "w": 23, - "h": 21 - } - }, - { - "filename": "reviver_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 259, - "y": 137, - "w": 23, - "h": 20 - } - }, - { - "filename": "moon_flute", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "normal_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 177, - "w": 22, - "h": 22 - } - }, - { - "filename": "poison_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 209, - "y": 155, - "w": 22, - "h": 22 - } - }, - { - "filename": "protector", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 199, - "w": 22, - "h": 22 - } - }, - { - "filename": "psychic_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 209, - "y": 177, - "w": 22, - "h": 22 - } - }, - { - "filename": "rock_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 221, - "w": 22, - "h": 22 - } - }, - { - "filename": "scroll_of_darkness", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 209, - "y": 199, - "w": 22, - "h": 22 - } - }, - { - "filename": "scroll_of_waters", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 187, - "y": 243, - "w": 22, - "h": 22 - } - }, - { - "filename": "shed_shell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 209, - "y": 221, - "w": 22, - "h": 22 - } - }, - { - "filename": "starf_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 209, - "y": 243, - "w": 22, - "h": 22 - } - }, - { - "filename": "pair_of_tickets", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 282, - "y": 138, - "w": 23, - "h": 19 - } - }, - { - "filename": "shell_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 23, - "h": 20 - }, - "frame": { - "x": 305, - "y": 139, - "w": 23, - "h": 20 - } - }, - { - "filename": "wellspring_mask", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 21 - }, - "frame": { - "x": 328, - "y": 140, - "w": 23, - "h": 21 - } - }, - { - "filename": "steel_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 351, - "y": 140, - "w": 22, - "h": 22 - } - }, - { - "filename": "razor_fang", + "filename": "light_ball", "rotated": false, "trimmed": true, "sourceSize": { @@ -5038,712 +1594,19 @@ }, "spriteSourceSize": { "x": 7, - "y": 6, + "y": 7, "w": 18, - "h": 20 + "h": 18 }, "frame": { - "x": 373, - "y": 141, + "x": 16, + "y": 47, "w": 18, - "h": 20 + "h": 18 } }, { - "filename": "sun_flute", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 231, - "y": 157, - "w": 22, - "h": 22 - } - }, - { - "filename": "thick_club", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 231, - "y": 179, - "w": 22, - "h": 22 - } - }, - { - "filename": "thunder_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 253, - "y": 157, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_bug", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 231, - "y": 201, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_dark", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 253, - "y": 179, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_dragon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 275, - "y": 157, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_electric", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 231, - "y": 223, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fairy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 253, - "y": 201, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fighting", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 275, - "y": 179, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_fire", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 253, - "y": 223, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_flying", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 275, - "y": 201, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ghost", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 275, - "y": 223, - "w": 22, - "h": 22 - } - }, - { - "filename": "sweet_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 231, - "y": 245, - "w": 22, - "h": 21 - } - }, - { - "filename": "syrupy_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 253, - "y": 245, - "w": 22, - "h": 21 - } - }, - { - "filename": "tart_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 275, - "y": 245, - "w": 22, - "h": 21 - } - }, - { - "filename": "black_sludge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 391, - "y": 145, - "w": 22, - "h": 19 - } - }, - { - "filename": "tm_grass", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 297, - "y": 159, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ground", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 297, - "y": 181, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 297, - "y": 203, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_normal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 297, - "y": 225, - "w": 22, - "h": 22 - } - }, - { - "filename": "blunder_policy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 19 - }, - "frame": { - "x": 297, - "y": 247, - "w": 22, - "h": 19 - } - }, - { - "filename": "tm_poison", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 319, - "y": 161, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_psychic", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 319, - "y": 183, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 319, - "y": 205, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_steel", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 319, - "y": 227, - "w": 22, - "h": 22 - } - }, - { - "filename": "dubious_disc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 319, - "y": 249, - "w": 22, - "h": 19 - } - }, - { - "filename": "tm_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 341, - "y": 162, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_memory", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 341, - "y": 184, - "w": 22, - "h": 22 - } - }, - { - "filename": "water_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 341, - "y": 206, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_accuracy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 341, - "y": 228, - "w": 22, - "h": 22 - } - }, - { - "filename": "tera_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 341, - "y": 250, - "w": 22, - "h": 20 - } - }, - { - "filename": "unknown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 363, - "y": 162, - "w": 16, - "h": 24 - } - }, - { - "filename": "zinc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 363, - "y": 186, - "w": 16, - "h": 24 - } - }, - { - "filename": "hard_meteorite", + "filename": "light_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -5752,309 +1615,15 @@ }, "spriteSourceSize": { "x": 7, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 363, - "y": 210, - "w": 20, - "h": 22 - } - }, - { - "filename": "sitrus_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 363, - "y": 232, - "w": 20, - "h": 22 - } - }, - { - "filename": "blue_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 363, - "y": 254, - "w": 20, - "h": 20 - } - }, - { - "filename": "x_attack", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 379, - "y": 164, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_defense", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 379, - "y": 186, - "w": 22, - "h": 22 - } - }, - { - "filename": "lock_capsule", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 383, - "y": 208, - "w": 19, - "h": 22 - } - }, - { - "filename": "metal_coat", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 19, - "h": 22 - }, - "frame": { - "x": 383, - "y": 230, - "w": 19, - "h": 22 - } - }, - { - "filename": "x_sp_atk", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 383, - "y": 252, - "w": 22, - "h": 22 - } - }, - { - "filename": "x_sp_def", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 401, - "y": 166, - "w": 22, - "h": 22 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 401, - "y": 188, - "w": 20, - "h": 20 - } - }, - { - "filename": "x_speed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 402, - "y": 208, - "w": 22, - "h": 22 - } - }, - { - "filename": "metronome", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 402, - "y": 230, - "w": 17, - "h": 22 - } - }, - { - "filename": "soothe_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 405, - "y": 252, - "w": 17, - "h": 22 - } - }, - { - "filename": "upgrade", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, "y": 7, - "w": 22, - "h": 19 + "w": 18, + "h": 18 }, "frame": { - "x": 187, - "y": 265, - "w": 22, - "h": 19 - } - }, - { - "filename": "metal_alloy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 209, - "y": 265, - "w": 21, - "h": 19 + "x": 34, + "y": 47, + "w": 18, + "h": 18 } }, { @@ -6072,8 +1641,8 @@ "h": 18 }, "frame": { - "x": 230, - "y": 266, + "x": 52, + "y": 47, "w": 21, "h": 18 } @@ -6093,14 +1662,14 @@ "h": 18 }, "frame": { - "x": 251, - "y": 266, + "x": 73, + "y": 47, "w": 21, "h": 18 } }, { - "filename": "poison_barb", + "filename": "toxic_orb", "rotated": false, "trimmed": true, "sourceSize": { @@ -6108,79 +1677,37 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 272, - "y": 266, - "w": 21, - "h": 21 - } - }, - { - "filename": "shiny_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 293, - "y": 266, - "w": 21, - "h": 21 - } - }, - { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 314, - "y": 268, - "w": 21, - "h": 21 - } - }, - { - "filename": "lum_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, + "x": 7, "y": 7, - "w": 20, - "h": 19 + "w": 18, + "h": 18 }, "frame": { - "x": 335, - "y": 270, - "w": 20, - "h": 19 + "x": 94, + "y": 47, + "w": 18, + "h": 18 + } + }, + { + "filename": "relic_crown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 18 + }, + "frame": { + "x": 112, + "y": 48, + "w": 23, + "h": 18 } }, { @@ -6198,8 +1725,8 @@ "h": 18 }, "frame": { - "x": 355, - "y": 274, + "x": 135, + "y": 49, "w": 21, "h": 18 } @@ -6219,14 +1746,14 @@ "h": 18 }, "frame": { - "x": 376, - "y": 274, + "x": 156, + "y": 49, "w": 21, "h": 18 } }, { - "filename": "magnet", + "filename": "wl_ability_urge", "rotated": false, "trimmed": true, "sourceSize": { @@ -6235,166 +1762,250 @@ }, "spriteSourceSize": { "x": 6, - "y": 6, + "y": 8, "w": 20, - "h": 20 + "h": 18 + }, + "frame": { + "x": 177, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_antidote", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 197, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_awakening", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 217, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_burn_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 237, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_custom_spliced", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 257, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_custom_thief", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 277, + "y": 49, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 297, + "y": 50, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 317, + "y": 50, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 337, + "y": 50, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 357, + "y": 50, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 377, + "y": 50, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 }, "frame": { "x": 397, - "y": 274, + "y": 50, "w": 20, - "h": 20 + "h": 18 } }, { - "filename": "relic_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 15, - "h": 11 - }, - "frame": { - "x": 172, - "y": 273, - "w": 15, - "h": 11 - } - }, - { - "filename": "mb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 172, - "y": 284, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 192, - "y": 284, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 172, - "y": 304, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb_silver", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 212, - "y": 284, - "w": 20, - "h": 20 - } - }, - { - "filename": "quick_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 172, - "y": 324, - "w": 19, - "h": 21 - } - }, - { - "filename": "rb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 192, - "y": 304, - "w": 20, - "h": 20 - } - }, - { - "filename": "smooth_meteorite", + "filename": "oval_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -6403,19 +2014,607 @@ }, "spriteSourceSize": { "x": 7, - "y": 6, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 417, + "y": 50, + "w": 18, + "h": 19 + } + }, + { + "filename": "wl_ice_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, "w": 20, + "h": 18 + }, + "frame": { + "x": 0, + "y": 65, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_item_drop", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 20, + "y": 65, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_item_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 40, + "y": 65, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 60, + "y": 65, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 80, + "y": 65, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 100, + "y": 66, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 120, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_paralyze_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 140, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 160, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_reset_urge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 180, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 200, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "wl_super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 18 + }, + "frame": { + "x": 220, + "y": 67, + "w": 20, + "h": 18 + } + }, + { + "filename": "big_mushroom", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 19 + }, + "frame": { + "x": 240, + "y": 67, + "w": 19, + "h": 19 + } + }, + { + "filename": "black_sludge", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 259, + "y": 67, + "w": 22, + "h": 19 + } + }, + { + "filename": "blunder_policy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 19 + }, + "frame": { + "x": 281, + "y": 68, + "w": 22, + "h": 19 + } + }, + { + "filename": "coupon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 303, + "y": 68, + "w": 23, + "h": 19 + } + }, + { + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 326, + "y": 68, + "w": 22, + "h": 19 + } + }, + { + "filename": "golden_mystic_ticket", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 348, + "y": 68, + "w": 23, + "h": 19 + } + }, + { + "filename": "lum_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 371, + "y": 68, + "w": 20, + "h": 19 + } + }, + { + "filename": "metal_alloy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 21, + "h": 19 + }, + "frame": { + "x": 391, + "y": 68, + "w": 21, + "h": 19 + } + }, + { + "filename": "miracle_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 19, + "h": 19 + }, + "frame": { + "x": 412, + "y": 69, + "w": 19, + "h": 19 + } + }, + { + "filename": "mystic_ticket", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 0, + "y": 83, + "w": 23, + "h": 19 + } + }, + { + "filename": "pair_of_tickets", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 23, + "y": 83, + "w": 23, + "h": 19 + } + }, + { + "filename": "power_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 46, + "y": 83, + "w": 20, + "h": 19 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 66, + "y": 83, + "w": 20, + "h": 19 + } + }, + { + "filename": "upgrade", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 86, + "y": 84, + "w": 22, + "h": 19 + } + }, + { + "filename": "white_herb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 108, + "y": 85, + "w": 20, + "h": 19 + } + }, + { + "filename": "apicot_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, "h": 20 }, "frame": { - "x": 232, - "y": 284, - "w": 20, + "x": 128, + "y": 85, + "w": 19, "h": 20 } }, { - "filename": "strange_ball", + "filename": "big_nugget", "rotated": false, "trimmed": true, "sourceSize": { @@ -6429,14 +2628,14 @@ "h": 20 }, "frame": { - "x": 252, - "y": 284, + "x": 147, + "y": 85, "w": 20, "h": 20 } }, { - "filename": "spell_tag", + "filename": "binding_band", "rotated": false, "trimmed": true, "sourceSize": { @@ -6444,20 +2643,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, + "x": 5, "y": 6, - "w": 19, - "h": 21 + "w": 23, + "h": 20 }, "frame": { - "x": 191, - "y": 324, - "w": 19, - "h": 21 + "x": 167, + "y": 85, + "w": 23, + "h": 20 } }, { - "filename": "ub", + "filename": "blue_orb", "rotated": false, "trimmed": true, "sourceSize": { @@ -6471,8 +2670,8 @@ "h": 20 }, "frame": { - "x": 212, - "y": 304, + "x": 190, + "y": 85, "w": 20, "h": 20 } @@ -6493,11 +2692,137 @@ }, "frame": { "x": 210, - "y": 324, + "y": 85, "w": 19, "h": 20 } }, + { + "filename": "chipped_pot", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 26, + "h": 20 + }, + "frame": { + "x": 229, + "y": 86, + "w": 26, + "h": 20 + } + }, + { + "filename": "cracked_pot", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 26, + "h": 20 + }, + "frame": { + "x": 255, + "y": 86, + "w": 26, + "h": 20 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 281, + "y": 87, + "w": 22, + "h": 20 + } + }, + { + "filename": "fairy_feather", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 20 + }, + "frame": { + "x": 303, + "y": 87, + "w": 22, + "h": 20 + } + }, + { + "filename": "gb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 325, + "y": 87, + "w": 20, + "h": 20 + } + }, + { + "filename": "golden_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 345, + "y": 87, + "w": 17, + "h": 20 + } + }, { "filename": "hard_stone", "rotated": false, @@ -6513,14 +2838,14 @@ "h": 20 }, "frame": { - "x": 232, - "y": 304, + "x": 362, + "y": 87, "w": 19, "h": 20 } }, { - "filename": "power_herb", + "filename": "icy_reins_of_unity", "rotated": false, "trimmed": true, "sourceSize": { @@ -6528,20 +2853,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 4, "y": 7, - "w": 20, - "h": 19 + "w": 24, + "h": 20 }, "frame": { - "x": 229, - "y": 324, - "w": 20, - "h": 19 + "x": 381, + "y": 87, + "w": 24, + "h": 20 } }, { - "filename": "razor_claw", + "filename": "legend_plate", "rotated": false, "trimmed": true, "sourceSize": { @@ -6549,522 +2874,18 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 251, - "y": 304, - "w": 20, - "h": 19 - } - }, - { - "filename": "malicious_armor", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 18 - }, - "frame": { - "x": 272, - "y": 287, - "w": 20, - "h": 18 - } - }, - { - "filename": "white_herb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 292, - "y": 287, - "w": 20, - "h": 19 - } - }, - { - "filename": "wl_ability_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 271, - "y": 305, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_antidote", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 291, - "y": 306, - "w": 20, - "h": 18 - } - }, - { - "filename": "big_mushroom", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, + "x": 3, "y": 6, - "w": 19, - "h": 19 - }, - "frame": { - "x": 174, - "y": 345, - "w": 19, - "h": 19 - } - }, - { - "filename": "golden_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, + "w": 25, "h": 20 }, "frame": { - "x": 193, - "y": 345, - "w": 17, + "x": 405, + "y": 88, + "w": 25, "h": 20 } }, - { - "filename": "miracle_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 19, - "h": 19 - }, - "frame": { - "x": 210, - "y": 344, - "w": 19, - "h": 19 - } - }, - { - "filename": "wl_awakening", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 229, - "y": 343, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_burn_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 312, - "y": 289, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_custom_spliced", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 332, - "y": 289, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_custom_thief", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 311, - "y": 307, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 331, - "y": 307, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 352, - "y": 292, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 372, - "y": 292, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 351, - "y": 310, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_guard_spec", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 371, - "y": 310, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 392, - "y": 294, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_ice_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 391, - "y": 312, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_item_drop", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 411, - "y": 312, - "w": 20, - "h": 18 - } - }, - { - "filename": "baton", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 412, - "y": 294, - "w": 18, - "h": 18 - } - }, - { - "filename": "wl_item_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 184, - "y": 365, - "w": 20, - "h": 18 - } - }, - { - "filename": "candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 11, - "w": 18, - "h": 18 - }, - "frame": { - "x": 204, - "y": 365, - "w": 18, - "h": 18 - } - }, - { - "filename": "wl_max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 194, - "y": 383, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 194, - "y": 401, - "w": 20, - "h": 18 - } - }, { "filename": "lucky_egg", "rotated": false, @@ -7080,14 +2901,14 @@ "h": 20 }, "frame": { - "x": 214, - "y": 383, + "x": 0, + "y": 102, "w": 17, "h": 20 } }, { - "filename": "dark_stone", + "filename": "magnet", "rotated": false, "trimmed": true, "sourceSize": { @@ -7095,20 +2916,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 + "x": 6, + "y": 6, + "w": 20, + "h": 20 }, "frame": { - "x": 214, - "y": 403, - "w": 18, - "h": 18 + "x": 17, + "y": 102, + "w": 20, + "h": 20 } }, { - "filename": "oval_stone", + "filename": "malicious_armor", "rotated": false, "trimmed": true, "sourceSize": { @@ -7116,20 +2937,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 19 + "x": 5, + "y": 6, + "w": 22, + "h": 20 }, "frame": { - "x": 222, - "y": 363, - "w": 18, - "h": 19 + "x": 37, + "y": 102, + "w": 22, + "h": 20 } }, { - "filename": "flame_orb", + "filename": "mb", "rotated": false, "trimmed": true, "sourceSize": { @@ -7137,20 +2958,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 + "x": 6, + "y": 6, + "w": 20, + "h": 20 }, "frame": { - "x": 231, - "y": 382, - "w": 18, - "h": 18 + "x": 59, + "y": 102, + "w": 20, + "h": 20 } }, { - "filename": "light_ball", + "filename": "metal_powder", "rotated": false, "trimmed": true, "sourceSize": { @@ -7158,20 +2979,104 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 + "x": 4, + "y": 6, + "w": 24, + "h": 20 }, "frame": { - "x": 232, - "y": 400, - "w": 18, - "h": 18 + "x": 79, + "y": 103, + "w": 24, + "h": 20 } }, { - "filename": "light_stone", + "filename": "pb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 103, + "y": 104, + "w": 20, + "h": 20 + } + }, + { + "filename": "pb_gold", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 123, + "y": 105, + "w": 20, + "h": 20 + } + }, + { + "filename": "pb_silver", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 143, + "y": 105, + "w": 20, + "h": 20 + } + }, + { + "filename": "quick_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 24, + "h": 20 + }, + "frame": { + "x": 163, + "y": 105, + "w": 24, + "h": 20 + } + }, + { + "filename": "razor_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -7180,19 +3085,481 @@ }, "spriteSourceSize": { "x": 7, - "y": 7, + "y": 6, "w": 18, - "h": 18 + "h": 20 + }, + "frame": { + "x": 187, + "y": 105, + "w": 18, + "h": 20 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 205, + "y": 105, + "w": 20, + "h": 20 + } + }, + { + "filename": "reviver_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 8, + "w": 23, + "h": 20 + }, + "frame": { + "x": 225, + "y": 106, + "w": 23, + "h": 20 + } + }, + { + "filename": "rusted_shield", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 24, + "h": 20 + }, + "frame": { + "x": 248, + "y": 106, + "w": 24, + "h": 20 + } + }, + { + "filename": "sacred_ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 272, + "y": 107, + "w": 24, + "h": 20 + } + }, + { + "filename": "shadow_reins_of_unity", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 296, + "y": 107, + "w": 24, + "h": 20 + } + }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 320, + "y": 107, + "w": 23, + "h": 20 + } + }, + { + "filename": "smooth_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 343, + "y": 107, + "w": 20, + "h": 20 + } + }, + { + "filename": "soft_sand", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 363, + "y": 107, + "w": 24, + "h": 20 + } + }, + { + "filename": "strange_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 387, + "y": 108, + "w": 20, + "h": 20 + } + }, + { + "filename": "tera_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 407, + "y": 108, + "w": 22, + "h": 20 + } + }, + { + "filename": "ub", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 0, + "y": 122, + "w": 20, + "h": 20 + } + }, + { + "filename": "adamant_crystal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 20, + "y": 122, + "w": 23, + "h": 21 + } + }, + { + "filename": "amulet_coin", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 23, + "h": 21 + }, + "frame": { + "x": 43, + "y": 122, + "w": 23, + "h": 21 + } + }, + { + "filename": "auspicious_armor", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 21 + }, + "frame": { + "x": 66, + "y": 123, + "w": 23, + "h": 21 + } + }, + { + "filename": "berry_juice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 21 + }, + "frame": { + "x": 89, + "y": 124, + "w": 22, + "h": 21 + } + }, + { + "filename": "dawn_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 111, + "y": 125, + "w": 20, + "h": 21 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 131, + "y": 125, + "w": 22, + "h": 21 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 153, + "y": 125, + "w": 21, + "h": 21 + } + }, + { + "filename": "flying_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 20, + "h": 21 + }, + "frame": { + "x": 174, + "y": 125, + "w": 20, + "h": 21 + } + }, + { + "filename": "golden_net", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 21 + }, + "frame": { + "x": 194, + "y": 125, + "w": 24, + "h": 21 + } + }, + { + "filename": "liechi_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 218, + "y": 126, + "w": 22, + "h": 21 + } + }, + { + "filename": "mint_atk", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { "x": 240, - "y": 361, - "w": 18, - "h": 18 + "y": 126, + "w": 28, + "h": 21 } }, { - "filename": "mystery_egg", + "filename": "mint_def", "rotated": false, "trimmed": true, "sourceSize": { @@ -7200,419 +3567,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 18 - }, - "frame": { - "x": 249, - "y": 379, - "w": 16, - "h": 18 - } - }, - { - "filename": "toxic_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 250, - "y": 397, - "w": 18, - "h": 18 - } - }, - { - "filename": "relic_band", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 9, - "w": 17, - "h": 16 - }, - "frame": { - "x": 250, - "y": 415, - "w": 17, - "h": 16 - } - }, - { - "filename": "absolite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 267, - "y": 415, - "w": 16, - "h": 16 - } - }, - { - "filename": "wl_max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 251, - "y": 323, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 271, - "y": 323, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_paralyze_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 291, - "y": 324, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 311, - "y": 325, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_reset_urge", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 331, - "y": 325, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 249, - "y": 341, - "w": 20, - "h": 18 - } - }, - { - "filename": "wl_super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 18 - }, - "frame": { - "x": 269, - "y": 341, - "w": 20, - "h": 18 - } - }, - { - "filename": "aerodactylite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 351, - "y": 328, - "w": 16, - "h": 16 - } - }, - { - "filename": "aggronite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 367, - "y": 328, - "w": 16, - "h": 16 - } - }, - { - "filename": "alakazite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 258, - "y": 359, - "w": 16, - "h": 16 - } - }, - { - "filename": "altarianite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 274, - "y": 359, - "w": 16, - "h": 16 - } - }, - { - "filename": "ampharosite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 289, - "y": 342, - "w": 16, - "h": 16 - } - }, - { - "filename": "audinite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 290, - "y": 358, - "w": 16, - "h": 16 - } - }, - { - "filename": "banettite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 265, - "y": 375, - "w": 16, - "h": 16 - } - }, - { - "filename": "beedrillite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 281, - "y": 375, - "w": 16, - "h": 16 - } - }, - { - "filename": "blastoisinite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { "x": 268, - "y": 391, - "w": 16, - "h": 16 + "y": 127, + "w": 28, + "h": 21 } }, { - "filename": "blazikenite", + "filename": "mint_neutral", "rotated": false, "trimmed": true, "sourceSize": { @@ -7620,20 +3588,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { - "x": 284, - "y": 391, - "w": 16, - "h": 16 + "x": 296, + "y": 127, + "w": 28, + "h": 21 } }, { - "filename": "cameruptite", + "filename": "mint_spatk", "rotated": false, "trimmed": true, "sourceSize": { @@ -7641,20 +3609,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { - "x": 283, - "y": 407, - "w": 16, - "h": 16 + "x": 324, + "y": 127, + "w": 28, + "h": 21 } }, { - "filename": "charizardite_x", + "filename": "mint_spd", "rotated": false, "trimmed": true, "sourceSize": { @@ -7662,20 +3630,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { - "x": 297, - "y": 374, - "w": 16, - "h": 16 + "x": 352, + "y": 127, + "w": 28, + "h": 21 } }, { - "filename": "charizardite_y", + "filename": "mint_spdef", "rotated": false, "trimmed": true, "sourceSize": { @@ -7683,629 +3651,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 300, - "y": 390, - "w": 16, - "h": 16 - } - }, - { - "filename": "diancite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 383, - "y": 330, - "w": 16, - "h": 16 - } - }, - { - "filename": "galladite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 399, - "y": 330, - "w": 16, - "h": 16 - } - }, - { - "filename": "garchompite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 415, - "y": 330, - "w": 16, - "h": 16 - } - }, - { - "filename": "gardevoirite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 299, - "y": 407, - "w": 16, - "h": 16 - } - }, - { - "filename": "gengarite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 313, - "y": 343, - "w": 16, - "h": 16 - } - }, - { - "filename": "glalitite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 329, - "y": 343, - "w": 16, - "h": 16 - } - }, - { - "filename": "gyaradosite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 345, - "y": 344, - "w": 16, - "h": 16 - } - }, - { - "filename": "heracronite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 361, - "y": 344, - "w": 16, - "h": 16 - } - }, - { - "filename": "houndoominite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 377, - "y": 346, - "w": 16, - "h": 16 - } - }, - { - "filename": "kangaskhanite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 393, - "y": 346, - "w": 16, - "h": 16 - } - }, - { - "filename": "latiasite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 409, - "y": 346, - "w": 16, - "h": 16 - } - }, - { - "filename": "latiosite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 313, - "y": 359, - "w": 16, - "h": 16 - } - }, - { - "filename": "lopunnite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 329, - "y": 359, - "w": 16, - "h": 16 - } - }, - { - "filename": "lucarionite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 345, - "y": 360, - "w": 16, - "h": 16 - } - }, - { - "filename": "manectite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 361, - "y": 360, - "w": 16, - "h": 16 - } - }, - { - "filename": "mawilite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 377, - "y": 362, - "w": 16, - "h": 16 - } - }, - { - "filename": "medichamite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 393, - "y": 362, - "w": 16, - "h": 16 - } - }, - { - "filename": "metagrossite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 409, - "y": 362, - "w": 16, - "h": 16 - } - }, - { - "filename": "mewtwonite_x", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 316, - "y": 375, - "w": 16, - "h": 16 - } - }, - { - "filename": "mewtwonite_y", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 316, - "y": 391, - "w": 16, - "h": 16 - } - }, - { - "filename": "nugget", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 315, - "y": 407, - "w": 16, - "h": 16 - } - }, - { - "filename": "pidgeotite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 332, - "y": 376, - "w": 16, - "h": 16 - } - }, - { - "filename": "pinsirite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 348, - "y": 376, - "w": 16, - "h": 16 - } - }, - { - "filename": "rayquazite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 332, - "y": 392, - "w": 16, - "h": 16 - } - }, - { - "filename": "sablenite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 348, - "y": 392, - "w": 16, - "h": 16 - } - }, - { - "filename": "salamencite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 331, - "y": 408, - "w": 16, - "h": 16 - } - }, - { - "filename": "sceptilite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 347, - "y": 408, - "w": 16, - "h": 16 - } - }, - { - "filename": "scizorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 364, - "y": 378, - "w": 16, - "h": 16 - } - }, - { - "filename": "sharpedonite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 2, + "y": 5, + "w": 28, + "h": 21 }, "frame": { "x": 380, - "y": 378, - "w": 16, - "h": 16 + "y": 128, + "w": 28, + "h": 21 } }, { - "filename": "slowbronite", + "filename": "moon_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -8313,20 +3672,377 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 4, + "y": 6, + "w": 23, + "h": 21 }, "frame": { - "x": 396, - "y": 378, - "w": 16, - "h": 16 + "x": 408, + "y": 128, + "w": 23, + "h": 21 } }, { - "filename": "soul_dew", + "filename": "quick_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 0, + "y": 142, + "w": 19, + "h": 21 + } + }, + { + "filename": "n_lunarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 19, + "y": 143, + "w": 23, + "h": 21 + } + }, + { + "filename": "n_solarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 42, + "y": 143, + "w": 23, + "h": 21 + } + }, + { + "filename": "poison_barb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 65, + "y": 144, + "w": 21, + "h": 21 + } + }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 86, + "y": 145, + "w": 21, + "h": 21 + } + }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 107, + "y": 146, + "w": 19, + "h": 21 + } + }, + { + "filename": "sweet_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 126, + "y": 146, + "w": 22, + "h": 21 + } + }, + { + "filename": "syrupy_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 148, + "y": 146, + "w": 22, + "h": 21 + } + }, + { + "filename": "tart_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 170, + "y": 146, + "w": 22, + "h": 21 + } + }, + { + "filename": "wellspring_mask", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 21 + }, + "frame": { + "x": 192, + "y": 146, + "w": 23, + "h": 21 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 215, + "y": 147, + "w": 21, + "h": 21 + } + }, + { + "filename": "berry_pot", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 18, + "h": 22 + }, + "frame": { + "x": 236, + "y": 147, + "w": 18, + "h": 22 + } + }, + { + "filename": "bug_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 254, + "y": 148, + "w": 22, + "h": 22 + } + }, + { + "filename": "charcoal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 276, + "y": 148, + "w": 22, + "h": 22 + } + }, + { + "filename": "dark_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 298, + "y": 148, + "w": 22, + "h": 22 + } + }, + { + "filename": "dire_hit", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 320, + "y": 148, + "w": 22, + "h": 22 + } + }, + { + "filename": "dna_splicers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 342, + "y": 148, + "w": 22, + "h": 22 + } + }, + { + "filename": "leftovers", "rotated": false, "trimmed": true, "sourceSize": { @@ -8335,19 +4051,19 @@ }, "spriteSourceSize": { "x": 8, - "y": 8, - "w": 16, - "h": 16 + "y": 5, + "w": 15, + "h": 22 }, "frame": { "x": 364, - "y": 394, - "w": 16, - "h": 16 + "y": 148, + "w": 15, + "h": 22 } }, { - "filename": "steelixite", + "filename": "dragon_memory", "rotated": false, "trimmed": true, "sourceSize": { @@ -8355,20 +4071,230 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { - "x": 380, - "y": 394, - "w": 16, - "h": 16 + "x": 379, + "y": 149, + "w": 22, + "h": 22 } }, { - "filename": "strawberry_sweet", + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 401, + "y": 149, + "w": 22, + "h": 22 + } + }, + { + "filename": "lock_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 0, + "y": 163, + "w": 19, + "h": 22 + } + }, + { + "filename": "electric_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 19, + "y": 164, + "w": 22, + "h": 22 + } + }, + { + "filename": "enigma_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 41, + "y": 164, + "w": 22, + "h": 22 + } + }, + { + "filename": "fairy_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 63, + "y": 165, + "w": 22, + "h": 22 + } + }, + { + "filename": "fighting_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 85, + "y": 166, + "w": 22, + "h": 22 + } + }, + { + "filename": "exp_balance", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 107, + "y": 167, + "w": 24, + "h": 22 + } + }, + { + "filename": "exp_share", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 131, + "y": 167, + "w": 24, + "h": 22 + } + }, + { + "filename": "fire_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 155, + "y": 167, + "w": 22, + "h": 22 + } + }, + { + "filename": "flying_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 177, + "y": 167, + "w": 22, + "h": 22 + } + }, + { + "filename": "full_heal", "rotated": false, "trimmed": true, "sourceSize": { @@ -8377,19 +4303,166 @@ }, "spriteSourceSize": { "x": 9, - "y": 7, - "w": 16, - "h": 16 + "y": 4, + "w": 15, + "h": 23 }, "frame": { - "x": 396, - "y": 394, - "w": 16, - "h": 16 + "x": 199, + "y": 167, + "w": 15, + "h": 23 } }, { - "filename": "swampertite", + "filename": "ganlon_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 214, + "y": 168, + "w": 22, + "h": 22 + } + }, + { + "filename": "metronome", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 236, + "y": 169, + "w": 17, + "h": 22 + } + }, + { + "filename": "ghost_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 253, + "y": 170, + "w": 22, + "h": 22 + } + }, + { + "filename": "grass_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 275, + "y": 170, + "w": 22, + "h": 22 + } + }, + { + "filename": "ground_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 297, + "y": 170, + "w": 22, + "h": 22 + } + }, + { + "filename": "guard_spec", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 319, + "y": 170, + "w": 22, + "h": 22 + } + }, + { + "filename": "hard_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 341, + "y": 170, + "w": 20, + "h": 22 + } + }, + { + "filename": "soothe_bell", "rotated": false, "trimmed": true, "sourceSize": { @@ -8398,19 +4471,3694 @@ }, "spriteSourceSize": { "x": 8, - "y": 8, - "w": 16, - "h": 16 + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 361, + "y": 170, + "w": 17, + "h": 22 + } + }, + { + "filename": "healing_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 23, + "h": 22 + }, + "frame": { + "x": 378, + "y": 171, + "w": 23, + "h": 22 + } + }, + { + "filename": "ice_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 401, + "y": 171, + "w": 22, + "h": 22 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 0, + "y": 185, + "w": 19, + "h": 22 + } + }, + { + "filename": "ice_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 19, + "y": 186, + "w": 22, + "h": 22 + } + }, + { + "filename": "magmarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 41, + "y": 186, + "w": 22, + "h": 22 + } + }, + { + "filename": "mini_black_hole", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 63, + "y": 187, + "w": 22, + "h": 22 + } + }, + { + "filename": "moon_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 85, + "y": 188, + "w": 22, + "h": 22 + } + }, + { + "filename": "map", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 5, + "w": 27, + "h": 22 + }, + "frame": { + "x": 107, + "y": 189, + "w": 27, + "h": 22 + } + }, + { + "filename": "normal_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 134, + "y": 189, + "w": 22, + "h": 22 + } + }, + { + "filename": "peat_block", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 156, + "y": 189, + "w": 24, + "h": 22 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 180, + "y": 189, + "w": 17, + "h": 23 + } + }, + { + "filename": "poison_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 197, + "y": 190, + "w": 22, + "h": 22 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 219, + "y": 190, + "w": 17, + "h": 23 + } + }, + { + "filename": "protector", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 236, + "y": 192, + "w": 22, + "h": 22 + } + }, + { + "filename": "psychic_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 258, + "y": 192, + "w": 22, + "h": 22 + } + }, + { + "filename": "rock_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 280, + "y": 192, + "w": 22, + "h": 22 + } + }, + { + "filename": "rusted_sword", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 22 + }, + "frame": { + "x": 302, + "y": 192, + "w": 23, + "h": 22 + } + }, + { + "filename": "scroll_of_darkness", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 325, + "y": 192, + "w": 22, + "h": 22 + } + }, + { + "filename": "scroll_of_waters", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 347, + "y": 192, + "w": 22, + "h": 22 + } + }, + { + "filename": "shed_shell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 369, + "y": 193, + "w": 22, + "h": 22 + } + }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 391, + "y": 193, + "w": 20, + "h": 22 + } + }, + { + "filename": "starf_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 411, + "y": 193, + "w": 22, + "h": 22 + } + }, + { + "filename": "sachet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 0, + "y": 207, + "w": 18, + "h": 23 + } + }, + { + "filename": "steel_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 18, + "y": 208, + "w": 22, + "h": 22 + } + }, + { + "filename": "sun_flute", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 40, + "y": 208, + "w": 22, + "h": 22 + } + }, + { + "filename": "thick_club", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 62, + "y": 209, + "w": 22, + "h": 22 + } + }, + { + "filename": "thunder_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 84, + "y": 210, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_bug", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 106, + "y": 211, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_dark", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 128, + "y": 211, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_dragon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 150, + "y": 211, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_electric", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 172, + "y": 212, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_fairy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 194, + "y": 212, + "w": 22, + "h": 22 + } + }, + { + "filename": "mystic_water", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 23 + }, + "frame": { + "x": 216, + "y": 213, + "w": 20, + "h": 23 + } + }, + { + "filename": "tm_fighting", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 236, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_fire", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 258, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_flying", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 280, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ghost", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 302, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_grass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 324, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ground", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 346, + "y": 214, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 368, + "y": 215, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_normal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 390, + "y": 215, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_poison", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 }, "frame": { "x": 412, + "y": 215, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_psychic", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 0, + "y": 230, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 22, + "y": 230, + "w": 22, + "h": 22 + } + }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 44, + "y": 230, + "w": 17, + "h": 23 + } + }, + { + "filename": "tm_steel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 61, + "y": 231, + "w": 22, + "h": 22 + } + }, + { + "filename": "tm_water", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 83, + "y": 232, + "w": 22, + "h": 22 + } + }, + { + "filename": "water_memory", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 105, + "y": 233, + "w": 22, + "h": 22 + } + }, + { + "filename": "water_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 127, + "y": 233, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_accuracy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 149, + "y": 233, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_attack", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 171, + "y": 234, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_defense", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 193, + "y": 234, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_sp_atk", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 215, + "y": 236, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_sp_def", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 237, + "y": 236, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_speed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 259, + "y": 236, + "w": 22, + "h": 22 + } + }, + { + "filename": "berry_pouch", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 281, + "y": 236, + "w": 23, + "h": 23 + } + }, + { + "filename": "black_belt", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 304, + "y": 236, + "w": 22, + "h": 23 + } + }, + { + "filename": "bug_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 326, + "y": 236, + "w": 22, + "h": 23 + } + }, + { + "filename": "calcium", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 348, + "y": 236, + "w": 16, + "h": 24 + } + }, + { + "filename": "clefairy_doll", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 364, + "y": 237, + "w": 24, + "h": 23 + } + }, + { + "filename": "coin_case", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 388, + "y": 237, + "w": 24, + "h": 23 + } + }, + { + "filename": "dark_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 412, + "y": 237, + "w": 22, + "h": 23 + } + }, + { + "filename": "dragon_fang", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 0, + "y": 252, + "w": 21, + "h": 23 + } + }, + { + "filename": "dragon_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 21, + "y": 252, + "w": 22, + "h": 23 + } + }, + { + "filename": "dynamax_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 23 + }, + "frame": { + "x": 43, + "y": 253, + "w": 23, + "h": 23 + } + }, + { + "filename": "carbos", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 66, + "y": 253, + "w": 16, + "h": 24 + } + }, + { + "filename": "electric_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 82, + "y": 254, + "w": 22, + "h": 23 + } + }, + { + "filename": "expert_belt", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 23 + }, + "frame": { + "x": 104, + "y": 255, + "w": 24, + "h": 23 + } + }, + { + "filename": "fairy_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 128, + "y": 255, + "w": 22, + "h": 23 + } + }, + { + "filename": "lansat_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 150, + "y": 255, + "w": 21, + "h": 23 + } + }, + { + "filename": "fighting_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 171, + "y": 256, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 193, + "y": 256, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 215, + "y": 258, + "w": 22, + "h": 23 + } + }, + { + "filename": "focus_sash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 237, + "y": 258, + "w": 22, + "h": 23 + } + }, + { + "filename": "ghost_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 259, + "y": 258, + "w": 22, + "h": 23 + } + }, + { + "filename": "grass_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 281, + "y": 259, + "w": 22, + "h": 23 + } + }, + { + "filename": "griseous_core", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 303, + "y": 259, + "w": 23, + "h": 23 + } + }, + { + "filename": "ground_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 326, + "y": 259, + "w": 22, + "h": 23 + } + }, + { + "filename": "hearthflame_mask", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 23 + }, + "frame": { + "x": 348, + "y": 260, + "w": 24, + "h": 23 + } + }, + { + "filename": "ice_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 372, + "y": 260, + "w": 22, + "h": 23 + } + }, + { + "filename": "leaf_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 394, + "y": 260, + "w": 21, + "h": 23 + } + }, + { + "filename": "elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 415, + "y": 260, + "w": 18, + "h": 24 + } + }, + { + "filename": "leek", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 0, + "y": 275, + "w": 23, + "h": 23 + } + }, + { + "filename": "ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 23, + "y": 275, + "w": 18, + "h": 24 + } + }, + { + "filename": "leppa_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 41, + "y": 276, + "w": 24, + "h": 23 + } + }, + { + "filename": "macho_brace", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 65, + "y": 277, + "w": 23, + "h": 23 + } + }, + { + "filename": "hp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 88, + "y": 277, + "w": 16, + "h": 24 + } + }, + { + "filename": "never_melt_ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 104, + "y": 278, + "w": 22, + "h": 23 + } + }, + { + "filename": "normal_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 126, + "y": 278, + "w": 22, + "h": 23 + } + }, + { + "filename": "petaya_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 148, + "y": 278, + "w": 22, + "h": 23 + } + }, + { + "filename": "poison_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 170, + "y": 279, + "w": 22, + "h": 23 + } + }, + { + "filename": "psychic_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 192, + "y": 279, + "w": 22, + "h": 23 + } + }, + { + "filename": "rare_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 214, + "y": 281, + "w": 23, + "h": 23 + } + }, + { + "filename": "rarer_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 237, + "y": 281, + "w": 23, + "h": 23 + } + }, + { + "filename": "sharp_beak", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 260, + "y": 281, + "w": 21, + "h": 23 + } + }, + { + "filename": "reaper_cloth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 281, + "y": 282, + "w": 22, + "h": 23 + } + }, + { + "filename": "rock_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 303, + "y": 282, + "w": 22, + "h": 23 + } + }, + { + "filename": "steel_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 325, + "y": 282, + "w": 22, + "h": 23 + } + }, + { + "filename": "scope_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 347, + "y": 283, + "w": 24, + "h": 23 + } + }, + { + "filename": "stellar_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 371, + "y": 283, + "w": 22, + "h": 23 + } + }, + { + "filename": "water_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 393, + "y": 283, + "w": 22, + "h": 23 + } + }, + { + "filename": "full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 415, + "y": 284, + "w": 18, + "h": 24 + } + }, + { + "filename": "whipped_dream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 0, + "y": 298, + "w": 21, + "h": 23 + } + }, + { + "filename": "twisted_spoon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 21, + "y": 299, + "w": 24, + "h": 23 + } + }, + { + "filename": "iron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 45, + "y": 299, + "w": 16, + "h": 24 + } + }, + { + "filename": "wide_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 61, + "y": 300, + "w": 22, + "h": 23 + } + }, + { + "filename": "big_root", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 83, + "y": 301, + "w": 23, + "h": 24 + } + }, + { + "filename": "blank_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 106, + "y": 301, + "w": 24, + "h": 24 + } + }, + { + "filename": "catching_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 130, + "y": 301, + "w": 21, + "h": 24 + } + }, + { + "filename": "lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 151, + "y": 301, + "w": 17, + "h": 24 + } + }, + { + "filename": "choice_scarf", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 168, + "y": 302, + "w": 24, + "h": 24 + } + }, + { + "filename": "max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 192, + "y": 302, + "w": 18, + "h": 24 + } + }, + { + "filename": "draco_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 210, + "y": 304, + "w": 24, + "h": 24 + } + }, + { + "filename": "dread_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 234, + "y": 304, + "w": 24, + "h": 24 + } + }, + { + "filename": "kings_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 258, + "y": 304, + "w": 23, + "h": 24 + } + }, + { + "filename": "earth_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 281, + "y": 305, + "w": 24, + "h": 24 + } + }, + { + "filename": "fist_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 305, + "y": 305, + "w": 24, + "h": 24 + } + }, + { + "filename": "max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 329, + "y": 305, + "w": 18, + "h": 24 + } + }, + { + "filename": "flame_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 347, + "y": 306, + "w": 24, + "h": 24 + } + }, + { + "filename": "focus_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 371, + "y": 306, + "w": 24, + "h": 24 + } + }, + { + "filename": "max_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 395, + "y": 306, + "w": 17, + "h": 24 + } + }, + { + "filename": "max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 412, + "y": 308, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 0, + "y": 321, + "w": 16, + "h": 24 + } + }, + { + "filename": "golden_punch", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 16, + "y": 322, + "w": 24, + "h": 24 + } + }, + { + "filename": "gracidea", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 40, + "y": 323, + "w": 24, + "h": 24 + } + }, + { + "filename": "pp_max", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 64, + "y": 323, + "w": 16, + "h": 24 + } + }, + { + "filename": "grip_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 80, + "y": 325, + "w": 24, + "h": 24 + } + }, + { + "filename": "icicle_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 104, + "y": 325, + "w": 24, + "h": 24 + } + }, + { + "filename": "insect_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 128, + "y": 325, + "w": 24, + "h": 24 + } + }, + { + "filename": "pp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 152, + "y": 325, + "w": 16, + "h": 24 + } + }, + { + "filename": "iron_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 168, + "y": 326, + "w": 24, + "h": 24 + } + }, + { + "filename": "protein", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 192, + "y": 326, + "w": 16, + "h": 24 + } + }, + { + "filename": "lucky_punch", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 208, + "y": 328, + "w": 24, + "h": 24 + } + }, + { + "filename": "lucky_punch_great", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 232, + "y": 328, + "w": 24, + "h": 24 + } + }, + { + "filename": "lucky_punch_master", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 256, + "y": 328, + "w": 24, + "h": 24 + } + }, + { + "filename": "lucky_punch_ultra", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 280, + "y": 329, + "w": 24, + "h": 24 + } + }, + { + "filename": "lustrous_globe", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 304, + "y": 329, + "w": 24, + "h": 24 + } + }, + { + "filename": "repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 328, + "y": 329, + "w": 16, + "h": 24 + } + }, + { + "filename": "max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 344, + "y": 330, + "w": 22, + "h": 24 + } + }, + { + "filename": "meadow_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 366, + "y": 330, + "w": 24, + "h": 24 + } + }, + { + "filename": "oval_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 390, + "y": 330, + "w": 21, + "h": 24 + } + }, + { + "filename": "mind_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 411, + "y": 332, + "w": 24, + "h": 24 + } + }, + { + "filename": "super_repel", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 0, + "y": 345, + "w": 16, + "h": 24 + } + }, + { + "filename": "muscle_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 16, + "y": 346, + "w": 24, + "h": 24 + } + }, + { + "filename": "pixie_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 40, + "y": 347, + "w": 24, + "h": 24 + } + }, + { + "filename": "unknown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 64, + "y": 347, + "w": 16, + "h": 24 + } + }, + { + "filename": "red_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 20, + "h": 24 + }, + "frame": { + "x": 80, + "y": 349, + "w": 20, + "h": 24 + } + }, + { + "filename": "reveal_glass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 100, + "y": 349, + "w": 23, + "h": 24 + } + }, + { + "filename": "salac_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 123, + "y": 349, + "w": 24, + "h": 24 + } + }, + { + "filename": "shiny_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 147, + "y": 349, + "w": 21, + "h": 24 + } + }, + { + "filename": "scanner", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 168, + "y": 350, + "w": 24, + "h": 24 + } + }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 192, + "y": 350, + "w": 16, + "h": 24 + } + }, + { + "filename": "silk_scarf", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 208, + "y": 352, + "w": 24, + "h": 24 + } + }, + { + "filename": "sky_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 232, + "y": 352, + "w": 24, + "h": 24 + } + }, + { + "filename": "splash_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 256, + "y": 352, + "w": 24, + "h": 24 + } + }, + { + "filename": "spooky_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 280, + "y": 353, + "w": 24, + "h": 24 + } + }, + { + "filename": "stone_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 304, + "y": 353, + "w": 24, + "h": 24 + } + }, + { + "filename": "sun_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 328, + "y": 354, + "w": 24, + "h": 24 + } + }, + { + "filename": "super_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 352, + "y": 354, + "w": 17, + "h": 24 + } + }, + { + "filename": "toxic_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 369, + "y": 354, + "w": 24, + "h": 24 + } + }, + { + "filename": "zap_plate", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 393, + "y": 356, + "w": 24, + "h": 24 + } + }, + { + "filename": "prison_bottle", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 17, + "h": 30 + }, + "frame": { + "x": 417, + "y": 356, + "w": 17, + "h": 30 + } + }, + { + "filename": "black_augurite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 3, + "w": 22, + "h": 25 + }, + "frame": { + "x": 0, + "y": 370, + "w": 22, + "h": 25 + } + }, + { + "filename": "ability_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 23, + "h": 26 + }, + "frame": { + "x": 22, + "y": 371, + "w": 23, + "h": 26 + } + }, + { + "filename": "cornerstone_mask", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 3, + "w": 24, + "h": 26 + }, + "frame": { + "x": 45, + "y": 371, + "w": 24, + "h": 26 + } + }, + { + "filename": "linking_cord", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 27, + "h": 26 + }, + "frame": { + "x": 69, + "y": 373, + "w": 27, + "h": 26 + } + }, + { + "filename": "mystical_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 28, + "h": 26 + }, + "frame": { + "x": 96, + "y": 373, + "w": 28, + "h": 26 + } + }, + { + "filename": "galarica_wreath", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 32, + "h": 27 + }, + "frame": { + "x": 124, + "y": 373, + "w": 32, + "h": 27 + } + }, + { + "filename": "leaders_crest", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 29, + "h": 27 + }, + "frame": { + "x": 156, + "y": 374, + "w": 29, + "h": 27 + } + }, + { + "filename": "ribbon_gen1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 2, + "w": 22, + "h": 28 + }, + "frame": { + "x": 185, + "y": 374, + "w": 22, + "h": 28 + } + }, + { + "filename": "max_mushrooms", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 1, + "y": 3, + "w": 29, + "h": 28 + }, + "frame": { + "x": 207, + "y": 376, + "w": 29, + "h": 28 + } + }, + { + "filename": "ribbon_gen2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 2, + "y": 2, + "w": 28, + "h": 28 + }, + "frame": { + "x": 236, + "y": 376, + "w": 28, + "h": 28 + } + }, + { + "filename": "ribbon_gen4", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 30, + "h": 28 + }, + "frame": { + "x": 264, + "y": 377, + "w": 30, + "h": 28 + } + }, + { + "filename": "ribbon_gen5", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 2, + "w": 22, + "h": 28 + }, + "frame": { + "x": 294, + "y": 377, + "w": 22, + "h": 28 + } + }, + { + "filename": "ribbon_gen6", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 2, + "w": 22, + "h": 28 + }, + "frame": { + "x": 316, "y": 378, - "w": 16, - "h": 16 + "w": 22, + "h": 28 } }, { - "filename": "tyranitarite", + "filename": "ribbon_gen8", "rotated": false, "trimmed": true, "sourceSize": { @@ -8418,20 +8166,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 5, + "y": 2, + "w": 22, + "h": 28 }, "frame": { - "x": 412, - "y": 394, - "w": 16, - "h": 16 + "x": 338, + "y": 378, + "w": 22, + "h": 28 } }, { - "filename": "venusaurite", + "filename": "ribbon_gen3", "rotated": false, "trimmed": true, "sourceSize": { @@ -8439,16 +8187,268 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 + "x": 5, + "y": 1, + "w": 22, + "h": 29 }, "frame": { - "x": 363, - "y": 410, - "w": 16, - "h": 16 + "x": 360, + "y": 378, + "w": 22, + "h": 29 + } + }, + { + "filename": "ribbon_gen7", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 29 + }, + "frame": { + "x": 382, + "y": 380, + "w": 22, + "h": 29 + } + }, + { + "filename": "ribbon_gen9", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 29 + }, + "frame": { + "x": 404, + "y": 386, + "w": 22, + "h": 29 + } + }, + { + "filename": "inverse", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 30 + }, + "frame": { + "x": 0, + "y": 395, + "w": 22, + "h": 30 + } + }, + { + "filename": "galarica_cuff", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 29, + "h": 30 + }, + "frame": { + "x": 22, + "y": 397, + "w": 29, + "h": 30 + } + }, + { + "filename": "exp_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 17, + "h": 31 + }, + "frame": { + "x": 51, + "y": 397, + "w": 17, + "h": 31 + } + }, + { + "filename": "bronze_ribbon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 31 + }, + "frame": { + "x": 68, + "y": 399, + "w": 22, + "h": 31 + } + }, + { + "filename": "golden_exp_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 17, + "h": 31 + }, + "frame": { + "x": 90, + "y": 399, + "w": 17, + "h": 31 + } + }, + { + "filename": "super_exp_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 17, + "h": 31 + }, + "frame": { + "x": 107, + "y": 399, + "w": 17, + "h": 31 + } + }, + { + "filename": "great_ribbon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 31 + }, + "frame": { + "x": 124, + "y": 400, + "w": 22, + "h": 31 + } + }, + { + "filename": "master_ribbon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 31 + }, + "frame": { + "x": 146, + "y": 401, + "w": 22, + "h": 31 + } + }, + { + "filename": "rogue_ribbon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 31 + }, + "frame": { + "x": 168, + "y": 402, + "w": 22, + "h": 31 + } + }, + { + "filename": "ultra_ribbon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 22, + "h": 31 + }, + "frame": { + "x": 190, + "y": 404, + "w": 22, + "h": 31 } } ] @@ -8457,6 +8457,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:22a2cc3d3e531d383cfd9c9c6d0ae90e:cf2116762e9ba52acbac985ed04a7bd6:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:7b927dc715c6335dfca9e369b61374b2:fb24603dd37bbe0cbdf1d74fcbcbd223:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index c510ecebd147b619feefdd0d58cd80fbde7d4170..4433ce43a40296587c71ae16307f1411b4188244 100644 GIT binary patch literal 55816 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 z zBrfVDBxCUcasV5fO5B>OMZ2J`+ta^o%ZYX`hA7C$$W1rpx*pEQ8dfd)Z*4jXgFLFn z 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
    N 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 UHuyZ|N&o-=07*qoM6N<$f_MKR6951J literal 57986 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%0A-{e@_E3&wHsrlYqLj2-T6$*Tj(55 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 diff --git a/public/images/items/malicious_armor.png b/public/images/items/malicious_armor.png index a37e21db2f10b2057f9c3877ff424d4312e43491..b7bfb55195bbc871e9d817441e94639d5f57051e 100644 GIT binary patch literal 894 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 delta 613 zcmV-r0-F7k2e}21F@K^^OjJbx000mW5F#WjH!xBQ#ifC(^<(hNM-UhGK`AQ=6=Hi?3&exp1AcQ=+V2rZucsxWGuV-sX{_|F^LJ z`HR8(u8)$!^S1ny*Tjg>@c7Ws!1(y+`1rtH&vyU-05)_|PE!Dp@hp-734aiYt1bWl z0fR|IK~y-6wUXO*f-n$8O`!Cm0t%H7QIu+E6fYq8|6l7#6h!UvsXcFD?-_ zgWm{L5i%SO&)nDLv(f04bbq)iJT&KL!PdAdfR|-q@NS1$ecRTYbJ_|e1kH;AgJ4>2 zzlHituYwpC#Q_{oeP6>c&;o4)A-pk^v6+JJLle#!Z5s%W^W?}cLJ*)n2ty<25rq($ z*9!Z9G27-^p=|>p>`RLyc(qt8v=WfBptO)>oTusWm;_8!Frw&#F@Gb-Qf0td=A~(p zpvMYA6-Co`$6OVaN-51Vo2QzyRjr^z(-(62NGTg5VVtp*sOuU%*3EJ#naBFF@uq|! zj=M3&x;12;mtP39#6c`~voS{Vx2Tjcj5vaGlt{k|k*>9(6~wj%S!kU->aQ*VqX?0@qEdY3#cS51Ha00000NkvXXu0mjfHQ6JJ