Update met locations for hatching

Add the two invalid met locations (mystery zone, faraway place) to the
dropdown anyway
Also add some ball checks for gen7 (may be wrong, but better than
nothing)
This commit is contained in:
Kurt
2016-11-11 21:23:33 -08:00
parent a555de3f62
commit c4636d740d
2 changed files with 187 additions and 9 deletions

View File

@@ -850,11 +850,11 @@ private void verifyEggBallGen6()
if (0x02 <= pkm.Ball && pkm.Ball <= 0x0C) // Don't worry, Ball # 0x05 was already checked.
{
if (Legal.Ban_Gen3Ball.Contains(pkm.Species))
AddLine(Severity.Invalid, "Unobtainable capture for Gen4 Ball.", CheckIdentifier.Ball);
AddLine(Severity.Invalid, "Unobtainable capture for Gen3 Ball.", CheckIdentifier.Ball);
else if (pkm.AbilityNumber == 4 && 152 <= pkm.Species && pkm.Species <= 160)
AddLine(Severity.Invalid, "Ball not possible for species with hidden ability.", CheckIdentifier.Ball);
else
AddLine(Severity.Valid, "Obtainable capture for Gen4 Ball.", CheckIdentifier.Ball);
AddLine(Severity.Valid, "Obtainable capture for Gen3 Ball.", CheckIdentifier.Ball);
return;
}
@@ -872,6 +872,108 @@ private void verifyEggBallGen6()
private void verifyEggBallGen7()
{
var Lineage = Legal.getLineage(pkm).ToArray();
if (pkm.Ball == 0x05) // Safari Ball
{
if (Lineage.Any(e => Legal.Inherit_Safari.Contains(e)))
AddLine(Severity.Valid, "Safari Ball possible from Female parent.", CheckIdentifier.Ball);
else if (Lineage.Any(e => Legal.Inherit_SafariMale.Contains(e)))
AddLine(Severity.Valid, "Safari Ball possible from Male parent.", CheckIdentifier.Ball);
else
AddLine(Severity.Invalid, "Safari Ball not possible for species.", CheckIdentifier.Ball);
if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Safari Ball with Hidden Ability.", CheckIdentifier.Ball);
return;
}
if (0x10 < pkm.Ball && pkm.Ball < 0x18) // Apricorn Ball
{
if (Lineage.Any(e => Legal.PastGenAlolanNatives.Contains(e)))
{
AddLine(Severity.Valid, "Apricorn Ball possible for species.", CheckIdentifier.Ball);
return;
}
if (Lineage.Any(e => Legal.PastGenAlolanScans.Contains(e)))
{
AddLine(Severity.Valid, "Apricorn Ball possible for species.", CheckIdentifier.Ball);
if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Apricorn Ball with Hidden Ability.", CheckIdentifier.Ball);
}
if (Lineage.Any(e => Legal.Inherit_Apricorn.Contains(e)))
{
AddLine(Severity.Valid, "Apricorn Ball possible for species.", CheckIdentifier.Ball);
if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Apricorn Ball with Hidden Ability.", CheckIdentifier.Ball);
}
else
AddLine(Severity.Invalid, "Apricorn Ball not possible for species.", CheckIdentifier.Ball);
return;
}
if (pkm.Ball == 0x18) // Sport Ball
{
if (Lineage.All(e => !Legal.Inherit_Sport.Contains(e)))
AddLine(Severity.Invalid, "Sport Ball not possible for species.", CheckIdentifier.Ball);
else
AddLine(Severity.Valid, "Sport Ball possible for species.", CheckIdentifier.Ball);
if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Sport Ball with Hidden Ability.", CheckIdentifier.Ball);
return;
}
if (pkm.Ball == 0x19) // Dream Ball
{
if (Lineage.Any(e => Legal.Inherit_Dream.Contains(e)))
AddLine(Severity.Valid, "Dream Ball inheritance possible from Female species.", CheckIdentifier.Ball);
else if (Lineage.Any(e => Legal.InheritDreamMale.Contains(e)))
{
if (pkm.AbilityNumber != 4)
AddLine(Severity.Valid, "Dream Ball inheritance possible from Male/Genderless species.", CheckIdentifier.Ball);
else
AddLine(Severity.Invalid, "Dream Ball not possible for species.", CheckIdentifier.Ball);
}
else
AddLine(Severity.Invalid, "Dream Ball not possible for species.", CheckIdentifier.Ball);
return;
}
if (0x0D <= pkm.Ball && pkm.Ball <= 0x0F)
{
if (Legal.Ban_Gen4Ball.Contains(pkm.Species))
{
if (!Legal.Ban_Gen4Ball_AllowG7.Contains(pkm.Species))
AddLine(Severity.Invalid, "Unobtainable capture for Gen4 Ball.", CheckIdentifier.Ball);
else if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Ball not possible for species with hidden ability.", CheckIdentifier.Ball);
else
AddLine(Severity.Valid, "Obtainable capture for Gen4 Ball.", CheckIdentifier.Ball);
}
else
AddLine(Severity.Valid, "Obtainable capture for Gen4 Ball.", CheckIdentifier.Ball);
return;
}
if (0x02 <= pkm.Ball && pkm.Ball <= 0x0C) // Don't worry, Ball # 0x05 was already checked.
{
if (Legal.Ban_Gen3Ball_AllowG7.Contains(pkm.Species))
{
if (pkm.AbilityNumber == 4)
AddLine(Severity.Invalid, "Ball not possible for species with hidden ability.", CheckIdentifier.Ball);
else
AddLine(Severity.Valid, "Obtainable capture for Gen3Ball.", CheckIdentifier.Ball);
}
else if (Legal.Ban_Gen3Ball.Contains(pkm.Species))
AddLine(Severity.Invalid, "Unobtainable capture for Gen3 Ball.", CheckIdentifier.Ball);
else if (pkm.AbilityNumber == 4 && 152 <= pkm.Species && pkm.Species <= 160)
AddLine(Severity.Invalid, "Ball not possible for species with hidden ability.", CheckIdentifier.Ball);
else
AddLine(Severity.Valid, "Obtainable capture for Gen3Ball.", CheckIdentifier.Ball);
return;
}
if (pkm.Format == 7 && pkm.Species > 721)
{
if (!Legal.getWildBalls(pkm).Contains(pkm.Ball))

View File

@@ -13,6 +13,7 @@ public static partial class Legal
internal static readonly int[] Met_SM_0 =
{
002, 004, // Invalid
006, 008, 010, 012, 014, 016, 018, 020, 022, 024, 026, 028, 030, 032, 034, 036, 038, 040, 042, 044, 046, 048,
050, 052, 054, 056, 058, 060, 062, 064, 066, 068, 070, 072, 074, 076, 078, 082, 084, 086, 088, 090, 092, 094,
100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148,
@@ -266,14 +267,89 @@ public static partial class Legal
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // Johto Balls
0x1A, // Beast
};
internal static readonly int[] ValidMet_SM =
internal static readonly int[] PastGenAlolanNatives =
{
// TODO
006, 008, 010, 012, 014, 016, 018, 020, 022, 024, 026, 028, 030, 034, 036, 038, 040, 042, 044, 046, 048,
050, 052, 054, 056, 058, 060, 062, 064, 068, 070, 072, 074, 076, 078, 082, 084, 086, 088, 090, 092, 094,
100, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148,
150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 192
010, 011, 012, 019, 020, 021, 022, 025, 026, 027, 028, 035, 036, 037, 038, 039, 040, 041, 042, 046, 047, 050,
051, 052, 053, 054, 055, 056, 057, 058, 059, 060, 061, 062, 063, 064, 065, 066, 067, 068, 072, 073, 074, 075,
076, 079, 080, 081, 082, 088, 089, 090, 091, 092, 093, 094, 096, 097, 102, 103, 104, 105, 113, 115, 118, 119,
120, 121, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 142, 143, 147, 148, 149, 165,
166, 167, 168, 169, 170, 171, 172, 173, 174, 185, 186, 196, 197, 198, 199, 200, 209, 210, 212, 215, 222, 225,
227, 233, 235, 239, 240, 241, 242, 278, 279, 283, 284, 296, 297, 299, 302, 318, 319, 320, 321, 324, 327, 328,
329, 330, 339, 340, 349, 350, 351, 359, 361, 362, 369, 370, 371, 372, 373, 374, 375, 376, 408, 409, 410, 411,
422, 423, 425, 426, 429, 430, 438, 440, 443, 444, 445, 446, 447, 448, 456, 457, 461, 462, 466, 467, 470, 471,
474, 476, 478, 506, 507, 508, 524, 525, 526, 546, 547, 548, 549, 551, 552, 553, 564, 565, 566, 567, 568, 569,
582, 583, 584, 587, 594, 627, 628, 629, 630, 661, 662, 663, 674, 675, 700, 703, 704, 705, 706, 707, 708, 709,
718
};
internal static readonly int[] PastGenAlolanScans =
{
152, // Chikorita
155, // Cyndaquil
158, // Totodile
069, // Bellsprout
111, // Rhyhorn
116, // Horsea
183, // Marill
220, // Swinub
315, // Roselia
363, // Spheal
404, // Luxio
543, // Venipede
574, // Gothita
578, // Duosion
599, // Klink
607, // Litwick
610, // Axew
633, // Deino
679, // Honedge
175, // [468] Togekiss (Togepi)
287, // [288] Vigoroth (Slakoth)
396, // [397] Staravia (Starly)
495, // [497] Serperior (Snivy)
498, // [500] Emboar (Tepig)
501, // [503] Samurott (Oshawott)
532, // [534] Conkeldurr (Timburr)
540, // [542] Leavanny (Sewaddle)
602, // [604] Eelektross (Tynamo)
};
internal static readonly int[] Inherit_SafariMale =
{
081, 100, 128, 337, 338, 374, 436,
};
internal static readonly int[] InheritDreamMale =
{
001, 004, 007, 25, 81, 100, 236, 120, 128, 137,
172,
252, 255, 258, 337, 338, 343, 374,
387, 390, 393, 436, 479,
511, 513, 515, 538, 539, 574, 599, 622,
};
internal static readonly int[] Ban_Gen3Ball_AllowG7 =
{
495, 498, 501, //1 - Snivy, Tepig, Oshawott
496, 499, 502, //2
497, 500, 503, //3
};
internal static readonly int[] Ban_Gen4Ball_AllowG7 =
{
152, 155, 158, //1 - Chikorita, Cyndaquil, Totodile
153, 156, 159, //2
154, 157, 160, //3
495, 498, 501, //1 - Snivy, Tepig, Oshawott
496, 499, 502, //2
497, 500, 503, //3
};
internal static readonly int[] ValidMet_SM =
{
006, 008, 010, 012, 014, 016, 018, 020, 022, 024, 026, 028, 030, 032, 034, 036, 038, 040, 042, 044, 046, 048,
050, 052, 054, 056, 058, 060, 062, 064, 066, 068, 070, 072, 074, 076, 078, 082, 084, 086, 088, 090, 092, 094,
100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148,
150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192
};
private static readonly int[] TMHM_SM =