From 4268239c12e4a2b25d97b169bf0929009e1466f7 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 28 Oct 2018 11:15:40 -0700 Subject: [PATCH] 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 --- .../Encounters/Data/Encounters3Shadow.cs | 236 +++++++++--------- .../Encounters/EncounterStaticShadow.cs | 15 -- .../Encounters/Information/EncounterLock.cs | 15 -- PKHeX.Core/Legality/RNG/Locks/LockFinder.cs | 56 +---- PKHeX.Core/Legality/RNG/Locks/NPCLock.cs | 44 ++++ PKHeX.Core/Legality/RNG/Locks/TeamLock.cs | 17 ++ Tests/PKHeX.Tests/Legality/ShadowTests.cs | 8 +- 7 files changed, 191 insertions(+), 200 deletions(-) delete mode 100644 PKHeX.Core/Legality/Encounters/Information/EncounterLock.cs create mode 100644 PKHeX.Core/Legality/RNG/Locks/NPCLock.cs create mode 100644 PKHeX.Core/Legality/RNG/Locks/TeamLock.cs diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs index 457525e5a..44333f994 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters3Shadow.cs @@ -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, // Farfetch’d - 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) diff --git a/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs b/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs index 26a5fc36c..9b918b8fd 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterStaticShadow.cs @@ -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; - } - } } \ No newline at end of file diff --git a/PKHeX.Core/Legality/Encounters/Information/EncounterLock.cs b/PKHeX.Core/Legality/Encounters/Information/EncounterLock.cs deleted file mode 100644 index 27f90cfbc..000000000 --- a/PKHeX.Core/Legality/Encounters/Information/EncounterLock.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace PKHeX.Core -{ - /// - /// Encounter lock values restricting certain properties to a fixed value. - /// - /// Used in Colosseum/XD to ensure that non-shadow are of a certain Nature/etc. - 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(); - } -} diff --git a/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs b/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs index 53e79f9cc..7bae0cc14 100644 --- a/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs +++ b/PKHeX.Core/Legality/RNG/Locks/LockFinder.cs @@ -1,50 +1,7 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace PKHeX.Core { - /// - /// Locks associated to a given NPC PKM that appears before a . - /// - 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(); - } - /// /// Contains various Colosseum/XD 'wait for value' logic related to PKM generation. /// @@ -97,7 +54,7 @@ namespace PKHeX.Core private static IEnumerable 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 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(); 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; diff --git a/PKHeX.Core/Legality/RNG/Locks/NPCLock.cs b/PKHeX.Core/Legality/RNG/Locks/NPCLock.cs new file mode 100644 index 000000000..95609a6d0 --- /dev/null +++ b/PKHeX.Core/Legality/RNG/Locks/NPCLock.cs @@ -0,0 +1,44 @@ +namespace PKHeX.Core +{ + /// + /// Locks associated to a given NPC PKM that appears before a . + /// + 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(); + } +} \ No newline at end of file diff --git a/PKHeX.Core/Legality/RNG/Locks/TeamLock.cs b/PKHeX.Core/Legality/RNG/Locks/TeamLock.cs new file mode 100644 index 000000000..a67a732ca --- /dev/null +++ b/PKHeX.Core/Legality/RNG/Locks/TeamLock.cs @@ -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; + } + } +} \ No newline at end of file diff --git a/Tests/PKHeX.Tests/Legality/ShadowTests.cs b/Tests/PKHeX.Tests/Legality/ShadowTests.cs index 97989bdbf..8f9c359ab 100644 --- a/Tests/PKHeX.Tests/Legality/ShadowTests.cs +++ b/Tests/PKHeX.Tests/Legality/ShadowTests.cs @@ -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)