diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs index 5d49d340a..6511fe23e 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters7.cs @@ -181,13 +181,13 @@ private static void MarkG7SMSlots(ref EncounterArea7[] Areas) internal static readonly EncounterTrade[] TradeGift_SM = // @ a\1\5\5 { // Trades - 4.bin - new EncounterTrade { Species = 066, Form = 0, Level = 09, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Machop - new EncounterTrade { Species = 761, Form = 0, Level = 16, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Adamant, }, // Bounsweet - new EncounterTrade { Species = 061, Form = 0, Level = 22, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Naughty, }, // Poliwhirl - new EncounterTrade { Species = 440, Form = 0, Level = 27, Ability = 2, TID = 10913, SID = 00000, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 1, Gender = 1, Nature = Nature.Calm, }, // Happiny - new EncounterTrade { Species = 075, Form = 1, Level = 32, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1 - new EncounterTrade { Species = 762, Form = 0, Level = 43, Ability = 1, TID = 20679, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 1, Gender = 1, Nature = Nature.Careful, }, // Steenee - new EncounterTrade { Species = 663, Form = 0, Level = 59, Ability = 4, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Talonflame + new EncounterTrade7 { Species = 066, Form = 0, Level = 09, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Machop + new EncounterTrade7 { Species = 761, Form = 0, Level = 16, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Adamant, }, // Bounsweet + new EncounterTrade7 { Species = 061, Form = 0, Level = 22, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Naughty, }, // Poliwhirl + new EncounterTrade7 { Species = 440, Form = 0, Level = 27, Ability = 2, TID = 10913, SID = 00000, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 1, Gender = 1, Nature = Nature.Calm, }, // Happiny + new EncounterTrade7 { Species = 075, Form = 1, Level = 32, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Impish, EvolveOnTrade = true }, // Graveler-1 + new EncounterTrade7 { Species = 762, Form = 0, Level = 43, Ability = 1, TID = 20679, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 1, Gender = 1, Nature = Nature.Careful, }, // Steenee + new EncounterTrade7 { Species = 663, Form = 0, Level = 59, Ability = 4, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Talonflame }; private static readonly EncounterStatic[] Encounter_USUM = @@ -395,13 +395,13 @@ private static void MarkG7SMSlots(ref EncounterArea7[] Areas) internal static readonly EncounterTrade[] TradeGift_USUM = { // Trades - 4.bin - new EncounterTrade { Species = 701, Form = 0, Level = 08, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Hawlucha - new EncounterTrade { Species = 714, Form = 0, Level = 19, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 0, Gender = 0, Nature = Nature.Modest, }, // Noibat - new EncounterTrade { Species = 339, Form = 0, Level = 21, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Naughty, }, // Barboach - new EncounterTrade { Species = 024, Form = 0, Level = 22, Ability = 1, TID = 10913, SID = 00000, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Impish, }, // Arbok - new EncounterTrade { Species = 708, Form = 0, Level = 33, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 0, Gender = 0, Nature = Nature.Calm, EvolveOnTrade = true }, // Phantump - new EncounterTrade { Species = 422, Form = 0, Level = 44, Ability = 2, TID = 20679, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Quiet, }, // Shellos - new EncounterTrade { Species = 128, Form = 0, Level = 59, Ability = 1, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Tauros + new EncounterTrade7 { Species = 701, Form = 0, Level = 08, Ability = 2, TID = 00410, SID = 00000, IVs = new[] {-1,31,-1,-1,-1,-1}, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Hawlucha + new EncounterTrade7 { Species = 714, Form = 0, Level = 19, Ability = 1, TID = 20683, SID = 00009, IVs = new[] {-1,-1,-1,-1,31,-1}, OTGender = 0, Gender = 0, Nature = Nature.Modest, }, // Noibat + new EncounterTrade7 { Species = 339, Form = 0, Level = 21, Ability = 2, TID = 01092, SID = 00009, IVs = new[] {31,-1,-1,-1,-1,-1}, OTGender = 0, Gender = 1, Nature = Nature.Naughty, }, // Barboach + new EncounterTrade7 { Species = 024, Form = 0, Level = 22, Ability = 1, TID = 10913, SID = 00000, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Impish, }, // Arbok + new EncounterTrade7 { Species = 708, Form = 0, Level = 33, Ability = 1, TID = 20778, SID = 00009, IVs = new[] {-1,-1,-1,-1,-1,31}, OTGender = 0, Gender = 0, Nature = Nature.Calm, EvolveOnTrade = true }, // Phantump + new EncounterTrade7 { Species = 422, Form = 0, Level = 44, Ability = 2, TID = 20679, SID = 00009, IVs = new[] {-1,-1,31,-1,-1,-1}, OTGender = 1, Gender = 1, Nature = Nature.Quiet, }, // Shellos + new EncounterTrade7 { Species = 128, Form = 0, Level = 59, Ability = 1, TID = 56734, SID = 00008, IVs = new[] {-1,-1,-1,31,-1,-1}, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Tauros }; private const string tradeSM = "tradesm"; diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs index a52ee8e6f..6c83d6dce 100644 --- a/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs +++ b/PKHeX.Core/Legality/Encounters/Data/Encounters8.cs @@ -310,17 +310,17 @@ static Encounters8() internal static readonly EncounterTrade8[] TradeGift_SWSH = { - new EncounterTrade8(052,18) { Ability = 2, TID7 = 263455, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Relearn = new[] {387,000,000,000} }, // Meowth - new EncounterTrade8(819,10) { Ability = 1, TID7 = 648753, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, }, // Skwovet - new EncounterTrade8(546,23) { Ability = 1, TID7 = 101154, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, }, // Cottonee - new EncounterTrade8(175,25) { Ability = 2, TID7 = 109591, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, Relearn = new[] {791,000,000,000} }, // Togepi - new EncounterTrade8(856,30) { Ability = 2, TID7 = 101101, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Version = SW }, // Hatenna - new EncounterTrade8(859,30) { Ability = 1, TID7 = 256081, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Relearn = new[] {252,000,000,000}, Version = SH }, // Impidimp - new EncounterTrade8(562,35) { Ability = 1, TID7 = 102534, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 1, Relearn = new[] {261,000,000,000} }, // Yamask - new EncounterTrade8(538,37) { Ability = 2, TID7 = 768945, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 0, Version = SW }, // Throh - new EncounterTrade8(539,37) { Ability = 1, TID7 = 881426, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 0, Version = SH }, // Sawk - new EncounterTrade8(122,40) { Ability = 1, TID7 = 891846, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, }, // Mr. Mime - new EncounterTrade8(884,50) { Ability = 2, TID7 = 101141, IVs = TradeIVs, DynamaxLevel = 3, OTGender = 0, Relearn = new[] {400,000,000,000} }, // Duraludon + new EncounterTrade8(052,18,08,000,04,5) { Ability = 2, TID7 = 263455, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Relearn = new[] {387,000,000,000} }, // Meowth + new EncounterTrade8(819,10,01,044,01,2) { Ability = 1, TID7 = 648753, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, }, // Skwovet + new EncounterTrade8(546,23,11,000,09,5) { Ability = 1, TID7 = 101154, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, }, // Cottonee + new EncounterTrade8(175,25,02,010,10,6) { Ability = 2, TID7 = 109591, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 1, Relearn = new[] {791,000,000,000} }, // Togepi + new EncounterTrade8(856,30,09,859,08,3) { Ability = 2, TID7 = 101101, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Version = SW }, // Hatenna + new EncounterTrade8(859,30,43,000,07,6) { Ability = 1, TID7 = 256081, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, Relearn = new[] {252,000,000,000}, Version = SH }, // Impidimp + new EncounterTrade8(562,35,16,310,15,5) { Ability = 1, TID7 = 102534, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 1, Relearn = new[] {261,000,000,000} }, // Yamask + new EncounterTrade8(538,37,17,129,20,7) { Ability = 2, TID7 = 768945, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 0, Version = SW }, // Throh + new EncounterTrade8(539,37,17,129,14,6) { Ability = 1, TID7 = 881426, IVs = TradeIVs, DynamaxLevel = 2, OTGender = 0, Version = SH }, // Sawk + new EncounterTrade8(122,40,56,000,12,4) { Ability = 1, TID7 = 891846, IVs = TradeIVs, DynamaxLevel = 1, OTGender = 0, }, // Mr. Mime + new EncounterTrade8(884,50,15,038,06,2) { Ability = 2, TID7 = 101141, IVs = TradeIVs, DynamaxLevel = 3, OTGender = 0, Relearn = new[] {400,000,000,000} }, // Duraludon }; } } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade.cs index 79ee2e6ff..c3e14946a 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade.cs @@ -147,8 +147,6 @@ protected virtual void ApplyDetails(ITrainerInfo SAV, EncounterCriteria criteria if (pk.Format == 6) pk.SetRandomMemory6(); - else if (pk.Format == 7) - SetSMOTMemory(pk); } protected virtual void SetPINGA(PKM pk, EncounterCriteria criteria) @@ -227,14 +225,6 @@ private void UpdateEdgeCase(PKM pkm) } } - private static void SetSMOTMemory(PKM pk) - { - pk.OT_Memory = 1; - pk.OT_Intensity = 3; - pk.OT_TextVar = 40; - pk.OT_Feeling = 5; - } - public virtual bool IsMatch(PKM pkm, int lvl) { if (IVs.Length != 0) @@ -404,4 +394,21 @@ private bool IsValidTradeOT12(PKM pkm) return index >= 0; } } + + public sealed class EncounterTrade7 : EncounterTrade, IMemoryOT + { + public int OT_Memory => 1; + public int OT_Intensity => 3; + public int OT_Feeling => 5; + public int OT_TextVar => 40; + + protected override void ApplyDetails(ITrainerInfo SAV, EncounterCriteria criteria, PKM pk) + { + base.ApplyDetails(SAV, criteria, pk); + pk.OT_Memory = OT_Memory; + pk.OT_Intensity = OT_Intensity; + pk.OT_Feeling = OT_Feeling; + pk.OT_TextVar = OT_TextVar; + } + } } diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade8.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade8.cs index 4b32a8fc3..f82705b0c 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade8.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade8.cs @@ -2,15 +2,25 @@ namespace PKHeX.Core { - public class EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn + public class EncounterTrade8 : EncounterTrade, IDynamaxLevel, IRelearn, IMemoryOT { public byte DynamaxLevel { get; set; } public int[] Relearn { get; set; } = Array.Empty(); - public EncounterTrade8(int species, int level) + public int OT_Memory { get; } + public int OT_TextVar { get; } + public int OT_Feeling { get; } + public int OT_Intensity { get; } + + public EncounterTrade8(int species, int level, int m, int a, int f, int i) { Species = species; Level = level; + + OT_Memory = m; + OT_TextVar = a; + OT_Feeling = f; + OT_Intensity = i; } public override bool IsMatch(PKM pkm, int lvl) @@ -22,11 +32,16 @@ public override bool IsMatch(PKM pkm, int lvl) protected override void ApplyDetails(ITrainerInfo SAV, EncounterCriteria criteria, PKM pk) { - if (pk is IDynamaxLevel d) - d.DynamaxLevel = DynamaxLevel; - pk.SetRelearnMoves(Relearn); - ((PK8)pk).HT_Language = SAV.Language; base.ApplyDetails(SAV, criteria, pk); + pk.SetRelearnMoves(Relearn); + + var pk8 = (PK8)pk; + pk8.DynamaxLevel = DynamaxLevel; + pk8.HT_Language = SAV.Language; + pk8.OT_Memory = OT_Memory; + pk8.OT_TextVar = OT_TextVar; + pk8.OT_Feeling = OT_Feeling; + pk8.OT_Intensity = OT_Intensity; } } } \ No newline at end of file diff --git a/PKHeX.Core/MysteryGifts/WC6.cs b/PKHeX.Core/MysteryGifts/WC6.cs index bbccf28af..f28e7b52b 100644 --- a/PKHeX.Core/MysteryGifts/WC6.cs +++ b/PKHeX.Core/MysteryGifts/WC6.cs @@ -8,7 +8,7 @@ namespace PKHeX.Core /// /// Generation 6 Mystery Gift Template File /// - public sealed class WC6 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature + public sealed class WC6 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature, IMemoryOT { public const int Size = 0x108; public const uint EonTicketConst = 0x225D73C2; diff --git a/PKHeX.Core/MysteryGifts/WC7.cs b/PKHeX.Core/MysteryGifts/WC7.cs index e0fe07ddd..e67bccfc6 100644 --- a/PKHeX.Core/MysteryGifts/WC7.cs +++ b/PKHeX.Core/MysteryGifts/WC7.cs @@ -8,7 +8,7 @@ namespace PKHeX.Core /// /// Generation 7 Mystery Gift Template File /// - public sealed class WC7 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature + public sealed class WC7 : DataMysteryGift, IRibbonSetEvent3, IRibbonSetEvent4, ILangNick, IContestStats, INature, IMemoryOT { public const int Size = 0x108; public override int Format => 7; diff --git a/PKHeX.Core/MysteryGifts/WC8.cs b/PKHeX.Core/MysteryGifts/WC8.cs index 3f19dcea6..069278493 100644 --- a/PKHeX.Core/MysteryGifts/WC8.cs +++ b/PKHeX.Core/MysteryGifts/WC8.cs @@ -9,7 +9,7 @@ namespace PKHeX.Core /// /// Generation 8 Mystery Gift Template File /// - public sealed class WC8 : DataMysteryGift, ILangNick, INature, IGigantamax, IDynamaxLevel, IRibbonIndex, + public sealed class WC8 : DataMysteryGift, ILangNick, INature, IGigantamax, IDynamaxLevel, IRibbonIndex, IMemoryOT, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, IRibbonSetCommon8, IRibbonSetMark8 { public const int Size = 0x2D0; diff --git a/PKHeX.Core/PKM/Shared/IMemoryOT.cs b/PKHeX.Core/PKM/Shared/IMemoryOT.cs new file mode 100644 index 000000000..6509a2eaf --- /dev/null +++ b/PKHeX.Core/PKM/Shared/IMemoryOT.cs @@ -0,0 +1,10 @@ +namespace PKHeX.Core +{ + public interface IMemoryOT + { + int OT_Memory { get; } + int OT_Intensity { get; } + int OT_Feeling { get; } + int OT_TextVar { get; } + } +} \ No newline at end of file