diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs index 5db2b9707..43f903b62 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters3.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using static PKHeX.Core.EncounterUtil; +using static PKHeX.Core.Encounters3Teams; namespace PKHeX.Core { @@ -375,7 +376,7 @@ namespace PKHeX.Core new EncounterStatic { Gift = true, Species = 196, Level = 25, Location = 254, Gender = 0 }, // Espeon new EncounterStatic { Gift = true, Species = 197, Level = 26, Location = 254, Gender = 0, Moves = new[] {044} }, // Umbreon (Bite) - new EncounterStaticShadow { Species = 296, Level = 30, Gauge = 03000, Moves = new[] {193,116,233,238}, Location = 005 }, // Makuhita: Miror B.Peon Trudly @ Phenac City + new EncounterStaticShadow { Species = 296, Level = 30, Gauge = 03000, Moves = new[] {193,116,233,238}, Location = 005, Locks = ColoMakuhita }, // Makuhita: Miror B.Peon Trudly @ Phenac City // missing locs: Realgam Tower new EncounterStaticShadow { Species = 153, Level = 30, Gauge = 03000, Moves = new[] {241,235,075,034}, Location = 003 }, // Bayleef: Cipher Peon Verde @ Phenac City @@ -432,8 +433,8 @@ namespace PKHeX.Core new EncounterStaticShadow { Species = 243, Level = 40, Gauge = 13000, Moves = new[] {240,043,098,087}, Location = 125 }, // Raikou: Cipher Admin Ein @ Deep Colosseum new EncounterStaticShadow { Species = 243, Level = 40, Gauge = 13000, Moves = new[] {240,043,098,087}, Location = 069 }, // Raikou: Cipher Admin Ein @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 058 }, // Gligar: Hunter Frena @ The Under Subway - new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 133 }, // Gligar: Hunter Frena @ Snagem Hideout + new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 058, Locks = Gligar }, // Gligar: Hunter Frena @ The Under Subway + new EncounterStaticShadow { Species = 207, Level = 43, Gauge = 06000, Moves = new[] {185,028,040,163}, Location = 133, Locks = Gligar }, // Gligar: Hunter Frena @ Snagem Hideout new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 058 }, // Stantler: Chaser Liaks @ The Under Subway new EncounterStaticShadow { Species = 234, Level = 43, Gauge = 06000, Moves = new[] {310,095,043,036}, Location = 133 }, // Stantler: Chaser Liaks @ Snagem Hideout new EncounterStaticShadow { Species = 221, Level = 43, Gauge = 06000, Moves = new[] {203,316,091,059}, Location = 058 }, // Piloswine: Bodybuilder Lonia @ The Under Subway @@ -441,7 +442,7 @@ namespace PKHeX.Core new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 058 }, // Sneasel: Rider Nelis @ The Under Subway new EncounterStaticShadow { Species = 215, Level = 43, Gauge = 06000, Moves = new[] {185,103,154,196}, Location = 134 }, // Sneasel: Rider Nelis @ Snagem Hideout new EncounterStaticShadow { Species = 190, Level = 43, Gauge = 06000, Moves = new[] {226,321,154,129}, Location = 067 }, // Aipom: Cipher Peon Cole @ Shadow PKMN Lab - new EncounterStaticShadow { Species = 198, Level = 43, Gauge = 06000, Moves = new[] {185,212,101,019}, Location = 067 }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab + new EncounterStaticShadow { Species = 198, Level = 43, Gauge = 06000, Moves = new[] {185,212,101,019}, Location = 067, Locks = Murkrow }, // Murkrow: Cipher Peon Lare @ Shadow PKMN Lab new EncounterStaticShadow { Species = 205, Level = 43, Gauge = 06000, Moves = new[] {153,182,117,229}, Location = 067 }, // Forretress: Cipher Peon Vana @ Shadow PKMN Lab new EncounterStaticShadow { Species = 168, Level = 43, Gauge = 06000, Moves = new[] {169,184,141,188}, Location = 069 }, // Ariados: Cipher Peon Lesar @ Shadow PKMN Lab new EncounterStaticShadow { Species = 210, Level = 43, Gauge = 06000, Moves = new[] {044,184,046,070}, Location = 069 }, // Granbull: Cipher Peon Tanie @ Shadow PKMN Lab @@ -449,7 +450,7 @@ namespace PKHeX.Core new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 109 }, // Sunflora: Cipher Peon Baila @ Realgam Tower new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 109 }, // Delibird: Cipher Peon Arton @ Realgam Tower - new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 111 }, // Heracross: Cipher Peon Dioge @ Realgam Tower + new EncounterStaticShadow { Species = 214, Level = 45, Gauge = 07000, Moves = new[] {179,203,068,280}, Location = 111, Locks = Heracross }, // Heracross: Cipher Peon Dioge @ Realgam Tower new EncounterStaticShadow { Species = 227, Level = 47, Gauge = 13000, Moves = new[] {065,319,314,211}, Location = 117 }, // Skarmory: Snagem Head Gonzap @ Realgam Tower new EncounterStaticShadow { Species = 192, Level = 45, Gauge = 07000, Moves = new[] {241,074,275,076}, Location = 132 }, // Sunflora: Cipher Peon Baila @ Snagem Hideout new EncounterStaticShadow { Species = 225, Level = 45, Gauge = 07000, Moves = new[] {059,213,217,019}, Location = 132 }, // Delibird: Cipher Peon Arton @ Snagem Hideout @@ -463,7 +464,7 @@ namespace PKHeX.Core new EncounterStaticShadow { Species = 376, Level = 50, Gauge = 15000, Moves = new[] {063,334,232,094}, Location = 118 }, // Metagross: Cipher Nascour @ Tower Colosseum new EncounterStaticShadow { Species = 248, Level = 55, Gauge = 20000, Moves = new[] {242,087,157,059}, Location = 118 }, // Tyranitar: Cipher Head Evice @ Tower Colosseum new EncounterStaticShadow { Species = 235, Level = 45, Gauge = 07000, Moves = new[] {166,039,003,231}, Location = 132 }, // Smeargle: Team Snagem Biden @ Snagem Hideout - new EncounterStaticShadow { Species = 217, Level = 45, Gauge = 07000, Moves = new[] {185,313,122,163}, Location = 132 }, // Ursaring: Team Snagem Agrev @ Snagem Hideout + new EncounterStaticShadow { Species = 217, Level = 45, Gauge = 07000, Moves = new[] {185,313,122,163}, Location = 132, Locks = Ursaring }, // Ursaring: Team Snagem Agrev @ Snagem Hideout new EncounterStaticShadow { Species = 213, Level = 45, Gauge = 07000, Moves = new[] {219,227,156,117}, Location = 125 }, // Shuckle: Deep King Agnol @ Deep Colosseum new EncounterStaticShadow { Species = 176, Level = 20, Gauge = 05000, Moves = new[] {118,204,186,281}, Location = 001 }, // Togetic: Cipher Peon Fein @ Outskirt Stand new EncounterStaticShadow { Species = 175, Level = 20, Gauge = 00000, Moves = new[] {118,204,186,281}, IVs = new[] {0,0,0,0,0,0}, EReader = true }, // Togepi: Chaser ボデス @ Card e Room (Japanese games only) @@ -490,114 +491,114 @@ namespace PKHeX.Core new EncounterStatic { Fateful = true, Gift = true, Species = 155, Level = 05, Location = 016, Moves = new[] {179,033,043,307} }, // Cyndaquil new EncounterStatic { Fateful = true, Gift = true, Species = 158, Level = 05, Location = 016, Moves = new[] {242,010,043,308} }, // Totodile - new EncounterStaticShadow { Fateful = true, Species = 216, Level = 11, Gauge = 03000, Moves = new[] {216,287,122,232}, Location = 143, }, // Teddiursa: Cipher Peon Naps @ Pokémon HQ Lab - new EncounterStaticShadow { Fateful = true, Species = 165, Level = 10, Gauge = 02500, Moves = new[] {060,287,332,048}, Location = 153, }, // Ledyba: Casual Guy Cyle @ Gateon Port - new EncounterStaticShadow { Fateful = true, Species = 261, Level = 10, Gauge = 02500, Moves = new[] {091,215,305,336}, Location = 162, }, // Poochyena: Bodybuilder Kilen @ Gateon Port + new EncounterStaticShadow { Fateful = true, Species = 216, Level = 11, Gauge = 03000, Moves = new[] {216,287,122,232}, Location = 143 }, // Teddiursa: Cipher Peon Naps @ Pokémon HQ Lab + new EncounterStaticShadow { Fateful = true, Species = 165, Level = 10, Gauge = 02500, Moves = new[] {060,287,332,048}, Location = 153, Locks = Ledyba, }, // Ledyba: Casual Guy Cyle @ Gateon Port + new EncounterStaticShadow { Fateful = true, Species = 261, Level = 10, Gauge = 02500, Moves = new[] {091,215,305,336}, Location = 162, Locks = Poochyena, }, // Poochyena: Bodybuilder Kilen @ Gateon Port new EncounterStaticShadow { Fateful = true, Species = 228, Level = 17, Gauge = 01500, Moves = new[] {185,204,052,046}, Location = 011, }, // Houndour: Cipher Peon Resix @ Cipher Lab new EncounterStaticShadow { Fateful = true, Species = 343, Level = 17, Gauge = 01500, Moves = new[] {317,287,189,060}, Location = 011, }, // Baltoy: Cipher Peon Browsix @ Cipher Lab new EncounterStaticShadow { Fateful = true, Species = 179, Level = 17, Gauge = 01500, Moves = new[] {034,215,084,086}, Location = 011, }, // Mareep: Cipher Peon Yellosix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 273, Level = 17, Gauge = 01500, Moves = new[] {202,287,331,290}, Location = 011, }, // Seedot: Cipher Peon Greesix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 363, Level = 17, Gauge = 01500, Moves = new[] {062,204,055,189}, Location = 011, }, // Spheal: Cipher Peon Blusix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 316, Level = 17, Gauge = 01500, Moves = new[] {351,047,124,092}, Location = 011, }, // Gulpin: Cipher Peon Purpsix @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 167, Level = 14, Gauge = 01500, Moves = new[] {091,287,324,101}, Location = 010, }, // Spinarak: Cipher Peon Nexir @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 322, Level = 14, Gauge = 01500, Moves = new[] {036,204,091,052}, Location = 009, }, // Numel: Cipher Peon Solox @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 273, Level = 17, Gauge = 01500, Moves = new[] {202,287,331,290}, Location = 011, Locks = Seedot, }, // Seedot: Cipher Peon Greesix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 363, Level = 17, Gauge = 01500, Moves = new[] {062,204,055,189}, Location = 011, Locks = Spheal, }, // Spheal: Cipher Peon Blusix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 316, Level = 17, Gauge = 01500, Moves = new[] {351,047,124,092}, Location = 011, Locks = Gulpin, }, // Gulpin: Cipher Peon Purpsix @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 167, Level = 14, Gauge = 01500, Moves = new[] {091,287,324,101}, Location = 010, Locks = Spinarak, }, // Spinarak: Cipher Peon Nexir @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 322, Level = 14, Gauge = 01500, Moves = new[] {036,204,091,052}, Location = 009, Locks = Numel, }, // Numel: Cipher Peon Solox @ Cipher Lab new EncounterStaticShadow { Fateful = true, Species = 318, Level = 15, Gauge = 01700, Moves = new[] {352,287,184,044}, Location = 008, }, // Carvanha: Cipher Peon Cabol @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 285, Level = 15, Gauge = 01800, Moves = new[] {206,287,072,078}, Location = 008, }, // Shroomish: Cipher R&D Klots @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 301, Level = 18, Gauge = 02500, Moves = new[] {290,186,213,351}, Location = 008, }, // Delcatty: Cipher Admin Lovrina @ Cipher Lab - new EncounterStaticShadow { Fateful = true, Species = 100, Level = 19, Gauge = 02500, Moves = new[] {243,287,209,129}, Location = 092, }, // Voltorb: Wanderer Miror B. @ Cave Poké Spot - new EncounterStaticShadow { Fateful = true, Species = 296, Level = 18, Gauge = 02000, Moves = new[] {280,287,292,317}, Location = 109, }, // Makuhita: Cipher Peon Torkin @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 037, Level = 18, Gauge = 02000, Moves = new[] {257,204,052,091}, Location = 109, }, // Vulpix: Cipher Peon Mesin @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 355, Level = 19, Gauge = 02200, Moves = new[] {247,270,310,109}, Location = 110, }, // Duskull: Cipher Peon Lobar @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 280, Level = 20, Gauge = 02200, Moves = new[] {351,047,115,093}, Location = 119, }, // Ralts: Cipher Peon Feldas @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 303, Level = 22, Gauge = 02500, Moves = new[] {206,047,011,334}, Location = 111, }, // Mawile: Cipher Cmdr Exol @ ONBS Building - new EncounterStaticShadow { Fateful = true, Species = 361, Level = 20, Gauge = 02500, Moves = new[] {352,047,044,196}, Location = 097, }, // Snorunt: Cipher Peon Exinn @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 204, Level = 20, Gauge = 02500, Moves = new[] {042,287,191,068}, Location = 096, }, // Pineco: Cipher Peon Gonrap @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 177, Level = 22, Gauge = 02500, Moves = new[] {248,226,101,332}, Location = 094, }, // Natu: Cipher Peon Eloin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 285, Level = 15, Gauge = 01800, Moves = new[] {206,287,072,078}, Location = 008, Locks = Shroomish, }, // Shroomish: Cipher R&D Klots @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 301, Level = 18, Gauge = 02500, Moves = new[] {290,186,213,351}, Location = 008, Locks = Delcatty, }, // Delcatty: Cipher Admin Lovrina @ Cipher Lab + new EncounterStaticShadow { Fateful = true, Species = 100, Level = 19, Gauge = 02500, Moves = new[] {243,287,209,129}, Location = 092, Locks = Voltorb, }, // Voltorb: Wanderer Miror B. @ Cave Poké Spot + new EncounterStaticShadow { Fateful = true, Species = 296, Level = 18, Gauge = 02000, Moves = new[] {280,287,292,317}, Location = 109, Locks = Makuhita, }, // Makuhita: Cipher Peon Torkin @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 037, Level = 18, Gauge = 02000, Moves = new[] {257,204,052,091}, Location = 109, Locks = Vulpix, }, // Vulpix: Cipher Peon Mesin @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 355, Level = 19, Gauge = 02200, Moves = new[] {247,270,310,109}, Location = 110, Locks = Duskull, }, // Duskull: Cipher Peon Lobar @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 280, Level = 20, Gauge = 02200, Moves = new[] {351,047,115,093}, Location = 119, Locks = Ralts, }, // Ralts: Cipher Peon Feldas @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 303, Level = 22, Gauge = 02500, Moves = new[] {206,047,011,334}, Location = 111, Locks = Mawile, }, // Mawile: Cipher Cmdr Exol @ ONBS Building + new EncounterStaticShadow { Fateful = true, Species = 361, Level = 20, Gauge = 02500, Moves = new[] {352,047,044,196}, Location = 097, Locks = Snorunt }, // Snorunt: Cipher Peon Exinn @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 204, Level = 20, Gauge = 02500, Moves = new[] {042,287,191,068}, Location = 096, Locks = Pineco, }, // Pineco: Cipher Peon Gonrap @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 177, Level = 22, Gauge = 02500, Moves = new[] {248,226,101,332}, Location = 094, Locks = Natu, }, // Natu: Cipher Peon Eloin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 113 }, // Roselia: Cipher Peon Fasin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 094 }, // Roselia: Cipher Peon Fasin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 113 }, // Meowth: Cipher Peon Fostin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 094 }, // Meowth: Cipher Peon Fostin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 113, Locks = Roselia }, // Roselia: Cipher Peon Fasin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 315, Level = 22, Gauge = 03000, Moves = new[] {345,186,320,073}, Location = 094, Locks = Roselia }, // Roselia: Cipher Peon Fasin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 113, Locks = Meowth }, // Meowth: Cipher Peon Fostin @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 052, Level = 22, Gauge = 03500, Moves = new[] {163,047,006,044}, Location = 094, Locks = Meowth }, // Meowth: Cipher Peon Fostin @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 220, Level = 22, Gauge = 02500, Moves = new[] {246,204,054,341}, Location = 100 }, // Swinub: Cipher Peon Greck @ Phenac City + new EncounterStaticShadow { Fateful = true, Species = 220, Level = 22, Gauge = 02500, Moves = new[] {246,204,054,341}, Location = 100, Locks = Swinub }, // Swinub: Cipher Peon Greck @ Phenac City - new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 059 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 107 }, // Spearow: Cipher Peon Ezin @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 059 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 107 }, // Grimer: Cipher Peon Faltly @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 059, Locks = Spearow }, // Spearow: Cipher Peon Ezin @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 021, Level = 22, Gauge = 04500, Moves = new[] {206,226,043,332}, Location = 107, Locks = Spearow }, // Spearow: Cipher Peon Ezin @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 059, Locks = Grimer }, // Grimer: Cipher Peon Faltly @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 088, Level = 23, Gauge = 03000, Moves = new[] {188,270,325,107}, Location = 107, Locks = Grimer }, // Grimer: Cipher Peon Faltly @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 086, Level = 23, Gauge = 03500, Moves = new[] {057,270,219,058}, Location = 107 }, // Seel: Cipher Peon Egrog @ Phenac Stadium - new EncounterStaticShadow { Fateful = true, Species = 337, Level = 25, Gauge = 05000, Moves = new[] {094,226,240,317}, Location = 107 }, // Lunatone: Cipher Admin Snattle @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 086, Level = 23, Gauge = 03500, Moves = new[] {057,270,219,058}, Location = 107, Locks = Seel }, // Seel: Cipher Peon Egrog @ Phenac Stadium + new EncounterStaticShadow { Fateful = true, Species = 337, Level = 25, Gauge = 05000, Moves = new[] {094,226,240,317}, Location = 107, Locks = Lunatone }, // Lunatone: Cipher Admin Snattle @ Phenac Stadium new EncounterStaticShadow { Fateful = true, Species = 175, Level = 25, Gauge = 04500, Moves = new[] {266,161,246,270}, Location = 164, Gift = true }, // Togepi: Pokémon Trainer Hordel @ Outskirt Stand - new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 090 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots - new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 113 }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots + new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 090, Locks = Nosepass }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots + new EncounterStaticShadow { Fateful = true, Species = 299, Level = 26, Gauge = 04000, Moves = new[] {085,270,086,157}, Location = 113, Locks = Nosepass }, // Nosepass: Wanderer Miror B. @ Pyrite Colosseum/Realgam Colosseum/Poké Spots new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 071 }, // Zangoose: Thug Zook @ Cipher Key Lair new EncounterStaticShadow { Fateful = true, Species = 335, Level = 28, Gauge = 05000, Moves = new[] {280,287,068,306}, Location = 090 }, // Zangoose: Thug Zook @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 046, Level = 28, Gauge = 04000, Moves = new[] {147,287,163,206}, Location = 064 }, // Paras: Cipher Peon Humah @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 046, Level = 28, Gauge = 04000, Moves = new[] {147,287,163,206}, Location = 064, Locks = Paras }, // Paras: Cipher Peon Humah @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 064 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 113 }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 064, Locks = Growlithe }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 058, Level = 28, Gauge = 04000, Moves = new[] {053,204,044,036}, Location = 113, Locks = Growlithe }, // Growlithe: Cipher Peon Humah @ Cipher Key Lair new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 059 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 059 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 059 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 059 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 059 }, // Banette: Cipher Peon Litnar @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 059, Locks = Butterfree }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 059, Locks = Venomoth }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 059, Locks = Hypno }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 059, Locks = Banette }, // Banette: Cipher Peon Litnar @ Citadark Isle new EncounterStaticShadow { Fateful = true, Species = 090, Level = 29, Gauge = 04000, Moves = new[] {036,287,057,062}, Location = 065 }, // Shellder: Cipher Peon Gorog @ Cipher Key Lair new EncounterStaticShadow { Fateful = true, Species = 015, Level = 30, Gauge = 04500, Moves = new[] {188,226,041,014}, Location = 066 }, // Beedrill: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 017, Level = 30, Gauge = 04000, Moves = new[] {017,287,211,297}, Location = 066 }, // Pidgeotto: Cipher Peon Lok @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 114, Level = 30, Gauge = 04000, Moves = new[] {076,234,241,275}, Location = 067 }, // Tangela: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 067 }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 082, Level = 30, Gauge = 04500, Moves = new[] {038,287,240,087}, Location = 067 }, // Magneton: Cipher Peon Snidle @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 070 }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 070, Level = 32, Gauge = 04000, Moves = new[] {345,234,188,230}, Location = 070 }, // Weepinbell: Cipher Peon Angic @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 024, Level = 33, Gauge = 05000, Moves = new[] {188,287,137,044}, Location = 070 }, // Arbok: Cipher Peon Smarton @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 057, Level = 34, Gauge = 06000, Moves = new[] {238,270,116,179}, Location = 069 }, // Primeape: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 069 }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair - new EncounterStaticShadow { Fateful = true, Species = 055, Level = 33, Gauge = 06500, Moves = new[] {127,204,244,280}, Location = 088 }, // Golduck: Navigator Abson @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 302, Level = 33, Gauge = 07000, Moves = new[] {247,270,185,105}, Location = 088 }, // Sableye: Navigator Abson @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 085, Level = 34, Gauge = 08000, Moves = new[] {065,226,097,161}, Location = 076 }, // Dodrio: Chaser Furgy @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 020, Level = 34, Gauge = 06000, Moves = new[] {162,287,184,158}, Location = 076 }, // Raticate: Chaser Furgy @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 083, Level = 36, Gauge = 05500, Moves = new[] {163,226,014,332}, Location = 076 }, // Farfetch'd: Cipher Admin Lovrina @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 334, Level = 36, Gauge = 06500, Moves = new[] {225,215,076,332}, Location = 076 }, // Altaria: Cipher Admin Lovrina @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 115, Level = 35, Gauge = 06000, Moves = new[] {089,047,039,146}, Location = 085 }, // Kangaskhan: Cipher Peon Litnar @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 085 }, // Banette: Cipher Peon Litnar @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 126, Level = 36, Gauge = 07000, Moves = new[] {126,266,238,009}, Location = 077 }, // Magmar: Cipher Peon Grupel @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 127, Level = 35, Gauge = 07000, Moves = new[] {012,270,206,066}, Location = 077 }, // Pinsir: Cipher Peon Grupel @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 078, Level = 40, Gauge = 06000, Moves = new[] {076,226,241,053}, Location = 080 }, // Rapidash: Cipher Peon Kolest @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 219, Level = 38, Gauge = 05500, Moves = new[] {257,287,089,053}, Location = 080 }, // Magcargo: Cipher Peon Kolest @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 107, Level = 38, Gauge = 06000, Moves = new[] {005,270,170,327}, Location = 081 }, // Hitmonchan: Cipher Peon Karbon @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 106, Level = 38, Gauge = 07000, Moves = new[] {136,287,170,025}, Location = 081 }, // Hitmonlee: Cipher Peon Petro @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 108, Level = 38, Gauge = 05000, Moves = new[] {038,270,111,205}, Location = 084 }, // Lickitung: Cipher Peon Geftal @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 123, Level = 40, Gauge = 08000, Moves = new[] {013,234,318,163}, Location = 084 }, // Scyther: Cipher Peon Leden @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 017, Level = 30, Gauge = 04000, Moves = new[] {017,287,211,297}, Location = 066, Locks = Pidgeotto }, // Pidgeotto: Cipher Peon Lok @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 114, Level = 30, Gauge = 04000, Moves = new[] {076,234,241,275}, Location = 067, Locks = Tangela }, // Tangela: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 012, Level = 30, Gauge = 04000, Moves = new[] {094,234,079,332}, Location = 067, Locks = Butterfree }, // Butterfree: Cipher Peon Targ @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 082, Level = 30, Gauge = 04500, Moves = new[] {038,287,240,087}, Location = 067, Locks = Magneton }, // Magneton: Cipher Peon Snidle @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 049, Level = 32, Gauge = 04000, Moves = new[] {318,287,164,094}, Location = 070, Locks = Venomoth }, // Venomoth: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 070, Level = 32, Gauge = 04000, Moves = new[] {345,234,188,230}, Location = 070, Locks = Weepinbell }, // Weepinbell: Cipher Peon Angic @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 024, Level = 33, Gauge = 05000, Moves = new[] {188,287,137,044}, Location = 070, Locks = Arbok }, // Arbok: Cipher Peon Smarton @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 057, Level = 34, Gauge = 06000, Moves = new[] {238,270,116,179}, Location = 069, Locks = Primeape }, // Primeape: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 097, Level = 34, Gauge = 05500, Moves = new[] {094,226,096,247}, Location = 069, Locks = Hypno }, // Hypno: Cipher Admin Gorigan @ Cipher Key Lair + new EncounterStaticShadow { Fateful = true, Species = 055, Level = 33, Gauge = 06500, Moves = new[] {127,204,244,280}, Location = 088, Locks = Golduck }, // Golduck: Navigator Abson @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 302, Level = 33, Gauge = 07000, Moves = new[] {247,270,185,105}, Location = 088, Locks = Sableye }, // Sableye: Navigator Abson @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 085, Level = 34, Gauge = 08000, Moves = new[] {065,226,097,161}, Location = 076, Locks = Dodrio }, // Dodrio: Chaser Furgy @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 020, Level = 34, Gauge = 06000, Moves = new[] {162,287,184,158}, Location = 076, Locks = Raticate }, // Raticate: Chaser Furgy @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 083, Level = 36, Gauge = 05500, Moves = new[] {163,226,014,332}, Location = 076, Locks = Farfetchd }, // Farfetch'd: Cipher Admin Lovrina @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 334, Level = 36, Gauge = 06500, Moves = new[] {225,215,076,332}, Location = 076, Locks = Altaria }, // Altaria: Cipher Admin Lovrina @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 115, Level = 35, Gauge = 06000, Moves = new[] {089,047,039,146}, Location = 085, Locks = Kangaskhan }, // Kangaskhan: Cipher Peon Litnar @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 354, Level = 37, Gauge = 07000, Moves = new[] {185,270,247,174}, Location = 085, Locks = Banette }, // Banette: Cipher Peon Litnar @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 126, Level = 36, Gauge = 07000, Moves = new[] {126,266,238,009}, Location = 077, Locks = Magmar }, // Magmar: Cipher Peon Grupel @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 127, Level = 35, Gauge = 07000, Moves = new[] {012,270,206,066}, Location = 077, Locks = Pinsir }, // Pinsir: Cipher Peon Grupel @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 078, Level = 40, Gauge = 06000, Moves = new[] {076,226,241,053}, Location = 080, Locks = Rapidash }, // Rapidash: Cipher Peon Kolest @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 219, Level = 38, Gauge = 05500, Moves = new[] {257,287,089,053}, Location = 080, Locks = Magcargo }, // Magcargo: Cipher Peon Kolest @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 107, Level = 38, Gauge = 06000, Moves = new[] {005,270,170,327}, Location = 081, Locks = Hitmonchan }, // Hitmonchan: Cipher Peon Karbon @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 106, Level = 38, Gauge = 07000, Moves = new[] {136,287,170,025}, Location = 081, Locks = Hitmonlee }, // Hitmonlee: Cipher Peon Petro @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 108, Level = 38, Gauge = 05000, Moves = new[] {038,270,111,205}, Location = 084, Locks = Lickitung }, // Lickitung: Cipher Peon Geftal @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 123, Level = 40, Gauge = 08000, Moves = new[] {013,234,318,163}, Location = 084, Locks = Scyther }, // Scyther: Cipher Peon Leden @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 084 }, // Chansey: Cipher Peon Leden @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 087 }, // Chansey: Cipher Peon Leden @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 084, Locks = Chansey }, // Chansey: Cipher Peon Leden @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 113, Level = 39, Gauge = 04000, Moves = new[] {085,186,135,285}, Location = 087, Locks = Chansey }, // Chansey: Cipher Peon Leden @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 338, Level = 41, Gauge = 07500, Moves = new[] {094,226,241,322}, Location = 087 }, // Solrock: Cipher Admin Snattle @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 121, Level = 41, Gauge = 07500, Moves = new[] {127,287,058,105}, Location = 087 }, // Starmie: Cipher Admin Snattle @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 338, Level = 41, Gauge = 07500, Moves = new[] {094,226,241,322}, Location = 087, Locks = Solrock }, // Solrock: Cipher Admin Snattle @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 121, Level = 41, Gauge = 07500, Moves = new[] {127,287,058,105}, Location = 087, Locks = Starmie }, // Starmie: Cipher Admin Snattle @ Citadark Isle new EncounterStaticShadow { Fateful = true, Species = 277, Level = 43, Gauge = 07000, Moves = new[] {143,226,097,263}, Location = 087 }, // Swellow: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 125, Level = 43, Gauge = 07000, Moves = new[] {238,266,086,085}, Location = 087 }, // Electabuzz: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 143, Level = 43, Gauge = 09000, Moves = new[] {090,287,174,034}, Location = 087 }, // Snorlax: Cipher Admin Ardos @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 062, Level = 42, Gauge = 07500, Moves = new[] {056,270,240,280}, Location = 087 }, // Poliwrath: Cipher Admin Gorigan @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 122, Level = 42, Gauge = 06500, Moves = new[] {094,266,227,009}, Location = 087 }, // Mr. Mime: Cipher Admin Gorigan @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 051, Level = 40, Gauge = 05000, Moves = new[] {089,204,201,161}, Location = 075 }, // Dugtrio: Cipher Peon Kolax @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 310, Level = 44, Gauge = 07000, Moves = new[] {087,287,240,044}, Location = 073 }, // Manectric: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 373, Level = 50, Gauge = 09000, Moves = new[] {337,287,349,332}, Location = 073 }, // Salamence: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 105, Level = 44, Gauge = 06500, Moves = new[] {089,047,014,157}, Location = 073 }, // Marowak: Cipher Admin Eldes @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 131, Level = 44, Gauge = 06000, Moves = new[] {056,215,240,059}, Location = 073 }, // Lapras: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 125, Level = 43, Gauge = 07000, Moves = new[] {238,266,086,085}, Location = 087, Locks = Electabuzz }, // Electabuzz: Cipher Admin Ardos @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 143, Level = 43, Gauge = 09000, Moves = new[] {090,287,174,034}, Location = 087, Locks = Snorlax }, // Snorlax: Cipher Admin Ardos @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 062, Level = 42, Gauge = 07500, Moves = new[] {056,270,240,280}, Location = 087, Locks = Poliwrath }, // Poliwrath: Cipher Admin Gorigan @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 122, Level = 42, Gauge = 06500, Moves = new[] {094,266,227,009}, Location = 087, Locks = MrMime }, // Mr. Mime: Cipher Admin Gorigan @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 051, Level = 40, Gauge = 05000, Moves = new[] {089,204,201,161}, Location = 075, Locks = Dugtrio }, // Dugtrio: Cipher Peon Kolax @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 310, Level = 44, Gauge = 07000, Moves = new[] {087,287,240,044}, Location = 073, Locks = Manectric }, // Manectric: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 373, Level = 50, Gauge = 09000, Moves = new[] {337,287,349,332}, Location = 073, Locks = Salamence }, // Salamence: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 105, Level = 44, Gauge = 06500, Moves = new[] {089,047,014,157}, Location = 073, Locks = Marowak }, // Marowak: Cipher Admin Eldes @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 131, Level = 44, Gauge = 06000, Moves = new[] {056,215,240,059}, Location = 073, Locks = Lapras }, // Lapras: Cipher Admin Eldes @ Citadark Isle new EncounterStaticShadow { Fateful = true, Species = 249, Level = 50, Gauge = 12000, Moves = new[] {354,297,089,056}, Location = 074 }, // Lugia: Grand Master Greevil @ Citadark Isle new EncounterStaticShadow { Fateful = true, Species = 112, Level = 46, Gauge = 07000, Moves = new[] {224,270,184,089}, Location = 074 }, // Rhydon: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 146, Level = 50, Gauge = 10000, Moves = new[] {326,234,261,053}, Location = 074 }, // Moltres: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 103, Level = 46, Gauge = 09000, Moves = new[] {094,287,095,246}, Location = 074 }, // Exeggutor: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 128, Level = 46, Gauge = 09000, Moves = new[] {089,287,039,034}, Location = 074 }, // Tauros: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 144, Level = 50, Gauge = 10000, Moves = new[] {326,215,114,058}, Location = 074 }, // Articuno: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 145, Level = 50, Gauge = 10000, Moves = new[] {326,226,319,085}, Location = 074 }, // Zapdos: Grand Master Greevil @ Citadark Isle - new EncounterStaticShadow { Fateful = true, Species = 149, Level = 55, Gauge = 09000, Moves = new[] {063,215,349,089}, Location = 162 }, // Dragonite: Wanderer Miror B. @ Gateon Port + new EncounterStaticShadow { Fateful = true, Species = 146, Level = 50, Gauge = 10000, Moves = new[] {326,234,261,053}, Location = 074, Locks = Moltres }, // Moltres: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 103, Level = 46, Gauge = 09000, Moves = new[] {094,287,095,246}, Location = 074, Locks = Exeggutor }, // Exeggutor: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 128, Level = 46, Gauge = 09000, Moves = new[] {089,287,039,034}, Location = 074, Locks = Tauros }, // Tauros: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 144, Level = 50, Gauge = 10000, Moves = new[] {326,215,114,058}, Location = 074, Locks = Articuno }, // Articuno: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 145, Level = 50, Gauge = 10000, Moves = new[] {326,226,319,085}, Location = 074, Locks = Zapdos }, // Zapdos: Grand Master Greevil @ Citadark Isle + new EncounterStaticShadow { Fateful = true, Species = 149, Level = 55, Gauge = 09000, Moves = new[] {063,215,349,089}, Location = 162, Locks = Dragonite }, // Dragonite: Wanderer Miror B. @ Gateon Port }.SelectMany(CloneMirorB).ToArray(); internal static readonly EncounterArea[] SlotsXD = diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs new file mode 100644 index 000000000..56a96e6a6 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs @@ -0,0 +1,1038 @@ +namespace PKHeX.Core +{ + public static class Encounters3Shadow + { + public static readonly TeamLock CMakuhita = new TeamLock { + Species = 296, // Makuhita + Locks = new NPCLock[] { + new NPCLock(355, 24, 0, 127), // Duskull (M) (Quirky) + new NPCLock(167, 00, 1, 127), // Spinarak (F) (Hardy) + }}; + + public static readonly TeamLock CGligar = new TeamLock { + Species = 207, // Gligar + Locks = new NPCLock[] { + new NPCLock(216, 12, 0, 127), // Teddiursa (M) (Serious) + new NPCLock(039, 06, 1, 191), // Jigglypuff (F) (Docile) + new NPCLock(285, 18, 1, 127), // Shroomish (F) (Bashful) + }}; + + public static readonly TeamLock CMurkrow = new TeamLock { + Species = 198, // Murkrow + Locks = new NPCLock[] { + new NPCLock(318, 06, 0, 127), // Carvanha (M) (Docile) + new NPCLock(274, 12, 1, 127), // Nuzleaf (F) (Serious) + new NPCLock(228, 18, 1, 127), // Houndour (F) (Bashful) + }}; + + public static readonly TeamLock CHeracross = new TeamLock { + Species = 214, // Heracross + Locks = new NPCLock[] { + new NPCLock(284, 00, 0, 127), // Masquerain (M) (Hardy) + new NPCLock(168, 00, 1, 127), // Ariados (F) (Hardy) + }}; + + public static readonly TeamLock CUrsaring = new TeamLock { + Species = 217, // Ursaring + Locks = new NPCLock[] { + new NPCLock(067, 20, 0, 063), // Machoke (M) (Calm) + new NPCLock(259, 16, 1, 031), // Marshtomp (F) (Mild) + new NPCLock(275, 21, 1, 127), // Shiftry (F) (Gentle) + }}; + + public static readonly TeamLock XRalts = new TeamLock { + Species = 280, // Ralts + Locks = new NPCLock[] { + new NPCLock(064, 00, 0, 063), // Kadabra (M) (Hardy) + new NPCLock(180, 06, 1, 127), // Flaaffy (F) (Docile) + new NPCLock(288, 18, 0, 127), // Vigoroth (M) (Bashful) + }}; + + public static readonly TeamLock XPoochyena = new TeamLock { + Species = 261, // Poochyena + Locks = new NPCLock[] { + new NPCLock(041, 12, 1, 127), // Zubat (F) (Serious) + }}; + + public static readonly TeamLock XLedyba = new TeamLock { + Species = 165, // Ledyba + Locks = new NPCLock[] { + new NPCLock(276, 00, 1, 127), // Taillow (F) (Hardy) + }}; + + public static readonly TeamLock XSphealCipherLab = new TeamLock { + Species = 363, // Spheal + Comment = "Cipher Lab", + Locks = new NPCLock[] { + new NPCLock(116, 24, 0, 063), // Horsea (M) (Quirky) + new NPCLock(118, 12, 1, 127), // Goldeen (F) (Serious) + }}; + + public static readonly TeamLock XSphealPhenacCityandPost = new TeamLock { + Species = 363, // Spheal + Comment = "Phenac City and Post", + Locks = new NPCLock[] { + new NPCLock(116, 24, 0, 063), // Horsea (M) (Quirky) + new NPCLock(118, 12, 1, 127), // Goldeen (F) (Serious) + new NPCLock(374, 00, 2, 256), // Beldum (-) (Hardy) + }}; + + public static readonly TeamLock XGulpin = new TeamLock { + Species = 316, // Gulpin + Locks = new NPCLock[] { + new NPCLock(109, 12, 1, 127), // Koffing (F) (Serious) + new NPCLock(088, 06, 0, 127), // Grimer (M) (Docile) + }}; + + public static readonly TeamLock XSeedotCipherLab = new TeamLock { + Species = 273, // Seedot + Comment = "Cipher Lab", + Locks = new NPCLock[] { + new NPCLock(043, 06, 0, 127), // Oddish (M) (Docile) + new NPCLock(331, 24, 1, 127), // Cacnea (F) (Quirky) + new NPCLock(285, 18, 1, 127), // Shroomish (F) (Bashful) + new NPCLock(270, 00, 0, 127), // Lotad (M) (Hardy) + new NPCLock(204, 12, 0, 127), // Pineco (M) (Serious) + }}; + + public static readonly TeamLock XSeedotPhenacCity = new TeamLock { + Species = 273, // Seedot + Comment = "Phenac City", + Locks = new NPCLock[] { + new NPCLock(043, 06, 0, 127), // Oddish (M) (Docile) + new NPCLock(331, 24, 1, 127), // Cacnea (F) (Quirky) + new NPCLock(285, 00, 1, 127), // Shroomish (F) (Hardy) + new NPCLock(270, 00, 1, 127), // Lotad (F) (Hardy) + new NPCLock(204, 06, 0, 127), // Pineco (M) (Docile) + }}; + + public static readonly TeamLock XSeedotPost = new TeamLock { + Species = 273, // Seedot + Comment = "Post", + Locks = new NPCLock[] { + new NPCLock(043, 06, 0, 127), // Oddish (M) (Docile) + new NPCLock(331, 24, 1, 127), // Cacnea (F) (Quirky) + new NPCLock(285, 00, 1, 127), // Shroomish (F) (Hardy) + new NPCLock(270, 00, 0, 127), // Lotad (M) (Hardy) + new NPCLock(204, 06, 0, 127), // Pineco (M) (Docile) + }}; + + public static readonly TeamLock XSpinarak = new TeamLock { + Species = 167, // Spinarak + Locks = new NPCLock[] { + new NPCLock(220, 12, 1, 127), // Swinub (F) (Serious) + new NPCLock(353, 06, 0, 127), // Shuppet (M) (Docile) + }}; + + public static readonly TeamLock XNumel = new TeamLock { + Species = 322, // Numel + Locks = new NPCLock[] { + new NPCLock(280, 06, 0, 127), // Ralts (M) (Docile) + new NPCLock(100, 00, 2, 256), // Voltorb (-) (Hardy) + new NPCLock(371, 24, 1, 127), // Bagon (F) (Quirky) + }}; + + public static readonly TeamLock XShroomish = new TeamLock { + Species = 285, // Shroomish + Locks = new NPCLock[] { + new NPCLock(209, 24, 1, 191), // Snubbull (F) (Quirky) + new NPCLock(352, 00, 1, 127), // Kecleon (F) (Hardy) + }}; + + public static readonly TeamLock XDelcatty = new TeamLock { + Species = 301, // Delcatty + Locks = new NPCLock[] { + new NPCLock(370, 06, 1, 191), // Luvdisc (F) (Docile) + new NPCLock(267, 00, 0, 127), // Beautifly (M) (Hardy) + new NPCLock(315, 24, 0, 127), // Roselia (M) (Quirky) + }}; + + public static readonly TeamLock XVoltorb = new TeamLock { + Species = 100, // Voltorb + Locks = new NPCLock[] { + new NPCLock(271, 00, 0, 127), // Lombre (M) (Hardy) + new NPCLock(271, 18, 0, 127), // Lombre (M) (Bashful) + new NPCLock(271, 12, 1, 127), // Lombre (F) (Serious) + }}; + + public static readonly TeamLock XMakuhita = new TeamLock { + Species = 296, // Makuhita + Locks = new NPCLock[] { + new NPCLock(352, 06, 0, 127), // Kecleon (M) (Docile) + new NPCLock(283, 18, 1, 127), // Surskit (F) (Bashful) + }}; + + public static readonly TeamLock XVulpix = new TeamLock { + Species = 037, // Vulpix + Locks = new NPCLock[] { + new NPCLock(167, 00, 0, 127), // Spinarak (M) (Hardy) + new NPCLock(267, 06, 1, 127), // Beautifly (F) (Docile) + new NPCLock(269, 18, 0, 127), // Dustox (M) (Bashful) + }}; + + public static readonly TeamLock XDuskull = new TeamLock { + Species = 355, // Duskull + Locks = new NPCLock[] { + new NPCLock(215, 12, 0, 127), // Sneasel (M) (Serious) + new NPCLock(193, 18, 1, 127), // Yanma (F) (Bashful) + new NPCLock(200, 24, 0, 127), // Misdreavus (M) (Quirky) + }}; + + public static readonly TeamLock XMawile = new TeamLock { + Species = 303, // Mawile + Locks = new NPCLock[] { + new NPCLock(294, 06, 0, 127), // Loudred (M) (Docile) + new NPCLock(203, 18, 1, 127), // Girafarig (F) (Bashful) + }}; + + public static readonly TeamLock XSnorunt = new TeamLock { + Species = 361, // Snorunt + Locks = new NPCLock[] { + new NPCLock(336, 06, 1, 127), // Seviper (F) (Docile) + }}; + + public static readonly TeamLock XPineco = new TeamLock { + Species = 204, // Pineco + Locks = new NPCLock[] { + new NPCLock(198, 06, 0, 127), // Murkrow (M) (Docile) + }}; + + public static readonly TeamLock XNatu = new TeamLock { + Species = 177, // Natu + Locks = new NPCLock[] { + new NPCLock(281, 00, 0, 127), // Kirlia (M) (Hardy) + new NPCLock(264, 00, 1, 127), // Linoone (F) (Hardy) + }}; + + public static readonly TeamLock XRoselia = new TeamLock { + Species = 315, // Roselia + Locks = new NPCLock[] { + new NPCLock(223, 06, 0, 127), // Remoraid (M) (Docile) + new NPCLock(042, 18, 0, 127), // Golbat (M) (Bashful) + }}; + + public static readonly TeamLock XMeowth = new TeamLock { + Species = 052, // Meowth + Locks = new NPCLock[] { + new NPCLock(064, 06, 0, 063), // Kadabra (M) (Docile) + new NPCLock(215, 00, 1, 127), // Sneasel (F) (Hardy) + new NPCLock(200, 18, 1, 127), // Misdreavus (F) (Bashful) + }}; + + public static readonly TeamLock XSwinub = new TeamLock { + Species = 220, // Swinub + Locks = new NPCLock[] { + new NPCLock(324, 18, 1, 127), // Torkoal (F) (Bashful) + new NPCLock(274, 00, 0, 127), // Nuzleaf (M) (Hardy) + }}; + + public static readonly TeamLock XSpearow = new TeamLock { + Species = 021, // Spearow + Locks = new NPCLock[] { + new NPCLock(279, 18, 0, 127), // Pelipper (M) (Bashful) + new NPCLock(309, 06, 1, 127), // Electrike (F) (Docile) + }}; + + public static readonly TeamLock XGrimer = new TeamLock { + Species = 088, // Grimer + Locks = new NPCLock[] { + new NPCLock(358, 12, 0, 127), // Chimecho (M) (Serious) + new NPCLock(234, 18, 0, 127), // Stantler (M) (Bashful) + }}; + + public static readonly TeamLock XSeel = new TeamLock { + Species = 086, // Seel + Locks = new NPCLock[] { + new NPCLock(163, 06, 0, 127), // Hoothoot (M) (Docile) + new NPCLock(075, 18, 0, 127), // Graveler (M) (Bashful) + new NPCLock(316, 18, 1, 127), // Gulpin (F) (Bashful) + }}; + + public static readonly TeamLock XLunatone = new TeamLock { + Species = 337, // Lunatone + Locks = new NPCLock[] { + new NPCLock(171, 00, 1, 127), // Lanturn (F) (Hardy) + new NPCLock(195, 18, 0, 127), // Quagsire (M) (Bashful) + }}; + + public static readonly TeamLock XNosepass = new TeamLock { + Species = 299, // Nosepass + Locks = new NPCLock[] { + new NPCLock(271, 00, 0, 127), // Lombre (M) (Hardy) + new NPCLock(271, 18, 0, 127), // Lombre (M) (Bashful) + new NPCLock(271, 12, 1, 127), // Lombre (F) (Serious) + }}; + + public static readonly TeamLock XParas = new TeamLock { + Species = 046, // Paras + Locks = new NPCLock[] { + new NPCLock(336, 24, 0, 127), // Seviper (M) (Quirky) + new NPCLock(198, 06, 1, 127), // Murkrow (F) (Docile) + }}; + + public static readonly TeamLock XGrowlithe = new TeamLock { + Species = 058, // Growlithe + Locks = new NPCLock[] { + new NPCLock(336, 24, 0, 127), // Seviper (M) (Quirky) + new NPCLock(198, 06, 1, 127), // Murkrow (F) (Docile) + new NPCLock(046), // Shadow Paras + }}; + + public static readonly TeamLock XGrowlitheParasSeen = new TeamLock { + Species = 058, // Growlithe + Comment = "Paras Seen", + Locks = new NPCLock[] { + new NPCLock(336, 24, 0, 127), // Seviper (M) (Quirky) + new NPCLock(198, 06, 1, 127), // Murkrow (F) (Docile) + new NPCLock(046, true), // Shadow Paras (Seen) + }}; + + public static readonly TeamLock XPidgeotto = new TeamLock { + Species = 017, // Pidgeotto + Locks = new NPCLock[] { + new NPCLock(015), // Shadow Beedrill + new NPCLock(162, 12, 0, 127), // Furret (M) (Serious) + new NPCLock(176, 18, 0, 031), // Togetic (M) (Bashful) + }}; + + public static readonly TeamLock XPidgeottoBeedrillSeen = new TeamLock { + Species = 017, // Pidgeotto + Comment = "Beedrill Seen", + Locks = new NPCLock[] { + new NPCLock(015, true), // Shadow Beedrill (Seen) + new NPCLock(162, 12, 0, 127), // Furret (M) (Serious) + new NPCLock(176, 18, 0, 031), // Togetic (M) (Bashful) + }}; + + public static readonly TeamLock XTangela = new TeamLock { + Species = 114, // Tangela + Locks = new NPCLock[] { + new NPCLock(038, 12, 0, 191), // Ninetales (M) (Serious) + new NPCLock(189, 06, 0, 127), // Jumpluff (M) (Docile) + new NPCLock(184, 00, 1, 127), // Azumarill (F) (Hardy) + }}; + + public static readonly TeamLock XButterfree = new TeamLock { + Species = 012, // Butterfree + Locks = new NPCLock[] { + new NPCLock(038, 12, 0, 191), // Ninetales (M) (Serious) + new NPCLock(189, 06, 0, 127), // Jumpluff (M) (Docile) + new NPCLock(184, 00, 1, 127), // Azumarill (F) (Hardy) + new NPCLock(114), // Shadow Tangela + }}; + + public static readonly TeamLock XButterfreeTangelaSeen = new TeamLock { + Species = 012, // Butterfree + Comment = "Tangela Seen", + Locks = new NPCLock[] { + new NPCLock(038, 12, 0, 191), // Ninetales (M) (Serious) + new NPCLock(189, 06, 0, 127), // Jumpluff (M) (Docile) + new NPCLock(184, 00, 1, 127), // Azumarill (F) (Hardy) + new NPCLock(114, true), // Shadow Tangela (Seen) + }}; + + public static readonly TeamLock XMagneton = new TeamLock { + Species = 082, // Magneton + Locks = new NPCLock[] { + new NPCLock(292, 18, 2, 256), // Shedinja (-) (Bashful) + new NPCLock(202, 00, 0, 127), // Wobbuffet (M) (Hardy) + new NPCLock(329, 12, 1, 127), // Vibrava (F) (Serious) + }}; + + public static readonly TeamLock XVenomoth = new TeamLock { + Species = 049, // Venomoth + Locks = new NPCLock[] { + new NPCLock(055, 18, 1, 127), // Golduck (F) (Bashful) + new NPCLock(237, 24, 0, 000), // Hitmontop (M) (Quirky) + new NPCLock(297, 12, 0, 063), // Hariyama (M) (Serious) + }}; + + public static readonly TeamLock XWeepinbell = new TeamLock { + Species = 070, // Weepinbell + Locks = new NPCLock[] { + new NPCLock(055, 18, 1, 127), // Golduck (F) (Bashful) + new NPCLock(237, 24, 0, 000), // Hitmontop (M) (Quirky) + new NPCLock(297, 12, 0, 063), // Hariyama (M) (Serious) + new NPCLock(049), // Shadow Venomoth + }}; + + public static readonly TeamLock XWeepinbellVenomothSeen = new TeamLock { + Species = 070, // Weepinbell + Comment = "Venomoth Seen", + Locks = new NPCLock[] { + new NPCLock(055, 18, 1, 127), // Golduck (F) (Bashful) + new NPCLock(237, 24, 0, 000), // Hitmontop (M) (Quirky) + new NPCLock(297, 12, 0, 063), // Hariyama (M) (Serious) + new NPCLock(049, true), // Shadow Venomoth (Seen) + }}; + + public static readonly TeamLock XArbok = new TeamLock { + Species = 024, // Arbok + Locks = new NPCLock[] { + new NPCLock(367, 06, 0, 127), // Huntail (M) (Docile) + new NPCLock(332, 00, 1, 127), // Cacturne (F) (Hardy) + new NPCLock(110, 12, 1, 127), // Weezing (F) (Serious) + new NPCLock(217, 18, 1, 127), // Ursaring (F) (Bashful) + }}; + + public static readonly TeamLock XPrimeape = new TeamLock { + Species = 057, // Primeape + Locks = new NPCLock[] { + new NPCLock(305, 18, 1, 127), // Lairon (F) (Bashful) + new NPCLock(364, 12, 1, 127), // Sealeo (F) (Serious) + new NPCLock(199, 06, 1, 127), // Slowking (F) (Docile) + new NPCLock(217, 24, 0, 127), // Ursaring (M) (Quirky) + }}; + + public static readonly TeamLock XHypno = new TeamLock { + Species = 097, // Hypno + Locks = new NPCLock[] { + new NPCLock(305, 18, 1, 127), // Lairon (F) (Bashful) + new NPCLock(364, 12, 1, 127), // Sealeo (F) (Serious) + new NPCLock(199, 06, 1, 127), // Slowking (F) (Docile) + new NPCLock(217, 24, 0, 127), // Ursaring (M) (Quirky) + new NPCLock(057), // Shadow Primeape + }}; + + public static readonly TeamLock XHypnoPrimeapeSeen = new TeamLock { + Species = 097, // Hypno + Comment = "Primeape Seen", + Locks = new NPCLock[] { + new NPCLock(305, 18, 1, 127), // Lairon (F) (Bashful) + new NPCLock(364, 12, 1, 127), // Sealeo (F) (Serious) + new NPCLock(199, 06, 1, 127), // Slowking (F) (Docile) + new NPCLock(217, 24, 0, 127), // Ursaring (M) (Quirky) + new NPCLock(057, true), // Shadow Primeape (Seen) + }}; + + public static readonly TeamLock XGolduck = new TeamLock { + Species = 055, // Golduck + Locks = new NPCLock[] { + new NPCLock(342, 24, 0, 127), // Crawdaunt (M) (Quirky) + new NPCLock(279, 06, 1, 127), // Pelipper (F) (Docile) + new NPCLock(226, 18, 1, 127), // Mantine (F) (Bashful) + }}; + + public static readonly TeamLock XSableye = new TeamLock { + Species = 302, // Sableye + Locks = new NPCLock[] { + new NPCLock(342, 24, 0, 127), // Crawdaunt (M) (Quirky) + new NPCLock(279, 06, 1, 127), // Pelipper (F) (Docile) + new NPCLock(226, 18, 1, 127), // Mantine (F) (Bashful) + new NPCLock(055), // Shadow Golduck + }}; + + public static readonly TeamLock XSableyeGolduckSeen = new TeamLock { + Species = 302, // Sableye + Comment = "Golduck Seen", + Locks = new NPCLock[] { + new NPCLock(342, 24, 0, 127), // Crawdaunt (M) (Quirky) + new NPCLock(279, 06, 1, 127), // Pelipper (F) (Docile) + new NPCLock(226, 18, 1, 127), // Mantine (F) (Bashful) + new NPCLock(055, true), // Shadow Golduck (Seen) + }}; + + public static readonly TeamLock XDodrio = new TeamLock { + Species = 085, // Dodrio + Locks = new NPCLock[] { + new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful) + }}; + + public static readonly TeamLock XRaticate = new TeamLock { + Species = 020, // Raticate + Locks = new NPCLock[] { + new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful) + new NPCLock(085), // Shadow Dodrio + new NPCLock(340, 18, 0, 127), // Whiscash (M) (Bashful) + }}; + public static readonly TeamLock XRaticateDodrioSeen = new TeamLock { + Species = 020, // Raticate + Comment = "Dodrio Seen", + Locks = new NPCLock[] { + new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful) + new NPCLock(085, true), // Shadow Dodrio (Seen) + new NPCLock(340, 18, 0, 127), // Whiscash (M) (Bashful) + }}; + + public static readonly TeamLock XFarfetchd = new TeamLock { + Species = 083, // Farfetch’d + Locks = new NPCLock[] { + new NPCLock(282, 12, 0, 127), // Gardevoir (M) (Serious) + new NPCLock(368, 00, 1, 127), // Gorebyss (F) (Hardy) + new NPCLock(315, 24, 0, 127), // Roselia (M) (Quirky) + }}; + + public static readonly TeamLock XAltaria = new TeamLock { + Species = 334, // Altaria + Locks = new NPCLock[] { + new NPCLock(282, 12, 0, 127), // Gardevoir (M) (Serious) + new NPCLock(368, 00, 1, 127), // Gorebyss (F) (Hardy) + new NPCLock(315, 24, 0, 127), // Roselia (M) (Quirky) + new NPCLock(083), // Shadow Farfetch’d + }}; + + public static readonly TeamLock XAltariaFarfetchdSeen = new TeamLock { + Species = 334, // Altaria + Comment = "Farfetch'd Seen", + Locks = new NPCLock[] { + new NPCLock(282, 12, 0, 127), // Gardevoir (M) (Serious) + new NPCLock(368, 00, 1, 127), // Gorebyss (F) (Hardy) + new NPCLock(315, 24, 0, 127), // Roselia (M) (Quirky) + new NPCLock(083, true), // Shadow Farfetch’d (Seen) + }}; + + public static readonly TeamLock XKangaskhan = new TeamLock { + Species = 115, // Kangaskhan + Locks = new NPCLock[] { + new NPCLock(101, 18, 2, 127), // Electrode (-) (Bashful) + new NPCLock(200), // Shadow Misdreavus + new NPCLock(344, 18, 2, 127), // Claydol (-) (Bashful) + }}; + + public static readonly TeamLock XBanette = new TeamLock { + Species = 354, // Banette + Locks = new NPCLock[] { + new NPCLock(101, 18, 2, 127), // Electrode (-) (Bashful) + new NPCLock(200), // Shadow Misdreavus + new NPCLock(344, 18, 2, 127), // Claydol (-) (Bashful) + new NPCLock(115), // Shadow Kangaskhan + }}; + + public static readonly TeamLock XBanetteKangaskhanSeen = new TeamLock { + Species = 354, // Banette + Comment = "Kangaskhan Seen", + Locks = new NPCLock[] { + new NPCLock(101, 18, 2, 127), // Electrode (-) (Bashful) + new NPCLock(200), // Shadow Misdreavus + new NPCLock(344, 18, 2, 127), // Claydol (-) (Bashful) + new NPCLock(115, true), // Shadow Kangaskhan (Seen) + }}; + + public static readonly TeamLock XMagmar = new TeamLock { + Species = 126, // Magmar + Locks = new NPCLock[] { + new NPCLock(229, 18, 0, 127), // Houndoom (M) (Bashful) + new NPCLock(038, 18, 0, 191), // Ninetales (M) (Bashful) + new NPCLock(045, 00, 1, 127), // Vileplume (F) (Hardy) + }}; + + public static readonly TeamLock XPinsir = new TeamLock { + Species = 127, // Pinsir + Locks = new NPCLock[] { + new NPCLock(229, 18, 0, 127), // Houndoom (M) (Bashful) + new NPCLock(038, 18, 0, 191), // Ninetales (M) (Bashful) + new NPCLock(045, 00, 1, 127), // Vileplume (F) (Hardy) + new NPCLock(126), // Shadow Magmar + }}; + + public static readonly TeamLock XPinsirMagmarSeen = new TeamLock { + Species = 127, // Pinsir + Comment = "Magmar Seen", + Locks = new NPCLock[] { + new NPCLock(229, 18, 0, 127), // Houndoom (M) (Bashful) + new NPCLock(038, 18, 0, 191), // Ninetales (M) (Bashful) + new NPCLock(045, 00, 1, 127), // Vileplume (F) (Hardy) + new NPCLock(126, true), // Shadow Magmar (Seen) + }}; + + public static readonly TeamLock XRapidash = new TeamLock { + Species = 078, // Rapidash + Locks = new NPCLock[] { + new NPCLock(323, 24, 0, 127), // Camerupt (M) (Quirky) + new NPCLock(110, 06, 0, 127), // Weezing (M) (Docile) + new NPCLock(089, 12, 1, 127), // Muk (F) (Serious) + }}; + + public static readonly TeamLock XMagcargo = new TeamLock { + Species = 219, // Magcargo + Locks = new NPCLock[] { + new NPCLock(323, 24, 0, 127), // Camerupt (M) (Quirky) + new NPCLock(110, 06, 0, 127), // Weezing (M) (Docile) + new NPCLock(089, 12, 1, 127), // Muk (F) (Serious) + new NPCLock(078), // Shadow Rapidash + }}; + + public static readonly TeamLock XMagcargoRapidashSeen = new TeamLock { + Species = 219, // Magcargo + Comment = "Rapidash Seen", + Locks = new NPCLock[] { + new NPCLock(323, 24, 0, 127), // Camerupt (M) (Quirky) + new NPCLock(110, 06, 0, 127), // Weezing (M) (Docile) + new NPCLock(089, 12, 1, 127), // Muk (F) (Serious) + new NPCLock(078, true), // Shadow Rapidash (Seen) + }}; + + public static readonly TeamLock XHitmonchan = new TeamLock { + Species = 107, // Hitmonchan + Locks = new NPCLock[] { + new NPCLock(308, 24, 0, 127), // Medicham (M) (Quirky) + new NPCLock(076, 06, 1, 127), // Golem (F) (Docile) + new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful) + }}; + + public static readonly TeamLock XHitmonlee = new TeamLock { + Species = 106, // Hitmonlee + Locks = new NPCLock[] { + new NPCLock(326, 18, 0, 127), // Grumpig (M) (Bashful) + new NPCLock(227, 12, 0, 127), // Skarmory (M) (Serious) + new NPCLock(375, 06, 2, 256), // Metang (-) (Docile) + new NPCLock(297, 24, 1, 063), // Hariyama (F) (Quirky) + }}; + + public static readonly TeamLock XLickitung = new TeamLock { + Species = 108, // Lickitung + Locks = new NPCLock[] { + new NPCLock(171, 24, 0, 127), // Lanturn (M) (Quirky) + new NPCLock(082, 06, 2, 256), // Magneton (-) (Docile) + }}; + + public static readonly TeamLock XScyther = new TeamLock { + Species = 123, // Scyther + Locks = new NPCLock[] + { + new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile) + new NPCLock(295, 24, 0, 256), // Exploud (M) (Quirky) + }}; + + public static readonly TeamLock XChansey = new TeamLock { + Species = 113, // Chansey + Locks = new NPCLock[] { + new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile) + new NPCLock(295, 24, 0, 256), // Exploud (M) (Quirky) + new NPCLock(123), // Shadow Scyther + }}; + + public static readonly TeamLock XChanseyScytherSeen = new TeamLock { + Species = 113, // Chansey + Comment = "Scyther Seen", + Locks = new NPCLock[] { + new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile) + new NPCLock(295, 24, 0, 256), // Exploud (M) (Quirky) + new NPCLock(123, true), // Shadow Scyther (Seen) + }}; + + public static readonly TeamLock XSolrock = new TeamLock { + Species = 338, // Solrock + Locks = new NPCLock[] { + new NPCLock(375, 24, 2, 256), // Metang (-) (Quirky) + new NPCLock(195, 06, 0, 127), // Quagsire (M) (Docile) + new NPCLock(212, 00, 1, 127), // Scizor (F) (Hardy) + }}; + + public static readonly TeamLock XStarmie = new TeamLock { + Species = 121, // Starmie + Locks = new NPCLock[] { + new NPCLock(375, 24, 2, 256), // Metang (-) (Quirky) + new NPCLock(195, 06, 0, 127), // Quagsire (M) (Docile) + new NPCLock(212, 00, 1, 127), // Scizor (F) (Hardy) + new NPCLock(338), // Shadow Solrock + new NPCLock(351, 18, 0, 127), // Castform (M) (Bashful) + }}; + + public static readonly TeamLock XStarmieSolrockSeen = new TeamLock { + Species = 121, // Starmie + Comment = "Solrock Seen", + Locks = new NPCLock[] { + new NPCLock(375, 24, 2, 256), // Metang (-) (Quirky) + new NPCLock(195, 06, 0, 127), // Quagsire (M) (Docile) + new NPCLock(212, 00, 1, 127), // Scizor (F) (Hardy) + new NPCLock(338, true), // Shadow Solrock (Seen) + new NPCLock(351, 18, 0, 127), // Castform (M) (Bashful) + }}; + + public static readonly TeamLock XElectabuzz = new TeamLock { + Species = 125, // Electabuzz + Locks = new NPCLock[] { + new NPCLock(277), // Shadow Swellow + new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious) + new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful) + new NPCLock(214, 18, 1, 127), // Heracross (F) (Bashful) + }}; + + public static readonly TeamLock XElectabuzzSwellowSeen = new TeamLock { + Species = 125, // Electabuzz + Comment = "Swellow Seen", + Locks = new NPCLock[] { + new NPCLock(277, true), // Shadow Swellow (Seen) + new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious) + new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful) + new NPCLock(214, 18, 1, 127), // Heracross (F) (Bashful) + }}; + + public static readonly TeamLock XSnorlax = new TeamLock { + Species = 143, // Snorlax + Locks = new NPCLock[] { + new NPCLock(277), // Shadow Swellow + new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious) + new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful) + new NPCLock(214, 18, 1, 127), // Heracross (F) (Bashful) + }}; + + public static readonly TeamLock XSnorlaxSwellowSeen = new TeamLock { + Species = 143, // Snorlax + Comment = "Swellow Seen", + Locks = new NPCLock[] { + new NPCLock(277, true), // Shadow Swellow (Seen) + new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious) + new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful) + new NPCLock(214, 18, 1, 127), // Heracross (F) (Bashful) + }}; + + public static readonly TeamLock XSnorlaxSwellowElectabuzzSeen = new TeamLock { + Species = 143, // Snorlax + Comment = "Swellow & Electabuzz Seen", + Locks = new NPCLock[] { + new NPCLock(277, true), // Shadow Swellow (Seen) + new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious) + new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful) + new NPCLock(214, 18, 1, 127), // Heracross (F) (Bashful) + }}; + + public static readonly TeamLock XPoliwrath = new TeamLock { + Species = 062, // Poliwrath + Locks = new NPCLock[] { + new NPCLock(199, 18, 0, 127), // Slowking (M) (Bashful) + new NPCLock(217, 18, 0, 127), // Ursaring (M) (Bashful) + new NPCLock(306, 24, 0, 127), // Aggron (M) (Quirky) + new NPCLock(365, 06, 1, 127), // Walrein (F) (Docile) + }}; + + public static readonly TeamLock XMrMime = new TeamLock { + Species = 122, // Mr. Mime + Locks = new NPCLock[] { + new NPCLock(199, 18, 0, 127), // Slowking (M) (Bashful) + new NPCLock(217, 18, 0, 127), // Ursaring (M) (Bashful) + new NPCLock(306, 24, 0, 127), // Aggron (M) (Quirky) + new NPCLock(365, 06, 1, 127), // Walrein (F) (Docile) + new NPCLock(062), // Shadow Poliwrath + }}; + + public static readonly TeamLock XMrMimePoliwrathSeen = new TeamLock { + Species = 122, // Mr. Mime + Comment = "Poliwrath Seen", + Locks = new NPCLock[] { + new NPCLock(199, 18, 0, 127), // Slowking (M) (Bashful) + new NPCLock(217, 18, 0, 127), // Ursaring (M) (Bashful) + new NPCLock(306, 24, 0, 127), // Aggron (M) (Quirky) + new NPCLock(365, 06, 1, 127), // Walrein (F) (Docile) + new NPCLock(062, true), // Shadow Poliwrath (Seen) + }}; + + public static readonly TeamLock XDugtrio = new TeamLock { + Species = 051, // Dugtrio + Locks = new NPCLock[] { + new NPCLock(362, 00, 0, 127), // Glalie (M) (Hardy) + new NPCLock(181, 18, 0, 127), // Ampharos (M) (Bashful) + new NPCLock(286, 06, 0, 127), // Breloom (M) (Docile) + new NPCLock(232, 12, 1, 127), // Donphan (F) (Serious) + }}; + + public static readonly TeamLock XManectric = new TeamLock { + Species = 310, // Manectric + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + }}; + + public static readonly TeamLock XSalamence = new TeamLock { + Species = 373, // Salamence + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310), // Shadow Manectric + }}; + + public static readonly TeamLock XMarowak = new TeamLock { + Species = 105, // Marowak + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310), // Shadow Manectric + new NPCLock(373), // Shadow Salamence + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + }}; + + public static readonly TeamLock XLapras = new TeamLock { + Species = 131, // Lapras + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310), // Shadow Manectric + new NPCLock(373), // Shadow Salamence + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + new NPCLock(105), // Shadow Marowak + }}; + + public static readonly TeamLock XSalamenceManectricSeen = new TeamLock { + Species = 373, // Salamence + Comment = "Manectric Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + }}; + + public static readonly TeamLock XMarowakManectricSeen = new TeamLock { + Species = 105, // Marowak + Comment = "Manectric Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373), // Shadow Salamence + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + }}; + + public static readonly TeamLock XMarowakManectricSalamenceSeen = new TeamLock { + Species = 105, // Marowak + Comment = "Manectric & Salamence Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373, true), // Shadow Salamence (Seen) + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + }}; + + public static readonly TeamLock XLaprasManectricSeen = new TeamLock { + Species = 131, // Lapras + Comment = "Manectric Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373), // Shadow Salamence + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + new NPCLock(105), // Shadow Marowak + }}; + + public static readonly TeamLock XLaprasManectricSalamenceSeen = new TeamLock { + Species = 131, // Lapras + Comment = "Manectric & Salamence Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373, true), // Shadow Salamence (Seen) + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + new NPCLock(105), // Shadow Marowak + }}; + + public static readonly TeamLock XLaprasManectricMarowakSeen = new TeamLock { + Species = 131, // Lapras + Comment = "Manectric & Marowak Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373), // Shadow Salamence + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + new NPCLock(105, true), // Shadow Marowak (Seen) + }}; + + public static readonly TeamLock XLaprasManectricSalamenceMarowakSeen = new TeamLock { + Species = 131, // Lapras + Comment = "Manectric & Salamence & Marowak Seen", + Locks = new NPCLock[] { + new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile) + new NPCLock(310, true), // Shadow Manectric (Seen) + new NPCLock(373, true), // Shadow Salamence (Seen) + new NPCLock(330, 24, 0, 127), // Flygon (M) (Quirky) + new NPCLock(105, true), // Shadow Marowak (Seen) + }}; + + public static readonly TeamLock XMoltres = new TeamLock { + Species = 146, // Moltres + Locks = new NPCLock[] { + new NPCLock(112), // Shadow Rhydon + }}; + + public static readonly TeamLock XExeggutor = new TeamLock { + Species = 103, // Exeggutor + Locks = new NPCLock[] { + new NPCLock(112), // Shadow Rhydon + new NPCLock(146), // Shadow Moltres + }}; + + public static readonly TeamLock XTauros = new TeamLock { + Species = 128, // Tauros + Locks = new NPCLock[] { + new NPCLock(112), // Shadow Rhydon + new NPCLock(146), // Shadow Moltres + new NPCLock(103), // Shadow Exeggutor + }}; + + public static readonly TeamLock XArticuno = new TeamLock { + Species = 144, // Articuno + Locks = new NPCLock[] { + new NPCLock(112), // Shadow Rhydon + new NPCLock(146), // Shadow Moltres + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128), // Shadow Tauros + }}; + + public static readonly TeamLock XZapdos = new TeamLock { + Species = 145, // Zapdos + Locks = new NPCLock[] { + new NPCLock(112), // Shadow Rhydon + new NPCLock(146), // Shadow Moltres + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128), // Shadow Tauros + new NPCLock(144), // Shadow Articuno + }}; + + public static readonly TeamLock XExeggutorRhydonMoltresSeen = new TeamLock { + Species = 103, // Exeggutor + Comment = "Rhydon & Moltres Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + }}; + + public static readonly TeamLock XTaurosRhydonMoltresSeen = new TeamLock { + Species = 128, // Tauros + Comment = "Rhydon & Moltres Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + }}; + + public static readonly TeamLock XTaurosRhydonMoltresExeggutorSeen = new TeamLock { + Species = 128, // Tauros + Comment = "Rhydon & Moltres & Exeggutor Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + }}; + + public static readonly TeamLock XArticunoRhydonMoltresSeen = new TeamLock { + Species = 144, // Articuno + Comment = "Rhydon & Moltres Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128), // Shadow Tauros + }}; + + public static readonly TeamLock XArticunoRhydonMoltresTaurosSeen = new TeamLock { + Species = 144, // Articuno + Comment = "Rhydon & Moltres & Tauros Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128, true), // Shadow Tauros (Seen) + }}; + + public static readonly TeamLock XArticunoRhydonMoltresExeggutorSeen = new TeamLock { + Species = 144, // Articuno + Comment = "Rhydon & Moltres & Exeggutor Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128), // Shadow Tauros + }}; + + public static readonly TeamLock XArticunoRhydonMoltresExeggutorTaurosSeen = new TeamLock { + Species = 144, // Articuno + Comment = "Rhydon & Moltres & Exeggutor & Tauros Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128, true), // Shadow Tauros (Seen) + }}; + + public static readonly TeamLock XZapdosRhydonMoltresSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128), // Shadow Tauros + new NPCLock(144), // Shadow Articuno + }}; + + public static readonly TeamLock XZapdosRhydonMoltresTaurosSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Tauros Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128, true), // Shadow Tauros (Seen) + new NPCLock(144), // Shadow Articuno + }}; + + public static readonly TeamLock XZapdosRhydonMoltresArticunoSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Articuno Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128), // Shadow Tauros + new NPCLock(144, true), // Shadow Articuno (Seen) + }}; + + public static readonly TeamLock XZapdosRhydonMoltresExeggutorSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Exeggutor Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128), // Shadow Tauros + new NPCLock(144), // Shadow Articuno + }}; + + public static readonly TeamLock XZapdosRhydonMoltresTaurosArticunoSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Tauros & Articuno Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103), // Shadow Exeggutor + new NPCLock(128, true), // Shadow Tauros (Seen) + new NPCLock(144, true), // Shadow Articuno (Seen) + }}; + + public static readonly TeamLock XZapdosRhydonMoltresExeggutorTaurosSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Exeggutor & Tauros Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128, true), // Shadow Tauros (Seen) + new NPCLock(144), // Shadow Articuno + }}; + + public static readonly TeamLock XZapdosRhydonMoltresExeggutorArticunoSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Exeggutor & Articuno Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128), // Shadow Tauros + new NPCLock(144, true), // Shadow Articuno (Seen) + }}; + + public static readonly TeamLock XZapdosRhydonMoltresExeggutorTaurosArticunoSeen = new TeamLock { + Species = 145, // Zapdos + Comment = "Rhydon & Moltres & Exeggutor & Tauros & Articuno Seen", + Locks = new NPCLock[] { + new NPCLock(112, true), // Shadow Rhydon (Seen) + new NPCLock(146, true), // Shadow Moltres (Seen) + new NPCLock(103, true), // Shadow Exeggutor (Seen) + new NPCLock(128, true), // Shadow Tauros (Seen) + new NPCLock(144, true), // Shadow Articuno (Seen) + }}; + + public static readonly TeamLock XDragonite = new TeamLock { + Species = 149, // Dragonite + Locks = new NPCLock[] { + new NPCLock(272, 00, 0, 127), // Ludicolo (M) (Hardy) + new NPCLock(272, 18, 0, 127), // Ludicolo (M) (Bashful) + new NPCLock(272, 12, 1, 127), // Ludicolo (F) (Serious) + new NPCLock(272, 12, 1, 127), // Ludicolo (F) (Serious) + new NPCLock(272, 00, 0, 127), // Ludicolo (M) (Hardy) + }}; + } +} diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters3Teams.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters3Teams.cs new file mode 100644 index 000000000..065301e38 --- /dev/null +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters3Teams.cs @@ -0,0 +1,88 @@ +using static PKHeX.Core.Encounters3Shadow; + +namespace PKHeX.Core +{ + public static class Encounters3Teams + { + // Colo + public static readonly TeamLock[] ColoMakuhita = { CMakuhita }; + public static readonly TeamLock[] Gligar = { CGligar }; + public static readonly TeamLock[] Murkrow = { CMurkrow }; + public static readonly TeamLock[] Heracross = { CHeracross }; + public static readonly TeamLock[] Ursaring = { CUrsaring }; + + // XD + public static readonly TeamLock[] Spheal = { XSphealCipherLab, XSphealPhenacCityandPost }; + public static readonly TeamLock[] Seedot = { XSeedotCipherLab, XSeedotPhenacCity, XSeedotPost }; + + public static readonly TeamLock[] Ralts = { XRalts }; + public static readonly TeamLock[] Poochyena = { XPoochyena }; + public static readonly TeamLock[] Ledyba = { XLedyba }; + public static readonly TeamLock[] Gulpin = { XGulpin }; + public static readonly TeamLock[] Spinarak = { XSpinarak }; + public static readonly TeamLock[] Numel = { XNumel }; + public static readonly TeamLock[] Shroomish = { XShroomish }; + public static readonly TeamLock[] Delcatty = { XDelcatty }; + public static readonly TeamLock[] Voltorb = { XVoltorb }; + public static readonly TeamLock[] Makuhita = { XMakuhita }; + public static readonly TeamLock[] Vulpix = { XVulpix }; + public static readonly TeamLock[] Duskull = { XDuskull }; + public static readonly TeamLock[] Mawile = { XMawile }; + public static readonly TeamLock[] Snorunt = { XSnorunt }; + public static readonly TeamLock[] Pineco = { XPineco }; + public static readonly TeamLock[] Natu = { XNatu }; + public static readonly TeamLock[] Roselia = { XRoselia }; + public static readonly TeamLock[] Meowth = { XMeowth }; + public static readonly TeamLock[] Swinub = { XSwinub }; + public static readonly TeamLock[] Spearow = { XSpearow }; + public static readonly TeamLock[] Grimer = { XGrimer }; + public static readonly TeamLock[] Seel = { XSeel }; + public static readonly TeamLock[] Lunatone = { XLunatone }; + public static readonly TeamLock[] Nosepass = { XNosepass }; + public static readonly TeamLock[] Paras = { XParas }; + public static readonly TeamLock[] Growlithe = { XGrowlithe, XGrowlitheParasSeen }; + public static readonly TeamLock[] Pidgeotto = { XPidgeotto, XPidgeottoBeedrillSeen }; + public static readonly TeamLock[] Tangela = { XTangela }; + public static readonly TeamLock[] Butterfree = { XButterfree, XButterfreeTangelaSeen }; + public static readonly TeamLock[] Magneton = { XMagneton }; + public static readonly TeamLock[] Venomoth = { XVenomoth }; + public static readonly TeamLock[] Weepinbell = { XWeepinbell, XWeepinbellVenomothSeen }; + public static readonly TeamLock[] Arbok = { XArbok }; + public static readonly TeamLock[] Primeape = { XPrimeape }; + public static readonly TeamLock[] Hypno = { XHypno, XHypnoPrimeapeSeen }; + public static readonly TeamLock[] Golduck = { XGolduck }; + public static readonly TeamLock[] Sableye = { XSableye, XSableyeGolduckSeen }; + public static readonly TeamLock[] Dodrio = { XDodrio }; + public static readonly TeamLock[] Raticate = { XRaticate, XRaticateDodrioSeen }; + public static readonly TeamLock[] Farfetchd = { XFarfetchd }; + public static readonly TeamLock[] Altaria = { XAltaria, XAltariaFarfetchdSeen }; + public static readonly TeamLock[] Kangaskhan = { XKangaskhan }; + public static readonly TeamLock[] Banette = { XBanette, XBanetteKangaskhanSeen }; + public static readonly TeamLock[] Magmar = { XMagmar }; + public static readonly TeamLock[] Pinsir = { XPinsir, XPinsirMagmarSeen }; + public static readonly TeamLock[] Rapidash = { XRapidash }; + public static readonly TeamLock[] Magcargo = { XMagcargo, XMagcargoRapidashSeen }; + public static readonly TeamLock[] Hitmonchan = { XHitmonchan }; + public static readonly TeamLock[] Hitmonlee = { XHitmonlee }; + public static readonly TeamLock[] Lickitung = { XLickitung }; + public static readonly TeamLock[] Scyther = { XScyther }; + public static readonly TeamLock[] Chansey = { XChansey, XChanseyScytherSeen }; + public static readonly TeamLock[] Solrock = { XSolrock }; + public static readonly TeamLock[] Starmie = { XStarmie, XStarmieSolrockSeen }; + public static readonly TeamLock[] Electabuzz = { XElectabuzz, XElectabuzzSwellowSeen }; + public static readonly TeamLock[] Snorlax = { XSnorlax, XSnorlaxSwellowSeen, XSnorlaxSwellowElectabuzzSeen }; + public static readonly TeamLock[] Poliwrath = { XPoliwrath }; + public static readonly TeamLock[] MrMime = { XMrMime, XMrMimePoliwrathSeen }; + public static readonly TeamLock[] Dugtrio = { XDugtrio }; + public static readonly TeamLock[] Manectric = { XManectric }; + public static readonly TeamLock[] Salamence = { XSalamence, XSalamenceManectricSeen }; + public static readonly TeamLock[] Marowak = { XMarowak, XMarowakManectricSeen, XMarowakManectricSalamenceSeen }; + public static readonly TeamLock[] Lapras = { XLapras, XLaprasManectricSeen, XLaprasManectricSalamenceSeen, XLaprasManectricMarowakSeen, XLaprasManectricSalamenceMarowakSeen }; + public static readonly TeamLock[] Moltres = { XMoltres }; + public static readonly TeamLock[] Exeggutor = { XExeggutor, XExeggutorRhydonMoltresSeen }; + public static readonly TeamLock[] Tauros = { XTauros, XTaurosRhydonMoltresSeen, XTaurosRhydonMoltresExeggutorSeen }; + public static readonly TeamLock[] Articuno = { XArticuno, XArticunoRhydonMoltresSeen, XArticunoRhydonMoltresTaurosSeen, XArticunoRhydonMoltresExeggutorSeen, XArticunoRhydonMoltresExeggutorTaurosSeen }; + public static readonly TeamLock[] Zapdos = { XZapdos, XZapdosRhydonMoltresSeen, XZapdosRhydonMoltresTaurosSeen, XZapdosRhydonMoltresArticunoSeen, XZapdosRhydonMoltresExeggutorSeen, XZapdosRhydonMoltresTaurosArticunoSeen, XZapdosRhydonMoltresExeggutorTaurosSeen, XZapdosRhydonMoltresExeggutorArticunoSeen, XZapdosRhydonMoltresExeggutorTaurosArticunoSeen }; + public static readonly TeamLock[] Dragonite = { XDragonite }; + } +} diff --git a/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs b/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs index 783057b75..1237fa432 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs @@ -4,26 +4,35 @@ namespace PKHeX.Core { internal class EncounterStaticShadow : EncounterStatic { - public EncounterLock[][] Locks { get; internal set; } = Array.Empty(); + public TeamLock[] Locks { get; internal set; } = Array.Empty(); public int Gauge { get; internal set; } public bool EReader { get; set; } internal override EncounterStatic Clone() { var result = (EncounterStaticShadow)base.Clone(); - result.CloneLocks(); + if (Locks.Length > 0) + { + result.Locks = new TeamLock[Locks.Length]; + for (int i = 0; i < Locks.Length; i++) + result.Locks[i] = Locks[i].Clone(); + } return result; } + } - private void CloneLocks() + public class TeamLock + { + public int Species; + public string Comment; + public NPCLock[] Locks; + + internal TeamLock Clone() { - Locks = new EncounterLock[Locks.Length][]; - for (var i = 0; i < Locks.Length; i++) - { - Locks[i] = (EncounterLock[])Locks[i].Clone(); - for (int j = 0; j < Locks[i].Length; j++) - Locks[i][j] = Locks[i][j].Clone(); - } + var c = new TeamLock { Comment = Comment, Locks = (NPCLock[])Locks.Clone() }; + for (int i = 0; i < Locks.Length; i++) + Locks[i] = Locks[i].Clone(); + return c; } } } \ No newline at end of file diff --git a/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs b/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs index f9b88d788..d83bfa3e7 100644 --- a/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs +++ b/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace PKHeX.Core { @@ -8,9 +9,40 @@ namespace PKHeX.Core public sealed class NPCLock { public int Species; - public uint? Nature = null; - public uint? Gender = null; - public bool Shadow = false; + public uint Nature; + public uint Gender; + public uint Ratio; + public bool Shadow; + public bool Seen = false; + + public NPCLock(int s, uint n, uint g, uint r) + { + Species = s; + Nature = n; + Gender = g; + Ratio = r; + } + + public NPCLock(int s, bool seen = false) + { + Species = s; + Nature = 25; + Shadow = true; + Seen = seen; + } + + public bool MatchesLock(uint PID) + { + if (Shadow) + return true; + if (Gender != 2 && Gender != ((PID & 0xFF) < Ratio ? 1 : 0)) + return false; + if (Nature != PID % 25) + return false; + return true; + } + + internal NPCLock Clone() => (NPCLock)MemberwiseClone(); } /// @@ -49,7 +81,8 @@ namespace PKHeX.Core return VerifyNPC(cache, ctr, PIDs, XD, out originFrame); var l = Locks.Pop(); - foreach (var poss in FindPossibleLockFrames(cache, ctr, l, prior)) + var frames = FindPossibleLockFrames(cache, ctr, l, prior); + foreach (var poss in frames) { PIDs.Push(poss.PID); // possible match if (FindLockSeed(cache, poss.FrameID, Locks, l, PIDs, XD, out originFrame)) @@ -73,7 +106,7 @@ namespace PKHeX.Core private static IEnumerable GetSingleLockFrame(FrameCache cache, int ctr, NPCLock l) { uint pid = cache[ctr + 1] << 16 | cache[ctr]; - if (MatchesLock(l, pid, PKX.GetGenderFromPID(l.Species, pid))) + if (l.MatchesLock(pid)) yield return new SeedFrame { FrameID = ctr + 6, PID = pid }; } @@ -91,11 +124,11 @@ namespace PKHeX.Core if (p7 > start) { uint cid = cache[p7 + 1] << 16 | cache[p7]; - if (MatchesLock(prior, cid, PKX.GetGenderFromPID(prior.Species, cid))) + if (prior.MatchesLock(cid)) yield break; } uint pid = cache[ctr + 1] << 16 | cache[ctr]; - if (MatchesLock(l, pid, PKX.GetGenderFromPID(l.Species, pid))) + if (l.MatchesLock(pid)) yield return new SeedFrame { FrameID = ctr + 6, PID = pid }; ctr += 2; @@ -119,15 +152,6 @@ namespace PKHeX.Core private static bool IsShiny(uint TID, uint SID, uint PID) => (TID ^ SID ^ (PID >> 16) ^ (PID & 0xFFFF)) < 8; private static bool IsShiny(int TID, int SID, uint PID) => (TID ^ SID ^ (PID >> 16) ^ (PID & 0xFFFF)) < 8; - private static bool MatchesLock(NPCLock k, uint PID, int Gender) - { - if (k.Nature != null && k.Nature != PID % 25) - return false; - if (k.Gender != null && k.Gender != Gender) - return false; - return true; - } - // Colosseum/XD Starters public static bool IsXDStarterValid(uint seed, int TID, int SID) { diff --git a/Tests/PKHeX.Tests/Legality/ShadowTests.cs b/Tests/PKHeX.Tests/Legality/ShadowTests.cs new file mode 100644 index 000000000..1601b4404 --- /dev/null +++ b/Tests/PKHeX.Tests/Legality/ShadowTests.cs @@ -0,0 +1,117 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using PKHeX.Core; + +namespace PKHeX.Tests.Legality +{ + [TestClass] + public class ShadowTests + { + private const string LegalityValidCategory = "Shadow Lock Validity Tests"; + + [TestMethod] + [TestCategory(LegalityValidCategory)] + public void VerifyLock1() + { + // Zubat (F) (Serious) + Verify(Encounters3Teams.Poochyena, 0xAF4E3161, new[] { 11, 29, 25, 6, 23, 10 }); + + // Murkrow (M) (Docile) + Verify(Encounters3Teams.Pineco, 0xC3A0F1E5, new[] { 30, 3, 9, 10, 27, 30 }); + } + + [TestMethod] + [TestCategory(LegalityValidCategory)] + public void VerifyLock2() + { + // Goldeen (F) (Serious) + // Horsea (M) (Quirky) + Verify(Encounters3Teams.Spheal, 0xA459BF44, new[] { 0, 11, 4, 28, 6, 13 }); + + // Kirlia (M) (Hardy) + // Linoone (F) (Hardy) + Verify(Encounters3Teams.Natu, 0x8E14DAB6, new[] { 29, 24, 30, 16, 3, 18 }); + + // Remoraid (M) (Docile) + // Golbat (M) (Bashful) + // Verify(Encounters3Teams.Roselia, 0x30E87CC7, new[] { 22, 11, 8, 26, 4, 29 }); + } + + [TestMethod] + [TestCategory(LegalityValidCategory)] + public void VerifyLock3() + { + // Luvdisc (F) (Docile) + // Beautifly (M) (Hardy) + // Roselia (M) (Quirky) + Verify(Encounters3Teams.Delcatty, 0x9BECA2A6, new[] { 31, 31, 25, 13, 22, 1 }); + + // Kadabra (M) (Docile) + // Sneasel (F) (Hardy) + // Misdreavus (F) (Bashful) + Verify(Encounters3Teams.Meowth, 0x77D87601, new[] { 10, 27, 26, 13, 30, 19 }); + + // Ralts (M) (Docile) + // Voltorb (-) (Hardy) + // Bagon (F) (Quirky) + // Verify(Encounters3Teams.Numel, 0x37F95B26, new[] { 11, 8, 5, 10, 28, 14 }); + } + + [TestMethod] + [TestCategory(LegalityValidCategory)] + public void VerifyLock4() + { + // Ninetales (M) (Serious) + // Jumpluff (M) (Docile) + // Azumarill (F) (Hardy) + // Shadow Tangela + // Verify(Encounters3Teams.Butterfree, 0x2E49AC34, new[] { 15, 24, 7, 2, 11, 2 }); + + // Huntail (M) (Docile) + // Cacturne (F) (Hardy) + // Weezing (F) (Serious) + // Ursaring (F) (Bashful) + // Verify(Encounters3Teams.Arbok, 0x1973FD07, new[] { 13, 30, 3, 16, 20, 9 }); + + // Lairon (F) (Bashful) + // Sealeo (F) (Serious) + // Slowking (F) (Docile) + // Ursaring (M) (Quirky) + // Verify(Encounters3Teams.Primeape, 0x33893D4C, new[] { 26, 25, 24, 28, 29, 30 }); + } + + [TestMethod] + [TestCategory(LegalityValidCategory)] + public void VerifyLock5() + { + // many prior, all non shadow + // Verify(Encounters3Teams.Seedot, 0x8CBD29DB, new[] { 19, 29, 30, 0, 7, 2 }); + } + + private static void Verify(TeamLock[] teams, uint pid, int[] ivs, bool xd = true) + { + var pk3 = new PK3 { PID = pid, IVs = ivs }; + var info = MethodFinder.Analyze(pk3); + Assert.AreEqual(PIDType.CXD, info.Type, "Unable to match PID to CXD spread!"); + bool match = GetCanOriginateFrom(teams, info, xd, out var _); + Assert.IsTrue(match, "Unable to verify lock conditions: " + teams[0].Species); + } + + /// + /// Checks if the PIDIV can originate from + /// + /// + /// + /// + private static bool GetCanOriginateFrom(TeamLock[] possibleTeams, PIDIV info, bool XD, out uint origin) + { + foreach (var team in possibleTeams) + { + var result = LockFinder.FindLockSeed(info.OriginSeed, team.Locks, XD, out origin); + if (result) + return true; + } + origin = 0; + return false; + } + } +} diff --git a/Tests/PKHeX.Tests/PKHeX.Tests.csproj b/Tests/PKHeX.Tests/PKHeX.Tests.csproj index 990b91462..229e2cc4f 100644 --- a/Tests/PKHeX.Tests/PKHeX.Tests.csproj +++ b/Tests/PKHeX.Tests/PKHeX.Tests.csproj @@ -73,6 +73,7 @@ +