Make signature species return empty array when key does not exist

This commit is contained in:
Sirz Benjie 2025-04-25 15:26:56 -05:00
parent 0867716347
commit bbf79fd1e6
No known key found for this signature in database
GPG Key ID: 4A524B4D196C759E
2 changed files with 617 additions and 446 deletions

View File

@ -4,12 +4,19 @@ export type SignatureSpecies = {
[key in string]: (Species | Species[])[]; [key in string]: (Species | Species[])[];
}; };
/* /**
* The signature species for each Gym Leader, Elite Four member, and Champion. * The signature species for each Gym Leader, Elite Four member, and Champion.
* The key is the trainer type, and the value is an array of Species or Species arrays. * The key is the trainer type, and the value is an array of Species or Species arrays.
* This is in a separate const so it can be accessed from other places and not just the trainerConfigs * This is in a separate const so it can be accessed from other places and not just the trainerConfigs
*
* @remarks
* The `Proxy` object allows us to define a handler that will intercept
* the property access and return an empty array if the property does not exist in the object.
*
* This means that accessing `signatureSpecies` will not throw an error if the property does not exist,
* but instead default to an empty array.
*/ */
export const signatureSpecies: SignatureSpecies = { export const signatureSpecies: SignatureSpecies = new Proxy({
// Gym Leaders- Kanto // Gym Leaders- Kanto
BROCK: [Species.ONIX, Species.GEODUDE, [Species.OMANYTE, Species.KABUTO], Species.AERODACTYL], BROCK: [Species.ONIX, Species.GEODUDE, [Species.OMANYTE, Species.KABUTO], Species.AERODACTYL],
MISTY: [Species.STARYU, Species.PSYDUCK, Species.WOOPER, Species.LAPRAS], MISTY: [Species.STARYU, Species.PSYDUCK, Species.WOOPER, Species.LAPRAS],
@ -92,56 +99,8 @@ export const signatureSpecies: SignatureSpecies = {
RYME: [Species.TOXEL, Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], // Tera Ghost Toxel RYME: [Species.TOXEL, Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], // Tera Ghost Toxel
TULIP: [Species.FLABEBE, Species.FLITTLE, Species.RALTS, Species.GIRAFARIG], // Tera Psychic Flabebe TULIP: [Species.FLABEBE, Species.FLITTLE, Species.RALTS, Species.GIRAFARIG], // Tera Psychic Flabebe
GRUSHA: [Species.SWABLU, Species.CETODDLE, Species.SNOM, Species.CUBCHOO], // Tera Ice Swablu GRUSHA: [Species.SWABLU, Species.CETODDLE, Species.SNOM, Species.CUBCHOO], // Tera Ice Swablu
}, {
// Elite Four- Kanto get(target, prop: string) {
LORELEI: [], return target[prop as keyof SignatureSpecies] ?? [];
BRUNO: [], }
AGATHA: [], });
LANCE: [],
// Elite Four- Johto (Bruno included)
WILL: [],
KOGA: [],
KAREN: [],
// Elite Four- Hoenn
SIDNEY: [],
PHOEBE: [],
GLACIA: [],
DRAKE: [],
// Elite Four- Sinnoh
AARON: [],
BERTHA: [],
FLINT: [],
LUCIAN: [],
// Elite Four- Unova
SHAUNTAL: [],
MARSHAL: [],
GRIMSLEY: [],
CAITLIN: [],
// Elite Four- Kalos
MALVA: [],
SIEBOLD: [],
WIKSTROM: [],
DRASNA: [],
// Elite Four- Alola
HALA: [],
MOLAYNE: [],
OLIVIA: [],
ACEROLA: [],
KAHILI: [],
// Elite Four- Galar
MARNIE_ELITE: [],
NESSA_ELITE: [],
BEA_ELITE: [],
ALLISTER_ELITE: [],
RAIHAN_ELITE: [],
// Elite Four- Paldea
RIKA: [],
POPPY: [],
LARRY_ELITE: [],
HASSEL: [],
// Elite Four- BBL
CRISPIN: [],
AMARYS: [],
LACEY: [],
DRAYTON: [],
};

File diff suppressed because it is too large Load Diff