mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-26 22:10:21 +00:00
Add cxd lock check info & begin troubleshooting
commented out test calls = not working will have to debug in more detail later; the first lock is always working at least. data sourced from https://github.com/ijuintekka/Eligor/blob/master/Eligor/Spread.cs , not sure if it's perfect. can't cleanly condense deviating team appearances as double-shadow leads can't be selectively encountered. didn't feel like modding lockfinder's recursive algo to be smarter.
This commit is contained in:
parent
06cca185e4
commit
c0aae6ab78
7 changed files with 1394 additions and 116 deletions
|
@ -2,6 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using static PKHeX.Core.EncounterUtil;
|
using static PKHeX.Core.EncounterUtil;
|
||||||
|
using static PKHeX.Core.Encounters3Teams;
|
||||||
|
|
||||||
namespace PKHeX.Core
|
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 = 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 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
|
// 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
|
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 = 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 = 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 = 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 }, // Gligar: Hunter Frena @ Snagem Hideout
|
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 = 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 = 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
|
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 = 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 = 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 = 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 = 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 = 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
|
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 = 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 = 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 = 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 = 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
|
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 = 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 = 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 = 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 = 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 = 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)
|
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 = 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 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 = 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 = 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, }, // Poochyena: Bodybuilder Kilen @ 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 = 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 = 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 = 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 = 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, }, // Spheal: Cipher Peon Blusix @ 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, }, // Gulpin: Cipher Peon Purpsix @ 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, }, // Spinarak: Cipher Peon Nexir @ 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, }, // Numel: Cipher Peon Solox @ 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 = 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 = 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, }, // Delcatty: Cipher Admin Lovrina @ 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, }, // Voltorb: Wanderer Miror B. @ Cave Poké Spot
|
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, }, // Makuhita: Cipher Peon Torkin @ ONBS Building
|
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, }, // Vulpix: Cipher Peon Mesin @ 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, }, // Duskull: Cipher Peon Lobar @ 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, }, // Ralts: Cipher Peon Feldas @ 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, }, // Mawile: Cipher Cmdr Exol @ 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, }, // Snorunt: Cipher Peon Exinn @ Phenac City
|
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, }, // Pineco: Cipher Peon Gonrap @ 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, }, // Natu: Cipher Peon Eloin @ 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 = 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 }, // 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 }, // Meowth: Cipher Peon Fostin @ 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 }, // 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 = 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 }, // 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 }, // Grimer: Cipher Peon Faltly @ 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 }, // 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 = 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 }, // Lunatone: Cipher Admin Snattle @ 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 = 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 = 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 }, // 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 = 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 = 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 = 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 }, // 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 = 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 = 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 }, // Venomoth: Cipher Peon Angic @ 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 }, // Hypno: Cipher Admin Gorigan @ 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 }, // Banette: Cipher Peon Litnar @ Citadark Isle
|
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 = 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 = 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 = 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 }, // Tangela: Cipher Peon Targ @ 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 }, // Butterfree: 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 }, // Magneton: Cipher Peon Snidle @ 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 }, // Venomoth: Cipher Peon Angic @ 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 }, // Weepinbell: 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 }, // Arbok: Cipher Peon Smarton @ 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 }, // Primeape: Cipher Admin Gorigan @ 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 }, // Hypno: 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 }, // Golduck: Navigator Abson @ Citadark Isle
|
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 }, // Sableye: 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 }, // Dodrio: Chaser Furgy @ 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 }, // Raticate: 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 }, // Farfetch'd: Cipher Admin Lovrina @ 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 }, // Altaria: 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 }, // Kangaskhan: Cipher Peon Litnar @ 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 }, // Banette: 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 }, // Magmar: Cipher Peon Grupel @ 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 }, // Pinsir: 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 }, // Rapidash: Cipher Peon Kolest @ 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 }, // Magcargo: 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 }, // Hitmonchan: Cipher Peon Karbon @ 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 }, // Hitmonlee: Cipher Peon Petro @ 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 }, // Lickitung: Cipher Peon Geftal @ 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 }, // Scyther: Cipher Peon Leden @ 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 = 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 }, // 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 = 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 }, // Starmie: 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 = 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 = 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 }, // Snorlax: 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 }, // Poliwrath: Cipher Admin Gorigan @ 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 }, // Mr. Mime: 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 }, // Dugtrio: Cipher Peon Kolax @ 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 }, // Manectric: Cipher Admin Eldes @ 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 }, // Salamence: 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 }, // Marowak: 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 }, // Lapras: 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 = 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 = 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 = 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 }, // Exeggutor: 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 }, // Tauros: 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 }, // Articuno: 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 }, // Zapdos: 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 }, // Dragonite: Wanderer Miror B. @ Gateon Port
|
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();
|
}.SelectMany(CloneMirorB).ToArray();
|
||||||
|
|
||||||
internal static readonly EncounterArea[] SlotsXD =
|
internal static readonly EncounterArea[] SlotsXD =
|
||||||
|
|
1038
PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs
Normal file
1038
PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs
Normal file
File diff suppressed because it is too large
Load diff
88
PKHeX.Core/Legality/Encounters/Data/Encounters3Teams.cs
Normal file
88
PKHeX.Core/Legality/Encounters/Data/Encounters3Teams.cs
Normal file
|
@ -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 };
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,26 +4,35 @@ namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
internal class EncounterStaticShadow : EncounterStatic
|
internal class EncounterStaticShadow : EncounterStatic
|
||||||
{
|
{
|
||||||
public EncounterLock[][] Locks { get; internal set; } = Array.Empty<EncounterLock[]>();
|
public TeamLock[] Locks { get; internal set; } = Array.Empty<TeamLock>();
|
||||||
public int Gauge { get; internal set; }
|
public int Gauge { get; internal set; }
|
||||||
public bool EReader { get; set; }
|
public bool EReader { get; set; }
|
||||||
|
|
||||||
internal override EncounterStatic Clone()
|
internal override EncounterStatic Clone()
|
||||||
{
|
{
|
||||||
var result = (EncounterStaticShadow)base.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;
|
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][];
|
var c = new TeamLock { Comment = Comment, Locks = (NPCLock[])Locks.Clone() };
|
||||||
for (var i = 0; i < Locks.Length; i++)
|
for (int i = 0; i < Locks.Length; i++)
|
||||||
{
|
Locks[i] = Locks[i].Clone();
|
||||||
Locks[i] = (EncounterLock[])Locks[i].Clone();
|
return c;
|
||||||
for (int j = 0; j < Locks[i].Length; j++)
|
|
||||||
Locks[i][j] = Locks[i][j].Clone();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace PKHeX.Core
|
namespace PKHeX.Core
|
||||||
{
|
{
|
||||||
|
@ -8,9 +9,40 @@ namespace PKHeX.Core
|
||||||
public sealed class NPCLock
|
public sealed class NPCLock
|
||||||
{
|
{
|
||||||
public int Species;
|
public int Species;
|
||||||
public uint? Nature = null;
|
public uint Nature;
|
||||||
public uint? Gender = null;
|
public uint Gender;
|
||||||
public bool Shadow = false;
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -49,7 +81,8 @@ namespace PKHeX.Core
|
||||||
return VerifyNPC(cache, ctr, PIDs, XD, out originFrame);
|
return VerifyNPC(cache, ctr, PIDs, XD, out originFrame);
|
||||||
|
|
||||||
var l = Locks.Pop();
|
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
|
PIDs.Push(poss.PID); // possible match
|
||||||
if (FindLockSeed(cache, poss.FrameID, Locks, l, PIDs, XD, out originFrame))
|
if (FindLockSeed(cache, poss.FrameID, Locks, l, PIDs, XD, out originFrame))
|
||||||
|
@ -73,7 +106,7 @@ namespace PKHeX.Core
|
||||||
private static IEnumerable<SeedFrame> GetSingleLockFrame(FrameCache cache, int ctr, NPCLock l)
|
private static IEnumerable<SeedFrame> GetSingleLockFrame(FrameCache cache, int ctr, NPCLock l)
|
||||||
{
|
{
|
||||||
uint pid = cache[ctr + 1] << 16 | cache[ctr];
|
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 };
|
yield return new SeedFrame { FrameID = ctr + 6, PID = pid };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,11 +124,11 @@ namespace PKHeX.Core
|
||||||
if (p7 > start)
|
if (p7 > start)
|
||||||
{
|
{
|
||||||
uint cid = cache[p7 + 1] << 16 | cache[p7];
|
uint cid = cache[p7 + 1] << 16 | cache[p7];
|
||||||
if (MatchesLock(prior, cid, PKX.GetGenderFromPID(prior.Species, cid)))
|
if (prior.MatchesLock(cid))
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
uint pid = cache[ctr + 1] << 16 | cache[ctr];
|
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 };
|
yield return new SeedFrame { FrameID = ctr + 6, PID = pid };
|
||||||
|
|
||||||
ctr += 2;
|
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(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 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
|
// Colosseum/XD Starters
|
||||||
public static bool IsXDStarterValid(uint seed, int TID, int SID)
|
public static bool IsXDStarterValid(uint seed, int TID, int SID)
|
||||||
{
|
{
|
||||||
|
|
117
Tests/PKHeX.Tests/Legality/ShadowTests.cs
Normal file
117
Tests/PKHeX.Tests/Legality/ShadowTests.cs
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if the PIDIV can originate from
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="possibleTeams"></param>
|
||||||
|
/// <param name="info"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,7 @@
|
||||||
</Choose>
|
</Choose>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Legality\LegalityTests.cs" />
|
<Compile Include="Legality\LegalityTests.cs" />
|
||||||
|
<Compile Include="Legality\ShadowTests.cs" />
|
||||||
<Compile Include="PKM\PIDIVTests.cs" />
|
<Compile Include="PKM\PIDIVTests.cs" />
|
||||||
<Compile Include="PKM\PKMTests.cs" />
|
<Compile Include="PKM\PKMTests.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
|
Loading…
Reference in a new issue