From 46f5a9c29a1c8787a9683657ccbc79c31f32a992 Mon Sep 17 00:00:00 2001 From: Kurt Date: Thu, 23 Dec 2021 01:25:14 -0800 Subject: [PATCH] Remove inaccessible zone IDs from hatch location list Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com> Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com> --- PKHeX.Core/Legality/Tables/Tables8bs.cs | 41 +++++++++------- .../PKHeX.Core.Tests/Legality/LegalityBDSP.cs | 49 +++++++++++++++++++ 2 files changed, 71 insertions(+), 19 deletions(-) create mode 100644 Tests/PKHeX.Core.Tests/Legality/LegalityBDSP.cs diff --git a/PKHeX.Core/Legality/Tables/Tables8bs.cs b/PKHeX.Core/Legality/Tables/Tables8bs.cs index a33e9d4d6..f6f54eb23 100644 --- a/PKHeX.Core/Legality/Tables/Tables8bs.cs +++ b/PKHeX.Core/Legality/Tables/Tables8bs.cs @@ -295,58 +295,61 @@ public static partial class Legal }); #endregion - internal static readonly HashSet ValidMet_BDSP = new() + /// + /// Valid egg hatch locations for BD/SP + /// + public static readonly HashSet ValidMet_BDSP = new() { 000, 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019, - 020, 021, 022, 023, 024, 025, 026, 027, 028, 029, - 030, 031, 032, 033, 034, 035, 036, 037, 038, 039, + 021, 024, 025, 026, 027, 028, 029, + 030, 031, 032, 033, 034, 036, 037, 038, 039, 040, 041, 042, 043, 044, 045, 046, 047, 048, 049, 050, 051, 052, 053, 054, 055, 056, 057, 058, 059, 060, 061, 062, 063, 064, 065, 066, 067, 068, 069, 070, 071, 072, 073, 074, 075, 076, 077, 078, 079, 080, 081, 082, 083, 084, 085, 086, 087, 088, 089, - 090, 091, 092, 093, 094, 095, 096, 097, 098, 099, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 090, 091, 092, 093, 095, 096, 097, 098, 099, + 100, 101, 102, 104, 105, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 150, 151, 152, 153, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 180, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 210, 211, 212, 213, 214, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 280, 281, 282, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 320, 321, 322, 324, 325, 326, 327, 328, + 330, 331, 334, 335, 336, + 346, 347, 348, 349, + 350, 351, 352, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 420, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 470, 471, 472, 473, 475, 476, 477, 478, 479, + 480, 481, 482, 485, 486, 487, 488, 489, + 494, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, @@ -358,8 +361,8 @@ public static partial class Legal 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, + 610, 611, 612, 613, 614, 615, 616, 617, 619, + 624, 626, // Ramanas Park rooms with lights out 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, diff --git a/Tests/PKHeX.Core.Tests/Legality/LegalityBDSP.cs b/Tests/PKHeX.Core.Tests/Legality/LegalityBDSP.cs new file mode 100644 index 000000000..cc7908e1d --- /dev/null +++ b/Tests/PKHeX.Core.Tests/Legality/LegalityBDSP.cs @@ -0,0 +1,49 @@ +using System.Linq; +using FluentAssertions; +using Xunit; + +namespace PKHeX.Core.Tests.Legality +{ + public static class LegalityBDSP + { + private static readonly int[] LocationsNoHatch = + { + 020, 022, 023, // Jubilife City + 035, // Canalave City + 094, 103, 107, // Hearthome City + 154, 155, 158, // Sunyshore City + 181, 182, 183, // Pokémon League + 218, // Hall of Origin (Diamond) + 285, // Flower Paradise + 323, 329, // Lake Verity (start), Lake Acuity + 332, 333, // Newmoon Island + 337, 338, // Battle Park + 339, 340, 341, 342, 343, 344, // Battle Tower + 345, 353, 421, // Mystery Zone + 474, // Resort Area + 483, 484, // Mystery Zone + 490, // Seabreak Path + 491, 492, 493, // Mystery Zone + 495, // Ramanas Park + 618, // Hall of Origin (Pearl) + 620, 621, 622, 623, // Grand Underground (Secret Base) + 625, // Sea (sailing animation) + 627, 628, 629, 630, 631, 632, // Grand Underground (Secret Base) + 633, 634, 635, 636, 637, 638, // Grand Underground (Secret Base) + 639, 640, 641, 642, 643, 644, // Grand Underground (Secret Base) + 645, 646, 647, // Grand Underground (Secret Base) + }; + + [Fact] + public static void NoHatchLocations() + { + const int maxLegal = 658; + for (int i = 0; i < maxLegal; i++) + { + bool banned = LocationsNoHatch.Contains(i); + var isPermitted = Legal.ValidMet_BDSP.Contains(i); + isPermitted.Should().Be(!banned); + } + } + } +}