using System.Collections.Generic; using System.Linq; namespace PKHeX.Core { public static partial class Legal { internal const int MaxSpeciesID_8 = 890; // Eternatus internal const int MaxMoveID_8 = 796; // Steel Beam (jet fuel) internal const int MaxItemID_8 = 1278; // Rotom Catalog, or 1578 for all catalog parts? internal const int MaxAbilityID_8 = 258; internal const int MaxBallID_8 = 0x1A; // 26 Beast internal const int MaxGameID_8 = 45; #region Met Locations internal static readonly int[] Met_SWSH_0 = { 002, 004, 006, 008, 012, 014, 016, 018, 020, 022, 024, 028, 030, 032, 034, 036, 040, 044, 046, 048, 052, 054, 056, 058, 060, 064, 066, 068, 070, 072, 076, 078, 080, 084, 086, 088, 090, 092, 094, 096, 098, 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, }; internal static readonly int[] Met_SWSH_3 = { 30001, 30003, 30004, 30005, 30006, 30007, 30008, 30009, 30010, 30011, 30012, 30013, 30014, 30015, 30016, 30017, 30018 }; internal static readonly int[] Met_SWSH_4 = { 40001, 40002, 40003, 40005, 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013, 40014, 40016, 40017, 40018, 40019, 40020, 40021, 40022, 40024, 40025, 40026, 40027, 40028, 40029, 40030, 40032, 40033, 40034, 40035, 40036, 40037, 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045, 40047, 40048, 40049, 40050, 40051, 40052, 40053, 40055, 40056, 40057, 40058, 40059, 40060, 40061, 40063, 40064, 40065, 40066, 40067, 40068, 40069, 40070, 40071, 40072, 40074, 40075, 40076, 40077, 40078, 40079, 40080, 40081, 40082, 40083, 40084, 40085, 40086, }; internal static readonly int[] Met_SWSH_6 = {/* XY */ 60001, 60003, /* ORAS */ 60004, }; #endregion internal static readonly ushort[] Pouch_Regular_SWSH = { 045, 046, 047, 048, 049, 050, 051, 052, 053, 076, 077, 079, 080, 081, 082, 083, 084, 085, 107, 108, 109, 116, 117, 118, 119, 213, 214, 215, 217, 218, 219, 220, 221, 222, 223, 224, 228, 229, 230, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 255, 257, 259, 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, 325, 326, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 564, 565, 566, 567, 568, 569, 570, 639, 640, 644, 645, 646, 647, 648, 649, 650, 846, 849, 879, 880, 881, 882, 883, 884, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 1103, 1104, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, }; internal static readonly ushort[] Pouch_Ball_SWSH = { 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 492, 493, 494, 495, 496, 497, 498, 499, 500, 576, 851, }; internal static readonly ushort[] Pouch_Battle_SWSH = { 055, 056, 057, 058, 059, 060, 061, 062, 063, }; internal static readonly ushort[] Pouch_Items_SWSH = Pouch_Regular_SWSH.Concat(Pouch_Ball_SWSH).Concat(Pouch_Battle_SWSH).ToArray(); internal static readonly ushort[] Pouch_Key_SWSH = { 078, 628, 629, 631, 632, 703, 943, 944, 945, 946, 1074, 1075, 1076, 1077, 1080, 1081, 1100, 1255, 1266, 1267, 1269, 1270, 1271, 1278, }; internal static readonly ushort[] TM_SWSH = { 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, 618, 619, 620, 690, 691, 692, 693, // TM99 1230, // TM00 }; internal static readonly ushort[] TR_SWSH = { 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, }; internal static readonly ushort[] Pouch_TMHM_SWSH = TM_SWSH.Concat(TR_SWSH).ToArray(); internal static readonly ushort[] Pouch_Medicine_SWSH = { 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, 054, 134, 504, 591, 708, 709, 852, 903, }; internal static readonly ushort[] Pouch_Berries_SWSH = { 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 169, 170, 171, 172, 173, 174, 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, 686, 687, 688, }; internal static readonly ushort[] Pouch_Ingredients_SWSH = { 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, }; internal static readonly ushort[] Pouch_Treasure_SWSH = { 086, 087, 088, 089, 090, 091, 092, 094, 106, 571, 580, 581, 582, 583, 795, 796, 1105, 1106, 1107, 1108, }; internal static readonly ushort[] HeldItems_SWSH = ArrayUtil.ConcatAll(new ushort[1], Pouch_Items_SWSH, Pouch_Berries_SWSH, Pouch_Medicine_SWSH, TR_SWSH, Pouch_Treasure_SWSH); internal static readonly HashSet WildPokeballs8 = new HashSet { (int)Ball.Poke, (int)Ball.Great, (int)Ball.Ultra, (int)Ball.Master, (int)Ball.Net, (int)Ball.Dive, (int)Ball.Nest, (int)Ball.Repeat, (int)Ball.Timer, (int)Ball.Luxury, (int)Ball.Premier, (int)Ball.Dusk, (int)Ball.Heal, (int)Ball.Quick, // Ball Guy (int)Ball.Fast, (int)Ball.Level, (int)Ball.Lure, (int)Ball.Heavy, (int)Ball.Love, (int)Ball.Friend, (int)Ball.Moon, (int)Ball.Dream, (int)Ball.Beast, }; internal static readonly HashSet GalarOriginForms = new HashSet { (int)Species.Meowth, (int)Species.Ponyta, (int)Species.Rapidash, (int)Species.Farfetchd, (int)Species.MrMime, (int)Species.Corsola, (int)Species.Zigzagoon, (int)Species.Linoone, (int)Species.Yamask, (int)Species.Darumaka, (int)Species.Darmanitan, (int)Species.Stunfisk, }; internal static readonly HashSet GalarVariantFormEvolutions = new HashSet { (int)Species.Weezing, }; internal static readonly IReadOnlyDictionary GalarForm0Evolutions = new Dictionary { {(int)Species.Perrserker, 2}, {(int)Species.Obstagoon, 1}, {(int)Species.MrRime, 1}, {(int)Species.Sirfetchd, 2}, {(int)Species.Runerigus, 1}, {(int)Species.Cursola, 1}, }; internal static readonly HashSet EvolveToGalarForms = new HashSet(GalarVariantFormEvolutions.Concat(GalarOriginForms)); internal static readonly int[] EggLocations8 = {Locations.Daycare5, Locations.LinkTrade6}; internal static readonly HashSet ValidMet_SWSH = new HashSet { 006, 008, 012, 014, 016, 018, 020, 022, 024, 028, 030, 032, 034, 036, 040, 044, 046, 048, 052, 054, 056, 058, 060, 064, 066, 068, 070, 072, 076, 078, 080, 084, 086, 088, 090, 092, 094, 096, 098, 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, }; public static readonly int[] TMHM_SWSH = { // TM 005, 025, 006, 007, 008, 009, 019, 042, 063, 416, 345, 076, 669, 083, 086, 091, 103, 113, 115, 219, 120, 156, 157, 168, 173, 182, 184, 196, 202, 204, 211, 213, 201, 240, 241, 258, 250, 251, 261, 263, 129, 270, 279, 280, 286, 291, 311, 313, 317, 328, 331, 333, 340, 341, 350, 362, 369, 371, 372, 374, 384, 385, 683, 409, 419, 421, 422, 423, 424, 427, 433, 472, 478, 440, 474, 490, 496, 506, 512, 514, 521, 523, 527, 534, 541, 555, 566, 577, 580, 581, 604, 678, 595, 598, 206, 403, 684, 693, 707, 784, // TR 014, 034, 053, 056, 057, 058, 059, 067, 085, 087, 089, 094, 097, 116, 118, 126, 127, 133, 141, 161, 164, 179, 188, 191, 200, 473, 203, 214, 224, 226, 227, 231, 242, 247, 248, 253, 257, 269, 271, 276, 285, 299, 304, 315, 322, 330, 334, 337, 339, 347, 348, 349, 360, 370, 390, 394, 396, 398, 399, 402, 404, 405, 406, 408, 411, 412, 413, 414, 417, 428, 430, 437, 438, 441, 442, 444, 446, 447, 482, 484, 486, 492, 500, 502, 503, 526, 528, 529, 535, 542, 583, 599, 605, 663, 667, 675, 676, 706, 710, 776, }; internal static readonly byte[] MovePP_SWSH = { 00, 35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 20, 30, 35, 35, 20, 15, 20, 20, 25, 20, 30, 05, 10, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 10, 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, 20, 20, 20, 20, 15, 25, 15, 10, 20, 25, 10, 35, 30, 15, 10, 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, 10, 20, 10, 40, 40, 20, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 15, 20, 10, 15, 35, 20, 15, 10, 10, 30, 15, 40, 20, 10, 10, 05, 10, 30, 10, 15, 20, 15, 40, 20, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 25, 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, 10, 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, 10, 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, 15, 05, 40, 15, 20, 20, 05, 15, 20, 20, 15, 15, 05, 10, 30, 20, 30, 15, 05, 40, 15, 05, 20, 05, 15, 25, 25, 15, 20, 15, 20, 15, 20, 10, 20, 20, 05, 05, 10, 05, 40, 10, 10, 05, 10, 10, 15, 10, 20, 15, 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, 15, 15, 10, 10, 10, 20, 10, 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, 15, 10, 10, 10, 10, 10, 10, 15, 20, 15, 10, 15, 10, 15, 10, 20, 10, 10, 10, 20, 20, 20, 20, 20, 15, 15, 15, 15, 15, 15, 20, 15, 10, 15, 15, 15, 15, 10, 10, 10, 10, 10, 15, 15, 15, 15, 05, 05, 15, 05, 10, 10, 10, 20, 20, 20, 10, 10, 30, 15, 15, 10, 15, 25, 10, 15, 10, 10, 10, 20, 10, 10, 10, 10, 10, 15, 15, 05, 05, 10, 10, 10, 05, 05, 10, 05, 05, 15, 10, 05, 05, 05, 10, 10, 10, 10, 20, 25, 10, 20, 30, 25, 20, 20, 15, 20, 15, 20, 20, 10, 10, 10, 10, 10, 20, 10, 30, 15, 10, 10, 10, 20, 20, 05, 05, 05, 20, 10, 10, 20, 15, 20, 20, 10, 20, 30, 10, 10, 40, 40, 30, 20, 40, 20, 20, 10, 10, 10, 10, 05, 10, 10, 05, 05, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 01, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 40, 15, 20, 30, 20, 15, 15, 20, 10, 15, 15, 10, 05, 10, 10, 20, 15, 10, 15, 15, 15, 05, 15, 20, 20, 01, 01, 01, 01, 01, 01, 01, 01, 01, 05, 05, 10, 10, 10, 20, 10, 10, 10, 05, 05, 20, 10, 10, 10, 01, 05, 15, 05, 01, 01, 01, 01, 01, 01, 10, 15, 15, 20, 20, 20, 20, 15, 15, 10, 10, 05, 20, 05, 10, 05, 15, 10, 10, 05, 15, 20, 10, 10, 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 05, 10, 15, 10, 15, 05, 05, 05, 10, 15, 40, 10, 10, 10, 15, 10, 10, 10, 10, 05, 05, 05, }; internal static readonly HashSet Ban_NoHidden8 = new HashSet { // No wild encounter with Hidden, so can't breed a hidden yet. (int)Species.Grookey, (int)Species.Thwackey, (int)Species.Rillaboom, (int)Species.Scorbunny, (int)Species.Raboot, (int)Species.Cinderace, (int)Species.Sobble, (int)Species.Drizzile, (int)Species.Inteleon, (int)Species.Hoothoot, (int)Species.Noctowl, (int)Species.Skwovet, (int)Species.Greedent, (int)Species.Pidove, (int)Species.Tranquill, (int)Species.Unfezant, (int)Species.Nickit, (int)Species.Thievul, (int)Species.Wooloo, (int)Species.Dubwool, (int)Species.Purrloin, (int)Species.Liepard, (int)Species.Yamper, (int)Species.Boltund, (int)Species.Wingull, (int)Species.Pelipper, (int)Species.Electrike, (int)Species.Manectric, (int)Species.Delibird, (int)Species.Golett, (int)Species.Golurk, (int)Species.Munna, (int)Species.Musharna, (int)Species.Snover, (int)Species.Abomasnow, (int)Species.Bronzor, (int)Species.Bronzong, (int)Species.Drifloon, (int)Species.Drifblim, (int)Species.Cherubi, (int)Species.Cherrim, (int)Species.Goldeen, (int)Species.Seaking, (int)Species.Basculin, (int)Species.Woobat, (int)Species.Swoobat, (int)Species.Noibat, (int)Species.Noivern, (int)Species.Espurr, (int)Species.Meowstic, (int)Species.Meowstic | 1 << 11, (int)Species.Chinchou, (int)Species.Lanturn, (int)Species.Croagunk, (int)Species.Toxicroak, (int)Species.Barboach, (int)Species.Whiscash, (int)Species.Binacle, (int)Species.Barbaracle, (int)Species.Sawk, (int)Species.Throh, (int)Species.Bonsly, (int)Species.Sudowoodo, (int)Species.Cleffa, (int)Species.Clefairy, (int)Species.Clefable, (int)Species.Elgyem, (int)Species.Beheeyem, (int)Species.Cubchoo, (int)Species.Beartic, (int)Species.Skorupi, (int)Species.Drapion, (int)Species.Maractus, (int)Species.Mimikyu, (int)Species.Bergmite, (int)Species.Avalugg, // Alolan Forms (int)Species.Raichu | 1 << 11, (int)Species.Meowth | 1 << 11, (int)Species.Persian | 1 << 11, (int)Species.Vulpix | 1 << 11, (int)Species.Ninetales | 1 << 11, (int)Species.Diglett | 1 << 11, (int)Species.Dugtrio | 1 << 11, // Non-Galar Forms (int)Species.Farfetchd, (int)Species.Ponyta, (int)Species.Rapidash, (int)Species.Corsola, (int)Species.Darumaka, (int)Species.Darmanitan, (int)Species.Stunfisk, (int)Species.Weezing, (int)Species.Shellos, (int)Species.Gastrodon, // West }; #region Unreleased Items internal static readonly HashSet UnreleasedHeldItems_8 = new HashSet { // todo -- someone pls fill this in once the game is thoroughly played // I just put a few here so that the list isn't empty. 298, // Flame Plate 299, // Splash Plate 300, // Zap Plate 301, // Meadow Plate 302, // Icicle Plate 303, // Fist Plate 304, // Toxic Plate 305, // Earth Plate 306, // Sky Plate 307, // Mind Plate 308, // Insect Plate 309, // Stone Plate 310, // Spooky Plate 311, // Draco Plate 312, // Dread Plate 313, // Iron Plate 548, // Fire Gem 549, // Water Gem 550, // Electric Gem 551, // Grass Gem 552, // Ice Gem 553, // Fighting Gem 554, // Poison Gem 555, // Ground Gem 556, // Flying Gem 557, // Psychic Gem 558, // Bug Gem 559, // Rock Gem 560, // Ghost Gem 561, // Dragon Gem 562, // Dark Gem 563, // Steel Gem 708, // Lumiose Galette 709, // Shalour Sable 715, // Fairy Gem }; #endregion internal static readonly bool[] ReleasedHeldItems_8 = Enumerable.Range(0, MaxItemID_8+1).Select(i => HeldItems_SWSH.Contains((ushort)i) && !UnreleasedHeldItems_8.Contains(i)).ToArray(); /// /// Moves that aren't kill /// internal static readonly HashSet ValidMoves_SWSH = new HashSet { 001, 005, 006, 007, 008, 009, 010, 011, 012, 014, 015, 016, 017, 018, 019, 020, 021, 022, 023, 024, 025, 028, 029, 030, 031, 032, 033, 034, 035, 036, 037, 038, 039, 040, 042, 043, 044, 045, 046, 047, 048, 050, 051, 052, 053, 054, 055, 056, 057, 058, 059, 060, 061, 062, 063, 064, 065, 066, 067, 069, 070, 071, 072, 073, 074, 075, 076, 077, 078, 079, 080, 081, 083, 084, 085, 086, 087, 088, 089, 090, 091, 092, 093, 094, 095, 097, 098, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 120, 122, 123, 124, 126, 127, 129, 130, 133, 135, 136, 137, 138, 139, 141, 143, 147, 150, 151, 152, 153, 154, 156, 157, 161, 162, 163, 164, 167, 170, 172, 174, 175, 178, 179, 180, 181, 183, 184, 186, 187, 188, 189, 190, 191, 192, 195, 196, 198, 199, 200, 201, 202, 204, 205, 206, 207, 209, 210, 211, 212, 213, 215, 217, 219, 220, 223, 224, 225, 226, 227, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 268, 269, 272, 273, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 291, 292, 297, 298, 299, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 319, 321, 322, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 344, 345, 347, 348, 349, 350, 351, 352, 353, 355, 356, 359, 360, 361, 362, 365, 366, 367, 368, 369, 370, 371, 372, 374, 375, 379, 380, 384, 385, 387, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 427, 428, 430, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 444, 446, 447, 450, 451, 452, 453, 454, 455, 457, 458, 468, 470, 471, 472, 473, 474, 475, 478, 479, 480, 482, 483, 484, 486, 487, 488, 489, 490, 491, 492, 493, 494, 496, 497, 499, 500, 502, 503, 504, 505, 506, 508, 509, 510, 512, 513, 514, 515, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 532, 533, 534, 535, 536, 538, 539, 540, 541, 542, 544, 549, 550, 551, 556, 558, 559, 560, 564, 565, 566, 567, 568, 570, 571, 572, 573, 574, 575, 576, 577, 579, 580, 581, 582, 583, 584, 585, 586, 587, 589, 590, 594, 595, 597, 598, 599, 602, 603, 604, 605, 608, 609, 610, 611, 612, 660, 662, 663, 664, 667, 668, 669, 670, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 688, 691, 693, 694, 706, 707, 709, 710, 711, 715, 716, 718, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, }; internal static readonly int[] TypeTutor8 = { 520, 519, 518, // Pledge 338, 307, 308, // Elemental Beam 434, // Draco Meteor 796, // Steel Beam }; } }