mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-05-10 13:45:45 -05:00
Add shared memory interface (encounter)
This commit is contained in:
parent
6627d7e2f4
commit
445fdee2ba
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<int>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Generation 6 Mystery Gift Template File
|
||||
/// </summary>
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Generation 7 Mystery Gift Template File
|
||||
/// </summary>
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Generation 8 Mystery Gift Template File
|
||||
/// </summary>
|
||||
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;
|
||||
|
|
|
|||
10
PKHeX.Core/PKM/Shared/IMemoryOT.cs
Normal file
10
PKHeX.Core/PKM/Shared/IMemoryOT.cs
Normal file
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user