Пример #1
0
        public PK7 convertToPK7()
        {
            PK7 pk7 = new PK7(Data)
            {
                Markings = Markings,       // Clears old Super Training Bag & Hits Remaining
                Data     = { [0x2A] = 0 }, // Clears old Marking Value
            };

            switch (AbilityNumber)
            {
            case 1:
            case 2:
            case 4:                                           // Valid Ability Numbers
                int index = AbilityNumber >> 1;
                if (PersonalInfo.Abilities[index] == Ability) // correct pair
                {
                    pk7.Ability = pk7.PersonalInfo.Abilities[index];
                }
                break;
            }

            pk7.TradeMemory(Bank: true); // oh no, memories on gen7 pkm
            pk7.Geo1_Country = PKMConverter.Country;
            pk7.Geo1_Region  = PKMConverter.Region;

            // Bank-accurate data zeroing
            for (var i = 0x94; i < 0x9E; i++)
            {
                pk7.Data[i] = 0;                               /* Geolocations. */
            }
            for (var i = 0xAA; i < 0xB0; i++)
            {
                pk7.Data[i] = 0;                               /* Unused/Amie Fullness & Enjoyment. */
            }
            for (var i = 0xE4; i < 0xE8; i++)
            {
                pk7.Data[i] = 0;    /* Unused. */
            }
            pk7.Data[0x72] &= 0xFC; /* Clear lower two bits of Super training flags. */
            pk7.Data[0xDE]  = 0;    /* Gen IV encounter type. */

            // Fix Checksum
            pk7.RefreshChecksum();

            return(pk7); // Done!
        }
Пример #2
0
        public PK7 convertToPK7()
        {
            var pk7 = new PK7
            {
                EncryptionConstant = Util.rnd32(),
                Species            = Species,
                TID          = TID,
                CurrentLevel = CurrentLevel,
                EXP          = EXP,
                Met_Level    = CurrentLevel,
                Nature       = (int)(EXP % 25),
                PID          = Util.rnd32(),
                Ball         = 4,
                MetDate      = DateTime.Now,
                Version      = (int)GameVersion.RD, // Default to red, for now?
                Move1        = Move1,
                Move2        = Move2,
                Move3        = Move3,
                Move4        = Move4,
                Move1_PPUps  = Move1_PPUps,
                Move2_PPUps  = Move2_PPUps,
                Move3_PPUps  = Move3_PPUps,
                Move4_PPUps  = Move4_PPUps,
                Move1_PP     = Move1_PP,
                Move2_PP     = Move2_PP,
                Move3_PP     = Move3_PP,
                Move4_PP     = Move4_PP,
                Met_Location = 30013, // "Kanto region", hardcoded.
                Gender       = PersonalTable.SM[Species].RandomGender,
                OT_Name      = PKX.getG1ConvertedString(otname, Japanese),
                IsNicknamed  = false,

                Country        = PKMConverter.Country,
                Region         = PKMConverter.Region,
                ConsoleRegion  = PKMConverter.ConsoleRegion,
                CurrentHandler = 1,
                HT_Name        = PKMConverter.OT_Name,
                HT_Gender      = PKMConverter.OT_Gender,
                Language       = PKMConverter.Language,
                Geo1_Country   = PKMConverter.Country,
                Geo1_Region    = PKMConverter.Region
            };

            pk7.Nickname = PKX.getSpeciesNameGeneration(pk7.Species, pk7.Language, pk7.Format);
            if (otname[0] == 0x5D) // Ingame Trade
            {
                var s = PKX.getG1Char(0x5D, Japanese);
                pk7.OT_Name = s.Substring(0, 1) + s.Substring(1).ToLower();
            }
            pk7.OT_Friendship = pk7.HT_Friendship = PersonalTable.SM[Species].BaseFriendship;

            // IVs
            var new_ivs  = new int[6];
            int flawless = Species == 151 ? 5 : 3;

            for (var i = 0; i < new_ivs.Length; i++)
            {
                new_ivs[i] = (int)(Util.rnd32() & 31);
            }
            for (var i = 0; i < flawless; i++)
            {
                new_ivs[i] = 31;
            }
            Util.Shuffle(new_ivs);
            pk7.IVs = new_ivs;

            // Really? :(
            if (IsShiny)
            {
                pk7.setShinyPID();
            }

            int abil = 2; // Hidden

            if (Legal.TransferSpeciesDefaultAbility_1.Contains(Species))
            {
                abil = 0;             // Reset
            }
            pk7.RefreshAbility(abil); // 0/1/2 (not 1/2/4)

            if (Species == 151)       // Mew gets special treatment.
            {
                pk7.FatefulEncounter = true;
            }
            else if (IsNicknamedBank)
            {
                pk7.IsNicknamed = true;
                pk7.Nickname    = PKX.getG1ConvertedString(nick, Japanese);
            }

            pk7.TradeMemory(Bank: true); // oh no, memories on gen7 pkm

            if (pk7.Species == 150)      // Pay Day Mewtwo
            {
                var moves = pk7.Moves;
                var index = Array.IndexOf(moves, 6);
                if (index != -1)
                {
                    moves[index] = 0;
                    pk7.Moves    = moves;
                    pk7.FixMoves();
                }
            }

            pk7.RefreshChecksum();
            return(pk7);
        }