Continue work on shadow lock checks

Now gets count=2 tests working

yield return new SeedFrame { FrameID = ctr + (l.Seen ? 5 : 7), PID = pid
};
used to be ctr + 6, needs to alternate even-odd
all 2 lock cases pass, but didn't make lock3's pass. Something else is
still amiss :)

break out some classes for the solidified lock objects
This commit is contained in:
Kurt 2018-10-28 11:15:40 -07:00
parent 39f98a4a94
commit 4268239c12
7 changed files with 191 additions and 200 deletions

View file

@ -4,14 +4,14 @@
{
public static readonly TeamLock CMakuhita = new TeamLock {
Species = 296, // Makuhita
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(216, 12, 0, 127), // Teddiursa (M) (Serious)
new NPCLock(039, 06, 1, 191), // Jigglypuff (F) (Docile)
new NPCLock(285, 18, 0, 127), // Shroomish (M) (Bashful)
@ -19,7 +19,7 @@
public static readonly TeamLock CMurkrow = new TeamLock {
Species = 198, // Murkrow
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(318, 06, 0, 127), // Carvanha (M) (Docile)
new NPCLock(274, 12, 1, 127), // Nuzleaf (F) (Serious)
new NPCLock(228, 18, 0, 127), // Houndour (M) (Bashful)
@ -27,14 +27,14 @@
public static readonly TeamLock CHeracross = new TeamLock {
Species = 214, // Heracross
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(067, 20, 1, 063), // Machoke (F) (Calm)
new NPCLock(259, 16, 0, 031), // Marshtomp (M) (Mild)
new NPCLock(275, 21, 1, 127), // Shiftry (F) (Gentle)
@ -42,7 +42,7 @@
public static readonly TeamLock XRalts = new TeamLock {
Species = 280, // Ralts
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -50,20 +50,20 @@
public static readonly TeamLock XPoochyena = new TeamLock {
Species = 261, // Poochyena
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(041, 12, 1, 127), // Zubat (F) (Serious)
}};
public static readonly TeamLock XLedyba = new TeamLock {
Species = 165, // Ledyba
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(116, 24, 0, 063), // Horsea (M) (Quirky)
new NPCLock(118, 12, 1, 127), // Goldeen (F) (Serious)
}};
@ -71,7 +71,7 @@
public static readonly TeamLock XSphealPhenacCityandPost = new TeamLock {
Species = 363, // Spheal
Comment = "Phenac City and Post",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -79,7 +79,7 @@
public static readonly TeamLock XGulpin = new TeamLock {
Species = 316, // Gulpin
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(109, 12, 1, 127), // Koffing (F) (Serious)
new NPCLock(088, 06, 0, 127), // Grimer (M) (Docile)
}};
@ -87,7 +87,7 @@
public static readonly TeamLock XSeedotCipherLab = new TeamLock {
Species = 273, // Seedot
Comment = "Cipher Lab",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -98,7 +98,7 @@
public static readonly TeamLock XSeedotPhenacCity = new TeamLock {
Species = 273, // Seedot
Comment = "Phenac City",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -109,7 +109,7 @@
public static readonly TeamLock XSeedotPost = new TeamLock {
Species = 273, // Seedot
Comment = "Post",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -119,14 +119,14 @@
public static readonly TeamLock XSpinarak = new TeamLock {
Species = 167, // Spinarak
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -134,14 +134,14 @@
public static readonly TeamLock XShroomish = new TeamLock {
Species = 285, // Shroomish
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -149,7 +149,7 @@
public static readonly TeamLock XVoltorb = new TeamLock {
Species = 100, // Voltorb
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -157,14 +157,14 @@
public static readonly TeamLock XMakuhita = new TeamLock {
Species = 296, // Makuhita
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -172,7 +172,7 @@
public static readonly TeamLock XDuskull = new TeamLock {
Species = 355, // Duskull
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -180,40 +180,40 @@
public static readonly TeamLock XMawile = new TeamLock {
Species = 303, // Mawile
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(336, 06, 1, 127), // Seviper (F) (Docile)
}};
public static readonly TeamLock XPineco = new TeamLock {
Species = 204, // Pineco
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(198, 06, 0, 127), // Murkrow (M) (Docile)
}};
public static readonly TeamLock XNatu = new TeamLock {
Species = 177, // Natu
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -221,28 +221,28 @@
public static readonly TeamLock XSwinub = new TeamLock {
Species = 220, // Swinub
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -250,14 +250,14 @@
public static readonly TeamLock XLunatone = new TeamLock {
Species = 337, // Lunatone
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
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)
@ -265,14 +265,14 @@
public static readonly TeamLock XParas = new TeamLock {
Species = 046, // Paras
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(336, 24, 0, 127), // Seviper (M) (Quirky)
new NPCLock(198, 06, 1, 127), // Murkrow (F) (Docile)
new NPCLock(046), // Shadow Paras
@ -281,7 +281,7 @@
public static readonly TeamLock XGrowlitheParasSeen = new TeamLock {
Species = 058, // Growlithe
Comment = "Paras Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -289,7 +289,7 @@
public static readonly TeamLock XPidgeotto = new TeamLock {
Species = 017, // Pidgeotto
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(015), // Shadow Beedrill
new NPCLock(162, 12, 0, 127), // Furret (M) (Serious)
new NPCLock(176, 18, 0, 031), // Togetic (M) (Bashful)
@ -298,7 +298,7 @@
public static readonly TeamLock XPidgeottoBeedrillSeen = new TeamLock {
Species = 017, // Pidgeotto
Comment = "Beedrill Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -306,7 +306,7 @@
public static readonly TeamLock XTangela = new TeamLock {
Species = 114, // Tangela
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -314,7 +314,7 @@
public static readonly TeamLock XButterfree = new TeamLock {
Species = 012, // Butterfree
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -324,7 +324,7 @@
public static readonly TeamLock XButterfreeTangelaSeen = new TeamLock {
Species = 012, // Butterfree
Comment = "Tangela Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -333,7 +333,7 @@
public static readonly TeamLock XMagneton = new TeamLock {
Species = 082, // Magneton
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -341,7 +341,7 @@
public static readonly TeamLock XVenomoth = new TeamLock {
Species = 049, // Venomoth
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -349,7 +349,7 @@
public static readonly TeamLock XWeepinbell = new TeamLock {
Species = 070, // Weepinbell
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -359,7 +359,7 @@
public static readonly TeamLock XWeepinbellVenomothSeen = new TeamLock {
Species = 070, // Weepinbell
Comment = "Venomoth Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -368,7 +368,7 @@
public static readonly TeamLock XArbok = new TeamLock {
Species = 024, // Arbok
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -377,7 +377,7 @@
public static readonly TeamLock XPrimeape = new TeamLock {
Species = 057, // Primeape
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -386,7 +386,7 @@
public static readonly TeamLock XHypno = new TeamLock {
Species = 097, // Hypno
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -397,7 +397,7 @@
public static readonly TeamLock XHypnoPrimeapeSeen = new TeamLock {
Species = 097, // Hypno
Comment = "Primeape Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -407,7 +407,7 @@
public static readonly TeamLock XGolduck = new TeamLock {
Species = 055, // Golduck
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -415,7 +415,7 @@
public static readonly TeamLock XSableye = new TeamLock {
Species = 302, // Sableye
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -425,7 +425,7 @@
public static readonly TeamLock XSableyeGolduckSeen = new TeamLock {
Species = 302, // Sableye
Comment = "Golduck Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -434,13 +434,13 @@
public static readonly TeamLock XDodrio = new TeamLock {
Species = 085, // Dodrio
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful)
}};
public static readonly TeamLock XRaticate = new TeamLock {
Species = 020, // Raticate
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(178, 18, 1, 127), // Xatu (F) (Bashful)
new NPCLock(085), // Shadow Dodrio
new NPCLock(340, 18, 0, 127), // Whiscash (M) (Bashful)
@ -448,7 +448,7 @@
public static readonly TeamLock XRaticateDodrioSeen = new TeamLock {
Species = 020, // Raticate
Comment = "Dodrio Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -456,7 +456,7 @@
public static readonly TeamLock XFarfetchd = new TeamLock {
Species = 083, // Farfetchd
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -464,7 +464,7 @@
public static readonly TeamLock XAltaria = new TeamLock {
Species = 334, // Altaria
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -474,7 +474,7 @@
public static readonly TeamLock XAltariaFarfetchdSeen = new TeamLock {
Species = 334, // Altaria
Comment = "Farfetch'd Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -483,7 +483,7 @@
public static readonly TeamLock XKangaskhan = new TeamLock {
Species = 115, // Kangaskhan
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(101, 00, 2, 256), // Electrode (-) (Hardy)
new NPCLock(200, 18, 1, 127), // Misdreavus (F) (Bashful)
new NPCLock(344, 12, 2, 256), // Claydol (-) (Serious)
@ -491,7 +491,7 @@
public static readonly TeamLock XBanette = new TeamLock {
Species = 354, // Banette
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(101, 00, 2, 256), // Electrode (-) (Hardy)
new NPCLock(200, 18, 1, 127), // Misdreavus (F) (Bashful)
new NPCLock(344, 12, 2, 256), // Claydol (-) (Serious)
@ -501,7 +501,7 @@
public static readonly TeamLock XBanetteKangaskhanSeen = new TeamLock {
Species = 354, // Banette
Comment = "Kangaskhan Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(101, 00, 2, 256), // Electrode (-) (Hardy)
new NPCLock(200, 18, 1, 127), // Misdreavus (F) (Bashful)
new NPCLock(344, 12, 2, 256), // Claydol (-) (Serious)
@ -510,7 +510,7 @@
public static readonly TeamLock XMagmar = new TeamLock {
Species = 126, // Magmar
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -518,7 +518,7 @@
public static readonly TeamLock XPinsir = new TeamLock {
Species = 127, // Pinsir
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -528,7 +528,7 @@
public static readonly TeamLock XPinsirMagmarSeen = new TeamLock {
Species = 127, // Pinsir
Comment = "Magmar Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -537,7 +537,7 @@
public static readonly TeamLock XRapidash = new TeamLock {
Species = 078, // Rapidash
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -545,7 +545,7 @@
public static readonly TeamLock XMagcargo = new TeamLock {
Species = 219, // Magcargo
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -555,7 +555,7 @@
public static readonly TeamLock XMagcargoRapidashSeen = new TeamLock {
Species = 219, // Magcargo
Comment = "Rapidash Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -564,7 +564,7 @@
public static readonly TeamLock XHitmonchan = new TeamLock {
Species = 107, // Hitmonchan
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -572,7 +572,7 @@
public static readonly TeamLock XHitmonlee = new TeamLock {
Species = 106, // Hitmonlee
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -581,14 +581,14 @@
public static readonly TeamLock XLickitung = new TeamLock {
Species = 108, // Lickitung
Locks = new NPCLock[] {
Locks = new[] {
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[]
Locks = new[]
{
new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile)
new NPCLock(295, 24, 0, 127), // Exploud (M) (Quirky)
@ -596,7 +596,7 @@
public static readonly TeamLock XChansey = new TeamLock {
Species = 113, // Chansey
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile)
new NPCLock(295, 24, 0, 127), // Exploud (M) (Quirky)
new NPCLock(123), // Shadow Scyther
@ -605,7 +605,7 @@
public static readonly TeamLock XChanseyScytherSeen = new TeamLock {
Species = 113, // Chansey
Comment = "Scyther Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(234, 06, 1, 127), // Stantler (F) (Docile)
new NPCLock(295, 24, 0, 127), // Exploud (M) (Quirky)
new NPCLock(123, true), // Shadow Scyther (Seen)
@ -613,7 +613,7 @@
public static readonly TeamLock XSolrock = new TeamLock {
Species = 338, // Solrock
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -621,7 +621,7 @@
public static readonly TeamLock XStarmie = new TeamLock {
Species = 121, // Starmie
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -632,7 +632,7 @@
public static readonly TeamLock XStarmieSolrockSeen = new TeamLock {
Species = 121, // Starmie
Comment = "Solrock Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -642,7 +642,7 @@
public static readonly TeamLock XElectabuzz = new TeamLock {
Species = 125, // Electabuzz
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(277), // Shadow Swellow
new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious)
new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful)
@ -652,7 +652,7 @@
public static readonly TeamLock XElectabuzzSwellowSeen = new TeamLock {
Species = 125, // Electabuzz
Comment = "Swellow Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -661,7 +661,7 @@
public static readonly TeamLock XSnorlax = new TeamLock {
Species = 143, // Snorlax
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(277), // Shadow Swellow
new NPCLock(065, 12, 0, 063), // Alakazam (M) (Serious)
new NPCLock(230, 18, 1, 127), // Kingdra (F) (Bashful)
@ -672,7 +672,7 @@
public static readonly TeamLock XSnorlaxSwellowSeen = new TeamLock {
Species = 143, // Snorlax
Comment = "Swellow Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -683,7 +683,7 @@
public static readonly TeamLock XSnorlaxSwellowElectabuzzSeen = new TeamLock {
Species = 143, // Snorlax
Comment = "Swellow & Electabuzz Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -693,7 +693,7 @@
public static readonly TeamLock XPoliwrath = new TeamLock {
Species = 062, // Poliwrath
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -702,7 +702,7 @@
public static readonly TeamLock XMrMime = new TeamLock {
Species = 122, // Mr. Mime
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -713,7 +713,7 @@
public static readonly TeamLock XMrMimePoliwrathSeen = new TeamLock {
Species = 122, // Mr. Mime
Comment = "Poliwrath Seen",
Locks = new NPCLock[] {
Locks = new[] {
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)
@ -723,7 +723,7 @@
public static readonly TeamLock XDugtrio = new TeamLock {
Species = 051, // Dugtrio
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(362, 00, 0, 127), // Glalie (M) (Hardy)
new NPCLock(181, 18, 0, 127), // Ampharos (M) (Bashful)
new NPCLock(286, 06, 1, 127), // Breloom (F) (Docile)
@ -732,20 +732,20 @@
public static readonly TeamLock XManectric = new TeamLock {
Species = 310, // Manectric
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
}};
public static readonly TeamLock XSalamence = new TeamLock {
Species = 373, // Salamence
Locks = new NPCLock[] {
Locks = new[] {
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[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310), // Shadow Manectric
new NPCLock(373), // Shadow Salamence
@ -754,7 +754,7 @@
public static readonly TeamLock XLapras = new TeamLock {
Species = 131, // Lapras
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310), // Shadow Manectric
new NPCLock(373), // Shadow Salamence
@ -765,7 +765,7 @@
public static readonly TeamLock XSalamenceManectricSeen = new TeamLock {
Species = 373, // Salamence
Comment = "Manectric Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
}};
@ -773,7 +773,7 @@
public static readonly TeamLock XMarowakManectricSeen = new TeamLock {
Species = 105, // Marowak
Comment = "Manectric Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373), // Shadow Salamence
@ -783,7 +783,7 @@
public static readonly TeamLock XMarowakManectricSalamenceSeen = new TeamLock {
Species = 105, // Marowak
Comment = "Manectric & Salamence Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373, true), // Shadow Salamence (Seen)
@ -793,7 +793,7 @@
public static readonly TeamLock XLaprasManectricSeen = new TeamLock {
Species = 131, // Lapras
Comment = "Manectric Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373), // Shadow Salamence
@ -804,7 +804,7 @@
public static readonly TeamLock XLaprasManectricSalamenceSeen = new TeamLock {
Species = 131, // Lapras
Comment = "Manectric & Salamence Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373, true), // Shadow Salamence (Seen)
@ -815,7 +815,7 @@
public static readonly TeamLock XLaprasManectricMarowakSeen = new TeamLock {
Species = 131, // Lapras
Comment = "Manectric & Marowak Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373), // Shadow Salamence
@ -826,7 +826,7 @@
public static readonly TeamLock XLaprasManectricSalamenceMarowakSeen = new TeamLock {
Species = 131, // Lapras
Comment = "Manectric & Salamence & Marowak Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(291, 06, 1, 127), // Ninjask (F) (Docile)
new NPCLock(310, true), // Shadow Manectric (Seen)
new NPCLock(373, true), // Shadow Salamence (Seen)
@ -836,20 +836,20 @@
public static readonly TeamLock XMoltres = new TeamLock {
Species = 146, // Moltres
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112), // Shadow Rhydon
}};
public static readonly TeamLock XExeggutor = new TeamLock {
Species = 103, // Exeggutor
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112), // Shadow Rhydon
new NPCLock(146), // Shadow Moltres
}};
public static readonly TeamLock XTauros = new TeamLock {
Species = 128, // Tauros
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112), // Shadow Rhydon
new NPCLock(146), // Shadow Moltres
new NPCLock(103), // Shadow Exeggutor
@ -857,7 +857,7 @@
public static readonly TeamLock XArticuno = new TeamLock {
Species = 144, // Articuno
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112), // Shadow Rhydon
new NPCLock(146), // Shadow Moltres
new NPCLock(103), // Shadow Exeggutor
@ -866,7 +866,7 @@
public static readonly TeamLock XZapdos = new TeamLock {
Species = 145, // Zapdos
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112), // Shadow Rhydon
new NPCLock(146), // Shadow Moltres
new NPCLock(103), // Shadow Exeggutor
@ -877,7 +877,7 @@
public static readonly TeamLock XExeggutorRhydonMoltresSeen = new TeamLock {
Species = 103, // Exeggutor
Comment = "Rhydon & Moltres Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
}};
@ -885,7 +885,7 @@
public static readonly TeamLock XTaurosRhydonMoltresSeen = new TeamLock {
Species = 128, // Tauros
Comment = "Rhydon & Moltres Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -894,7 +894,7 @@
public static readonly TeamLock XTaurosRhydonMoltresExeggutorSeen = new TeamLock {
Species = 128, // Tauros
Comment = "Rhydon & Moltres & Exeggutor Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -903,7 +903,7 @@
public static readonly TeamLock XArticunoRhydonMoltresSeen = new TeamLock {
Species = 144, // Articuno
Comment = "Rhydon & Moltres Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -913,7 +913,7 @@
public static readonly TeamLock XArticunoRhydonMoltresTaurosSeen = new TeamLock {
Species = 144, // Articuno
Comment = "Rhydon & Moltres & Tauros Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -923,7 +923,7 @@
public static readonly TeamLock XArticunoRhydonMoltresExeggutorSeen = new TeamLock {
Species = 144, // Articuno
Comment = "Rhydon & Moltres & Exeggutor Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -933,7 +933,7 @@
public static readonly TeamLock XArticunoRhydonMoltresExeggutorTaurosSeen = new TeamLock {
Species = 144, // Articuno
Comment = "Rhydon & Moltres & Exeggutor & Tauros Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -943,7 +943,7 @@
public static readonly TeamLock XZapdosRhydonMoltresSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -954,7 +954,7 @@
public static readonly TeamLock XZapdosRhydonMoltresTaurosSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Tauros Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -965,7 +965,7 @@
public static readonly TeamLock XZapdosRhydonMoltresArticunoSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Articuno Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -976,7 +976,7 @@
public static readonly TeamLock XZapdosRhydonMoltresExeggutorSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Exeggutor Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -987,7 +987,7 @@
public static readonly TeamLock XZapdosRhydonMoltresTaurosArticunoSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Tauros & Articuno Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103), // Shadow Exeggutor
@ -998,7 +998,7 @@
public static readonly TeamLock XZapdosRhydonMoltresExeggutorTaurosSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Exeggutor & Tauros Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -1009,7 +1009,7 @@
public static readonly TeamLock XZapdosRhydonMoltresExeggutorArticunoSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Exeggutor & Articuno Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -1020,7 +1020,7 @@
public static readonly TeamLock XZapdosRhydonMoltresExeggutorTaurosArticunoSeen = new TeamLock {
Species = 145, // Zapdos
Comment = "Rhydon & Moltres & Exeggutor & Tauros & Articuno Seen",
Locks = new NPCLock[] {
Locks = new[] {
new NPCLock(112, true), // Shadow Rhydon (Seen)
new NPCLock(146, true), // Shadow Moltres (Seen)
new NPCLock(103, true), // Shadow Exeggutor (Seen)
@ -1030,7 +1030,7 @@
public static readonly TeamLock XDragonite = new TeamLock {
Species = 149, // Dragonite
Locks = new NPCLock[] {
Locks = new[] {
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)

View file

@ -20,19 +20,4 @@ namespace PKHeX.Core
return result;
}
}
public class TeamLock
{
public int Species;
public string Comment;
public NPCLock[] Locks;
internal TeamLock 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;
}
}
}

View file

@ -1,15 +0,0 @@
namespace PKHeX.Core
{
/// <summary>
/// Encounter lock values restricting certain properties to a fixed value.
/// </summary>
/// <remarks>Used in Colosseum/XD to ensure that non-shadow <see cref="PKM"/> are of a certain Nature/etc.</remarks>
public sealed class EncounterLock
{
public int Species { get; set; }
public int Nature { get; set; } = -1;
public int Gender { get; set; } = -1;
public EncounterLock Clone() => (EncounterLock)MemberwiseClone();
}
}

View file

@ -1,50 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
namespace PKHeX.Core
{
/// <summary>
/// Locks associated to a given NPC PKM that appears before a <see cref="EncounterStaticShadow"/>.
/// </summary>
public sealed class NPCLock
{
public int Species;
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();
}
/// <summary>
/// Contains various Colosseum/XD 'wait for value' logic related to PKM generation.
/// </summary>
@ -97,7 +54,7 @@ namespace PKHeX.Core
private static IEnumerable<SeedFrame> FindPossibleLockFrames(FrameCache cache, int ctr, NPCLock l, NPCLock prior)
{
if (prior == null || prior.Shadow)
if (prior?.Shadow != false)
return GetSingleLockFrame(cache, ctr, l);
return GetComplexLockFrame(cache, ctr, l, prior);
@ -107,7 +64,7 @@ namespace PKHeX.Core
{
uint pid = cache[ctr + 1] << 16 | cache[ctr];
if (l.MatchesLock(pid))
yield return new SeedFrame { FrameID = ctr + 6, PID = pid };
yield return new SeedFrame { FrameID = ctr + (l.Seen ? 5 : 7), PID = pid };
}
private static IEnumerable<SeedFrame> GetComplexLockFrame(FrameCache cache, int ctr, NPCLock l, NPCLock prior)
@ -143,8 +100,11 @@ namespace PKHeX.Core
// verify none are shiny
foreach (var pid in PIDs)
{
if (IsShiny(tid, sid, pid))
return true; // todo
}
return true;
}
@ -169,7 +129,7 @@ namespace PKHeX.Core
var pids = new Stack<uint>();
var originSeed = pv.OriginSeed;
var cache = new FrameCache(RNG.XDRNG.Reverse(originSeed, 2), RNG.XDRNG.Prev);
var result = FindLockSeed(cache, 0, locks, null, pids, XD, out var originFrame);
var result = FindLockSeed(cache, 0, locks, null, pids, XD, out var _);
if (result)
return true;
}
@ -195,7 +155,7 @@ namespace PKHeX.Core
var rng = RNG.XDRNG;
var SIDf = rng.Reverse(seed, rev);
int ctr = 0;
uint temp = 0;
uint temp;
while ((temp = rng.Prev(SIDf)) >> 16 != TID || SIDf >> 16 != SID)
{
SIDf = temp;

View file

@ -0,0 +1,44 @@
namespace PKHeX.Core
{
/// <summary>
/// Locks associated to a given NPC PKM that appears before a <see cref="EncounterStaticShadow"/>.
/// </summary>
public sealed class NPCLock
{
public readonly int Species;
public readonly uint Nature;
public readonly uint Gender;
public readonly uint Ratio;
public readonly bool Shadow;
public readonly bool Seen;
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();
}
}

View file

@ -0,0 +1,17 @@
namespace PKHeX.Core
{
public class TeamLock
{
public int Species;
public string Comment;
public NPCLock[] Locks;
internal TeamLock 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;
}
}
}

View file

@ -31,9 +31,9 @@ namespace PKHeX.Tests.Legality
// Linoone (F) (Hardy)
Verify(Encounters3Teams.Natu, 0x8E14DAB6, new[] { 29, 24, 30, 16, 3, 18 });
// Remoraid (M) (Docile)
// Golbat (M) (Bashful)
VerifySingle(Encounters3Teams.Roselia, 0x30E87CC7, new[] { 22, 11, 8, 26, 4, 29 });
// Remoraid (M) (Docile) -- 73DB58CC
// Golbat (M) (Bashful) -- F6B04390
Verify(Encounters3Teams.Roselia, 0x30E87CC7, new[] { 22, 11, 8, 26, 4, 29 });
}
[TestMethod]
@ -43,7 +43,7 @@ namespace PKHeX.Tests.Legality
// Luvdisc (F) (Docile)
// Beautifly (M) (Hardy)
// Roselia (M) (Quirky)
Verify(Encounters3Teams.Delcatty, 0x9BECA2A6, new[] { 31, 31, 25, 13, 22, 1 });
VerifySingle(Encounters3Teams.Delcatty, 0x9BECA2A6, new[] { 31, 31, 25, 13, 22, 1 });
// Kadabra (M) (Docile)
// Sneasel (F) (Hardy)