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! }
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); }