//byte #8/#9 is wild within the pal parked set.
        //byte #6 variable:
        /*
                            75,76,77,78,79
                            76,76,77,78,79
                            76,77,78,78,79
                            76,77,78,79,79
                            76,77,78,79,7A
                        */
        public GerHGSSPPData( PokemonData pkm )
            : base(pkm)
        {
            GetTrashByteEntry( m_Slot1, m_Slot2 );

            SetSlotCheck( 0, 0x75, 0x76 );
            SetSlotCheck( 1, 0x76, 0x77 );
            SetSlotCheck( 2, 0x77, 0x78 );
            SetSlotCheck( 3, 0x78, 0x79 );
            SetSlotCheck( 4, 0x79, 0x7A );
        }
        //byte #8/#9 is wild within the pal parked set.
        //byte #6 variable:
        /*
                            AB, AC, AD, AE, AF
                            AC, AD, AD, AE, AF
                            AC, AD, AE, AE, AF
                            AC, AD, AE, AF, AF
                            AC, AD, AE, AF, B0
                        */
        public GerPtPPData( PokemonData pkm )
            : base(pkm)
        {
            GetTrashByteEntry_Slot1( m_Slot1_1, m_Slot1_2 );
            GetTrashByteEntry_Slot2( m_Slot2_1, m_Slot2_2 );

            SetSlotCheck( 0, 0xA9, 0xAA, 0xAB );
            SetSlotCheck( 1, 0xAA, 0xAB, 0xAC );
            SetSlotCheck( 2, 0xAA, 0xAB, 0xAC, 0xAD );
            SetSlotCheck( 3, 0xAB, 0xAC, 0xAD, 0xAE );
            SetSlotCheck( 4, 0xAC, 0xAD, 0xAE, 0xAF );
        }
 public static new PPData GetPalParkData( PokemonData pkm )
 {
     switch ( pkm.Language )
     {
         default: return null;
         case Language.Japanese: return new JapHGSSPPData( pkm );
         case Language.English: return new EngHGSSPPData( pkm );
         case Language.French: return new FreHGSSPPData( pkm );
         case Language.German: return new GerHGSSPPData( pkm );
         case Language.Italian: return new ItaHGSSPPData( pkm );
         case Language.Spanish: return new SpaHGSSPPData( pkm );
         case Language.Korean: if ( pkm.Nicknamed ) return new KorHGSSPPData( pkm ) else return null;
     }
 }
 public PtPPData( PokemonData pkm )
     : base(pkm)
 {
 }
 public virtual bool IsValidRibbons( PokemonData data )
 {
     //Todo - 4G Ribbons only
     return true; //Some ribbons are REQUIRED
 }
 public override bool IsMatch( PokemonData data )
 {
     return base.IsMatch( data ) && ( data.EggLocation == m_EggLocation || data.EggLocation == 2002 );
 }
 public virtual bool IsValidAlgorithm( PokemonData data )
 {
     //Todo - ABCD algorithm.
     return true;
 }
 public virtual bool IsValidFatefulEncounter( PokemonData data )
 {
     return !data.IsFateful;
 }
 public virtual bool IsValidAlgorithm( PokemonData data )
 {
     return true;
 }
 public HGSSPPData( PokemonData pkm )
     : base(pkm)
 {
 }
 public virtual bool IsValidFatefulEncounter( PokemonData data )
 {
     return true; //All 4G events require this flag, some 3rd gen, some not.
 }
 public override bool IsMatch( PokemonData data )
 {
     return base.IsMatch( data ) && data.Location == location /*&& data.Ribbons.Contains( Ribbon.Classic ) && data.PokeBall == PokeBall.Cherish*/;
 }
 public 3GPokemonData( PokemonData pkm )
     : base(pkm)
 {
     //Determine PalParkData - Will the proper information be present in the PKM itself? (Check Nicknames with Korean pokes)
     m_PPData = PPData.GetPalParkData( this );
 }
 public override bool IsMatch( PokemonData data )
 {
     return base.IsMatch( data ) && data.TID == m_TID && data.SID == m_SID /*&& data.OTName.Equals( otname )*/;
 }
 public virtual bool IsValidPokeBall( PokemonData data )
 {
     return true;
 }
 public virtual bool IsValidLanguage( PokemonData data )
 {
     return true;
 }
 public virtual bool IsValidGender( PokemonData data )
 {
     return true;
 }
 public JapHGSSPPData( PokemonData pkm )
     : base(pkm)
 {
     GetTrashByteEntry( m_Slot1, m_Slot2 );
 }
 public ItaPtPPData( PokemonData pkm )
     : base(pkm)
 {
     GetTrashByteEntry( m_Slot1, m_Slot2 );
 }
 public FreDPPPData( PokemonData pkm )
     : base(pkm)
 {
     GetTrashByteEntry_Slot1( m_Slot1 );
     GetTrashByteEntry_Slot2( m_Slot2 );
 }
 public virtual bool IsMatch( PokemonData data )
 {
     //Utility.IsMatch() checks for evolution situations such as Eevee -> Umbreon and Acquisition Level + 1.
     return data.HomeTown == m_HomeTown && Utility.IsMatch( data.NatID, m_NatID, data.m_MinLevel, m_MinLevel );
 }