2017-06-20 21:57:00 -07:00
using System.Collections.Generic ;
2017-02-12 23:08:39 -08:00
namespace PKHeX.Core
2016-10-24 20:04:47 -07:00
{
public static partial class Legal
{
2020-11-02 13:11:51 -08:00
/// <summary>
/// Species that trigger Light Ball yielding Volt Tackle
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > LightBall = new ( ) { 25 , 26 , 172 } ;
2018-09-14 22:37:47 -07:00
2020-10-24 11:11:05 -07:00
/// <summary>
/// Species that can change between their forms and get access to form-specific moves.
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > FormChangeMoves = new ( )
2016-11-08 21:43:22 -08:00
{
386 , // Deoxys
487 , // Giratina
492 , // Shaymin
720 , // Hoopa
} ;
2018-09-14 22:37:47 -07:00
2020-10-24 11:11:05 -07:00
/// <summary>
/// Species that cannot hatch from an egg.
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > NoHatchFromEgg = new ( )
2016-11-08 21:43:22 -08:00
{
132 , // Ditto
144 , // Articuno
145 , // Zapdos
146 , // Moltres
150 , // Mewtwo
151 , // Mew
201 , // Unown
243 , // Raikou
244 , // Entei
245 , // Suicune
249 , // Lugia
250 , // Ho-Oh
251 , // Celebi
377 , // Regirock
378 , // Regice
379 , // Registeel
380 , // Latias
381 , // Latios
382 , // Kyogre
383 , // Groudon
384 , // Rayquaza
385 , // Jirachi
386 , // Deoxys
480 , // Uxie
481 , // Mesprit
482 , // Azelf
483 , // Dialga
484 , // Palkia
485 , // Heatran
486 , // Regigigas
487 , // Giratina
488 , // Cresselia
490 , // Manaphy
491 , // Darkrai
492 , // Shaymin
493 , // Arceus
494 , // Victini
638 , // Cobalion
639 , // Terrakion
640 , // Virizion
641 , // Tornadus
642 , // Thundurus
643 , // Reshiram
644 , // Zekrom
645 , // Landorus
646 , // Kyurem
647 , // Keldeo
648 , // Meloetta
649 , // Genesect
716 , // Xerneas
717 , // Yveltal
718 , // Zygarde
719 , // Diancie
720 , // Hoopa
721 , // Volcanion
772 , // Type: Null
773 , // Silvally
785 , // Tapu Koko
786 , // Tapu Lele
787 , // Tapu Bulu
788 , // Tapu Fini
789 , // Cosmog
790 , // Cosmoem
791 , // Solgaleo
792 , // Lunala
793 , // Nihilego
794 , // Buzzwole
795 , // Pheromosa
796 , // Xurkitree
797 , // Celesteela
798 , // Kartana
799 , // Guzzlord
800 , // Necrozma
801 , // Magearna
802 , // Marshadow
2017-11-08 20:23:06 -08:00
803 , // Poipole
804 , // Naganadel
805 , // Stakataka
806 , // Blacephalon
807 , // Zeraora
2018-10-27 09:08:39 -07:00
808 , // Meltan
809 , // Melmetal
2019-11-18 22:48:03 -08:00
2019-11-18 19:26:01 -08:00
( int ) Species . Dracozolt ,
( int ) Species . Arctozolt ,
( int ) Species . Dracovish ,
( int ) Species . Arctovish ,
2019-11-15 17:34:18 -08:00
( int ) Species . Zacian ,
( int ) Species . Zamazenta ,
( int ) Species . Eternatus ,
2020-08-21 16:35:49 -07:00
2020-06-19 18:51:15 -05:00
( int ) Species . Kubfu ,
( int ) Species . Urshifu ,
( int ) Species . Zarude ,
2020-10-24 11:11:05 -07:00
( int ) Species . Regieleki ,
( int ) Species . Regidrago ,
( int ) Species . Glastrier ,
( int ) Species . Spectrier ,
( int ) Species . Calyrex ,
2016-11-08 21:43:22 -08:00
} ;
2020-09-18 16:23:17 -07:00
/// <summary>
/// Generation 3 & 4 Battle Frontier Species banlist. When referencing this in context to generation 4, be sure to disallow <see cref="Species.Pichu"/> with Form 1 (Spiky).
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > BattleFrontierBanlist = new ( )
2017-06-20 21:57:00 -07:00
{
150 , // Mewtwo
151 , // Mew
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
249 , // Lugia
250 , // Ho-Oh
251 , // Celebi
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
382 , // Kyogre
383 , // Groudon
384 , // Rayquaza
385 , // Jirachi
386 , // Deoxys
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
483 , // Dialga
484 , // Palkia
487 , // Giratina
489 , // Phione
490 , // Manaphy
491 , // Darkrai
492 , // Shaymin
493 , // Arceus
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
494 , // Victini
643 , // Reshiram
644 , // Zekrom
646 , // Kyurem
647 , // Keldeo
648 , // Meloetta
649 , // Genesect
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
716 , // Xerneas
717 , // Yveltal
718 , // Zygarde
719 , // Diancie
720 , // Hoopa
721 , // Volcanion
2018-10-27 09:08:39 -07:00
2017-06-20 21:57:00 -07:00
789 , // Cosmog
790 , // Cosmoem
791 , // Solgaleo
792 , // Lunala
800 , // Necrozma
801 , // Magearna
802 , // Marshadow
2017-11-08 20:23:06 -08:00
807 , // Zeraora
2018-10-27 09:08:39 -07:00
808 , // Meltan
809 , // Melmetal
2017-06-20 21:57:00 -07:00
} ;
2016-11-08 21:43:22 -08:00
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > Z_Moves = new ( )
2016-11-10 21:49:08 -08:00
{
622 , 623 , 624 , 625 , 626 , 627 , 628 , 629 , 630 , 631 , 632 , 633 , 634 , 635 , 636 , 637 , 638 , 639 , 640 , 641 , 642 , 643 , 644 , 645 , 646 , 647 , 648 , 649 , 650 , 651 , 652 , 653 , 654 , 655 , 656 , 657 , 658 ,
695 , 696 , 697 , 698 , 699 , 700 , 701 , 702 , 703 ,
719 ,
2017-11-08 20:23:06 -08:00
723 , 724 , 725 , 726 , 727 , 728
2016-11-10 21:49:08 -08:00
} ;
2017-12-29 12:00:06 -08:00
2020-10-24 11:11:05 -07:00
/// <summary>
/// Moves that can not be obtained by using Sketch with Smeargle.
/// </summary>
2020-12-21 17:17:56 -08:00
internal static readonly HashSet < int > InvalidSketch = new ( Z_Moves )
2020-10-24 11:11:05 -07:00
{
// Can't Sketch
165 , // Struggle
448 , // Chatter
2016-11-10 21:49:08 -08:00
2020-10-24 11:11:05 -07:00
// Unreleased
617 , // Light of Ruin
} ;
/// <summary>
/// Species classified as "Legend" by the game code.
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > Legends = new ( )
2016-11-27 09:26:58 -08:00
{
2020-10-24 11:11:05 -07:00
( int ) Species . Mewtwo , ( int ) Species . Mew ,
2020-06-25 22:11:30 +02:00
( int ) Species . Lugia , ( int ) Species . HoOh , ( int ) Species . Celebi ,
2020-10-24 11:11:05 -07:00
( int ) Species . Kyogre , ( int ) Species . Groudon , ( int ) Species . Rayquaza , ( int ) Species . Jirachi , ( int ) Species . Deoxys ,
( int ) Species . Dialga , ( int ) Species . Palkia , ( int ) Species . Giratina , ( int ) Species . Phione , ( int ) Species . Manaphy , ( int ) Species . Darkrai , ( int ) Species . Shaymin , ( int ) Species . Arceus ,
( int ) Species . Victini , ( int ) Species . Reshiram , ( int ) Species . Zekrom , ( int ) Species . Kyurem , ( int ) Species . Keldeo , ( int ) Species . Meloetta , ( int ) Species . Genesect ,
( int ) Species . Xerneas , ( int ) Species . Yveltal , ( int ) Species . Zygarde , ( int ) Species . Diancie , ( int ) Species . Hoopa , ( int ) Species . Volcanion ,
( int ) Species . Cosmog , ( int ) Species . Cosmoem , ( int ) Species . Solgaleo , ( int ) Species . Lunala , ( int ) Species . Necrozma , ( int ) Species . Magearna , ( int ) Species . Marshadow , ( int ) Species . Zeraora ,
( int ) Species . Meltan , ( int ) Species . Melmetal ,
( int ) Species . Zacian , ( int ) Species . Zamazenta , ( int ) Species . Eternatus , ( int ) Species . Zarude , ( int ) Species . Calyrex ,
2016-11-27 09:26:58 -08:00
} ;
2018-09-14 22:37:47 -07:00
2020-10-24 11:11:05 -07:00
/// <summary>
/// Species classified as "SubLegend" by the game code.
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > SubLegends = new ( )
2016-11-27 09:26:58 -08:00
{
2020-06-25 22:11:30 +02:00
( int ) Species . Articuno , ( int ) Species . Zapdos , ( int ) Species . Moltres ,
( int ) Species . Raikou , ( int ) Species . Entei , ( int ) Species . Suicune ,
( int ) Species . Regirock , ( int ) Species . Regice , ( int ) Species . Registeel , ( int ) Species . Latias , ( int ) Species . Latios ,
( int ) Species . Uxie , ( int ) Species . Mesprit , ( int ) Species . Azelf , ( int ) Species . Heatran , ( int ) Species . Regigigas , ( int ) Species . Cresselia ,
( int ) Species . Cobalion , ( int ) Species . Terrakion , ( int ) Species . Virizion , ( int ) Species . Tornadus , ( int ) Species . Thundurus , ( int ) Species . Landorus ,
2020-10-24 11:11:05 -07:00
( int ) Species . TypeNull , ( int ) Species . Silvally , ( int ) Species . TapuKoko , ( int ) Species . TapuLele , ( int ) Species . TapuBulu , ( int ) Species . TapuFini ,
( int ) Species . Nihilego , ( int ) Species . Buzzwole , ( int ) Species . Pheromosa , ( int ) Species . Xurkitree , ( int ) Species . Celesteela , ( int ) Species . Kartana , ( int ) Species . Guzzlord ,
( int ) Species . Poipole , ( int ) Species . Naganadel , ( int ) Species . Stakataka , ( int ) Species . Blacephalon ,
( int ) Species . Kubfu , ( int ) Species . Urshifu , ( int ) Species . Regieleki , ( int ) Species . Regidrago , ( int ) Species . Glastrier , ( int ) Species . Spectrier ,
2016-11-27 09:26:58 -08:00
} ;
2020-11-02 13:11:51 -08:00
/// <summary>
/// Species that evolve from a Bi-Gendered species into a Single-Gender.
/// </summary>
2020-12-21 17:17:56 -08:00
public static readonly HashSet < int > FixedGenderFromBiGender = new ( )
2017-08-12 14:11:30 -07:00
{
2020-12-07 20:54:55 -08:00
( int ) Species . Nincada ,
( int ) Species . Shedinja , // (G)
2017-09-14 18:52:31 -07:00
2020-12-07 20:54:55 -08:00
( int ) Species . Burmy ,
( int ) Species . Wormadam , //(F)
( int ) Species . Mothim , // (M)
2017-09-14 18:52:31 -07:00
2020-12-07 20:54:55 -08:00
( int ) Species . Ralts ,
( int ) Species . Gallade , // (M)
2017-09-14 18:52:31 -07:00
2020-12-07 20:54:55 -08:00
( int ) Species . Snorunt ,
( int ) Species . Froslass , // (F)
2017-10-19 20:56:59 -07:00
2020-12-07 20:54:55 -08:00
( int ) Species . Espurr ,
( int ) Species . Meowstic , // (M/F) form specific
2017-08-12 14:11:30 -07:00
} ;
2016-10-24 20:04:47 -07:00
}
}