PKHeX/PKHeX.Core/Legality/Tables/Tables4.cs

308 lines
17 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using System.Linq;
namespace PKHeX.Core
{
public static partial class Legal
{
2016-10-24 04:57:04 +00:00
internal const int MaxSpeciesID_4 = 493;
internal const int MaxMoveID_4 = 467;
internal const int MaxItemID_4_DP = 464;
internal const int MaxItemID_4_Pt = 467;
internal const int MaxItemID_4_HGSS = 536;
internal const int MaxAbilityID_4 = 123;
internal const int MaxBallID_4 = 0x18;
internal const int MaxGameID_4 = 15; // CXD
2018-09-15 05:37:47 +00:00
2016-11-02 06:46:46 +00:00
internal static readonly int[] Met_HGSS_0 =
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 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, 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, 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, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
232, 233, 234,
};
2018-09-15 05:37:47 +00:00
2016-11-02 06:46:46 +00:00
internal static readonly int[] Met_HGSS_2 =
{
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011,
2012, 2013, 2014,
};
internal static readonly int[] Met_HGSS_3 =
{
3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010,
3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028,
3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043, 3044, 3045, 3046,
3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064,
3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075, 3076
};
#region DP
internal static readonly ushort[] Pouch_Items_DP = {
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 135, 136, 213, 214, 215, 216, 217, 218, 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, 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
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Key_DP = {
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
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_TMHM_DP = {
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, 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
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Mail_DP = {
137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Medicine_DP = {
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Berries_DP = {
149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 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, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Ball_DP = {
1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Battle_DP = {
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] HeldItems_DP = ArrayUtil.ConcatAll(Pouch_Items_DP, Pouch_Mail_DP, Pouch_Medicine_DP, Pouch_Berries_DP, Pouch_Ball_DP, Pouch_TMHM_DP.Take(Pouch_TMHM_DP.Length - 8).ToArray());
#endregion
#region Pt
internal static readonly ushort[] Pouch_Items_Pt = {
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 135, 136, 213, 214, 215, 216, 217, 218, 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, 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
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Key_Pt = {
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
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_TMHM_Pt = Pouch_TMHM_DP;
internal static readonly ushort[] Pouch_Mail_Pt = Pouch_Mail_DP;
internal static readonly ushort[] Pouch_Medicine_Pt = Pouch_Medicine_DP;
internal static readonly ushort[] Pouch_Berries_Pt = Pouch_Berries_DP;
internal static readonly ushort[] Pouch_Ball_Pt = Pouch_Ball_DP;
internal static readonly ushort[] Pouch_Battle_Pt = Pouch_Battle_DP;
internal static readonly ushort[] HeldItems_Pt = ArrayUtil.ConcatAll(Pouch_Items_Pt, Pouch_Mail_Pt, Pouch_Medicine_Pt, Pouch_Berries_Pt, Pouch_Ball_Pt, Pouch_TMHM_Pt.Take(Pouch_TMHM_Pt.Length - 8).ToArray());
#endregion
#region HGSS
internal static readonly ushort[] Pouch_Items_HGSS = Pouch_Items_Pt;
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Key_HGSS = {
434, 435, 437, 444, 445, 446, 447, 450, 456, 464, 465, 466, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 501, 502, 503, 504, 532, 533, 534, 535, 536
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_TMHM_HGSS = Pouch_TMHM_DP;
internal static readonly ushort[] Pouch_Mail_HGSS = Pouch_Mail_DP;
internal static readonly ushort[] Pouch_Medicine_HGSS = Pouch_Medicine_DP;
internal static readonly ushort[] Pouch_Berries_HGSS = Pouch_Berries_DP;
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Ball_HGSS = {
1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 492, 493, 494, 495, 496, 497, 498, 499, 500
};
2018-09-15 05:37:47 +00:00
internal static readonly ushort[] Pouch_Battle_HGSS = Pouch_Battle_DP;
internal static readonly ushort[] HeldItems_HGSS = ArrayUtil.ConcatAll(Pouch_Items_HGSS, Pouch_Mail_HGSS, Pouch_Medicine_HGSS, Pouch_Berries_HGSS, Pouch_Ball_Pt, Pouch_TMHM_HGSS.Take(Pouch_TMHM_HGSS.Length - 8).ToArray());
#endregion
2017-03-20 18:10:50 +00:00
internal static readonly int[] TM_4 =
2017-03-19 10:14:03 +00:00
{
264, 337, 352, 347, 046, 092, 258, 339, 331, 237,
241, 269, 058, 059, 063, 113, 182, 240, 202, 219,
218, 076, 231, 085, 087, 089, 216, 091, 094, 247,
280, 104, 115, 351, 053, 188, 201, 126, 317, 332,
259, 263, 290, 156, 213, 168, 211, 285, 289, 315,
355, 411, 412, 206, 362, 374, 451, 203, 406, 409,
261, 318, 373, 153, 421, 371, 278, 416, 397, 148,
444, 419, 086, 360, 014, 446, 244, 445, 399, 157,
404, 214, 363, 398, 138, 447, 207, 365, 369, 164,
430, 433,
2017-03-20 18:10:50 +00:00
};
2017-03-19 10:14:03 +00:00
internal static readonly HashSet<int> HM_HGSS = new HashSet<int>
2017-03-20 18:10:50 +00:00
{
015, 019, 057, 070, 250, 249, 127, 431 // Whirlpool(HGSS)
};
internal static readonly HashSet<int> HM_DPPt = new HashSet<int>
{
015, 019, 057, 070, 432, 249, 127, 431 // Defog(DPPt)
};
internal static readonly HashSet<int> HM_4_RemovePokeTransfer = new HashSet<int>
{
015, 019, 057, 070, 249, 127, 431 // Defog(DPPt) & Whirlpool(HGSS) excluded
2017-03-19 10:14:03 +00:00
};
internal static readonly byte[] MovePP_DP =
{
00,
35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 15, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 20, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20,
30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 25, 15, 10, 40, 25, 10, 35, 30, 15, 20, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20,
15, 10, 40, 15, 10, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 10, 20, 15, 15, 35, 20, 15, 10, 20, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40,
40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 10, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 15,
10, 10, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 15, 15, 15,
10, 10, 10, 20, 10, 10, 10, 10, 15, 15, 15, 10, 20, 20, 10, 20, 20, 20, 20, 20, 10, 10, 10, 20, 20, 05, 15, 10, 10, 15, 10, 20, 05, 05, 10, 10, 20, 05, 10, 20, 10, 20, 20, 20, 05, 05, 15, 20, 10, 15,
20, 15, 10, 10, 15, 10, 05, 05, 10, 15, 10, 05, 20, 25, 05, 40, 10, 05, 40, 15, 20, 20, 05, 15, 20, 30, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 40, 15, 20, 15, 20, 15, 20, 10,
20, 20, 05, 05, 10, 05, 40, 10, 10, 05, 10, 10, 15, 10, 20, 30, 30, 10, 20, 05, 10, 10, 15, 10, 10, 05, 15, 05, 10, 10, 30, 20, 20, 10, 10, 05, 05, 10, 05, 20, 10, 20, 10, 15, 10, 20, 20, 20, 15, 15,
10, 15, 20, 15, 10, 10, 10, 20, 05, 30, 05, 10, 15, 10, 10, 05, 20, 30, 10, 30, 15, 15, 15, 15, 30, 10, 20, 15, 10, 10, 20, 15, 05, 05, 15, 15, 05, 10, 05, 20, 05, 15, 20, 05, 20, 20, 20, 20, 10, 20,
10, 15, 20, 15, 10, 10, 05, 10, 05, 05, 10, 05, 05, 10, 05, 05, 05,
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> WildPokeBalls4_DPPt = new HashSet<int>
{
1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
// Cherish ball not usable
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> WildPokeBalls4_HGSS = new HashSet<int>
{
1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
// Cherish ball not usable
17, 18, 19, 20, 21, 22, 23
// Comp Ball not usable in wild
};
internal static readonly int[] FutureEvolutionsGen4 =
{
700
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> UnreleasedItems_4 = new HashSet<int>
{
005, // Safari Ball
016, // Cherish Ball
147, // Mosaic Mail
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083) * Ignore relearn level 2-100 moves from Phione * Cave encounter types DPPt * Generation 4 EncounterType filter and validation Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters Generation 4 roaaming static encounters have been splitted in two, grass and surf * Added new legality texts * Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible Moved unreleased DP locations to valid Platinum locations only * Improved generation 3 special egg check. Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output * Clean up * Fix gen 5 pokemon from issue #1011 Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality * Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis * Do not make wild encounters prevail static encounter if the pokemon was an egg * Changed type of WildEncounter variable to EncounterSlot[] * Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
499, // Sport Ball
500, // Park Ball
};
2018-09-15 05:37:47 +00:00
internal static readonly bool[] ReleasedHeldItems_4 = Enumerable.Range(0, MaxItemID_4_HGSS+1).Select(i => HeldItems_HGSS.Contains((ushort)i) && !UnreleasedItems_4.Contains(i)).ToArray();
internal static readonly int[] Tutors_4 =
{
291, 189, 210, 196, 205, 009, 007, 276,
008, 442, 401, 466, 380, 173, 180, 314,
270, 283, 200, 246, 235, 324, 428, 410,
414, 441, 239, 402, 334, 393, 387, 340,
271, 257, 282, 389, 129, 253, 162, 220,
081, 366, 356, 388, 277, 272, 215, 067,
143, 335, 450, 029
};
internal static readonly int[] SpecialTutors_4 =
{
307, 308, 338, 434
};
internal static readonly int[][] SpecialTutors_Compatibility_4 =
{
new[] { 006, 157, 257, 392 },
new[] { 009, 160, 260, 395 },
new[] { 003, 154, 254, 389 },
new[] { 147, 148, 149, 230, 329, 330, 334, 371, 372, 373, 380, 381, 384, 443, 444, 445, 483, 484, 487 }
};
// Encounter Slots that are replaced
internal static readonly int[] Slot4_Swarm = { 0, 1 };
internal static readonly int[] Slot4_Time = { 2, 3 };
internal static readonly int[] Slot4_Sound = { 2, 3, 4, 5 };
internal static readonly int[] Slot4_Radar = { 4, 5, 10, 11 };
internal static readonly int[] Slot4_Dual = { 8, 9 };
internal static readonly HashSet<int> ValidMet_DP = new HashSet<int>
{
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083) * Ignore relearn level 2-100 moves from Phione * Cave encounter types DPPt * Generation 4 EncounterType filter and validation Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters Generation 4 roaaming static encounters have been splitted in two, grass and surf * Added new legality texts * Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible Moved unreleased DP locations to valid Platinum locations only * Improved generation 3 special egg check. Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output * Clean up * Fix gen 5 pokemon from issue #1011 Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality * Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis * Do not make wild encounters prevail static encounter if the pokemon was an egg * Changed type of WildEncounter variable to EncounterSlot[] * Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
// 063: Flower Paradise unreleased DP event
// 079: Newmoon Island unreleased DP event
// 085: Seabreak Path unreleased DP event
// 086: Hall of Origin unreleased event
2018-05-12 15:13:39 +00:00
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, 040,
041, 042, 043, 044, 045, 046, 047, 048, 049, 050, 051, 052, 053, 054, 055, 056, 057, 058, 059, 060,
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083) * Ignore relearn level 2-100 moves from Phione * Cave encounter types DPPt * Generation 4 EncounterType filter and validation Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters Generation 4 roaaming static encounters have been splitted in two, grass and surf * Added new legality texts * Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible Moved unreleased DP locations to valid Platinum locations only * Improved generation 3 special egg check. Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output * Clean up * Fix gen 5 pokemon from issue #1011 Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality * Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis * Do not make wild encounters prevail static encounter if the pokemon was an egg * Changed type of WildEncounter variable to EncounterSlot[] * Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
061, 062, 064, 065, 066, 067, 068, 069, 070, 071, 072, 073, 074, 075, 076, 077, 078, 080,
081, 082, 083, 084, 087, 088, 089, 090, 091, 092, 093, 094, 095, 096, 097, 098, 099, 100,
2018-05-12 15:13:39 +00:00
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> ValidMet_Pt = new HashSet<int>(ValidMet_DP.Concat(new[]
{
2018-05-12 15:13:39 +00:00
63, 79, 85, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
}));
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> ValidMet_HGSS = new HashSet<int>
{
080, 112, 113, 114, 115, 116,
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, 160,
161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 177, 178, 179, 180, //171: Route 23 no longer exists
181, 182, 183, 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, 220,
221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, //233: Pokéwalker
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> ValidMet_4 = new HashSet<int>(ValidMet_Pt.Concat(ValidMet_HGSS));
internal static readonly HashSet<int> GiftEggLocation4 = new HashSet<int>
{
2009, 2010, 2011, 2013, 2014
};
2018-09-15 05:37:47 +00:00
internal static readonly HashSet<int> EggLocations4 = new HashSet<int>
{
2000, 2002, 2009, 2010, 2011, 2013, 2014
};
internal static int GetTransfer45MetLocation(PKM pk5)
{
if (pk5.Gen4 && pk5.FatefulEncounter)
{
var spec = pk5.Species;
if (spec == 251) // Celebi
return Locations.Transfer4_CelebiUnused;
if (243 <= spec && spec <= 245) // Beast
return Locations.Transfer4_CrownUnused;
}
return Locations.Transfer4; // Pokétransfer (not Crown);
}
internal static int[] RemoveMovesHM45(int[] moves)
{
var banned = GetFavorableHMBanlist(moves);
for (int i = 0; i < 4; i++)
{
if (banned.Contains(moves[i]))
moves[i] = 0;
}
return moves;
}
/// <summary>
/// Transfer via advantageous game
/// </summary>
/// <param name="moves">Current moves</param>
/// <returns>Preferred move ban list</returns>
private static HashSet<int> GetFavorableHMBanlist(int[] moves)
{
// if has defog, return ban list with whirlpool
return moves.Contains(432) ? HM_HGSS : HM_DPPt;
}
}
}