mirror of
https://github.com/kwsch/PKHeX
synced 2024-12-03 17:29:13 +00:00
7a7358d0e5
Traded eggs in gen4 can have from any game (since version isn't updated on hatch). Use the hashsets, and remove the incorrect array. The incorrect array allowed stuff like Pokéwalker to be a "valid met location", hah.
306 lines
17 KiB
C#
306 lines
17 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace PKHeX.Core
|
|
{
|
|
public static partial class Legal
|
|
{
|
|
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
|
|
|
|
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,
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
internal static readonly ushort[] Pouch_Mail_DP = {
|
|
137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
internal static readonly ushort[] Pouch_Ball_DP = {
|
|
1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|
|
};
|
|
|
|
internal static readonly ushort[] Pouch_Battle_DP = {
|
|
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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;
|
|
|
|
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
|
|
};
|
|
|
|
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;
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
|
|
internal static readonly int[] TM_4 =
|
|
{
|
|
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,
|
|
};
|
|
|
|
internal static readonly HashSet<int> HM_HGSS = new HashSet<int>
|
|
{
|
|
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
|
|
};
|
|
|
|
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,
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
internal static readonly HashSet<int> UnreleasedItems_4 = new HashSet<int>
|
|
{
|
|
005, // Safari Ball
|
|
016, // Cherish Ball
|
|
147, // Mosaic Mail
|
|
499, // Sport Ball
|
|
500, // Park Ball
|
|
};
|
|
|
|
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>
|
|
{
|
|
// 063: Flower Paradise unreleased DP event
|
|
// 079: Newmoon Island unreleased DP event
|
|
// 085: Seabreak Path unreleased DP event
|
|
// 086: Hall of Origin unreleased event
|
|
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,
|
|
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,
|
|
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
|
|
};
|
|
|
|
internal static readonly HashSet<int> ValidMet_Pt = new HashSet<int>(ValidMet_DP.Concat(new[]
|
|
{
|
|
63, 79, 85, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
|
|
}));
|
|
|
|
internal static readonly HashSet<int> ValidMet_HGSS = new HashSet<int>
|
|
{
|
|
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
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|