Add encountertrades

This commit is contained in:
Kurt 2016-11-10 19:29:00 -08:00
parent 2fcf22d621
commit cd29b5f8f0
4 changed files with 34 additions and 5 deletions

View file

@ -179,6 +179,12 @@ namespace PKHeX
validOT = Legal.TradeAO[pkm.Language];
index = Array.IndexOf(Legal.TradeGift_AO, EncounterMatch);
}
else if (pkm.SM)
{
// TODO
AddLine(Severity.Valid, "Ingame Trade for Sun/Moon un-implemented.", CheckIdentifier.EVs);
return;
}
if (validOT.Length == 0)
{
@ -206,7 +212,7 @@ namespace PKHeX
if (pkm.IsEgg)
{
if (!pkm.IsNicknamed)
if (!pkm.IsNicknamed && (pkm.Format != 7))
AddLine(Severity.Invalid, "Eggs must be nicknamed.", CheckIdentifier.EVs);
else if (PKX.SpeciesLang[pkm.Language][0] != pkm.Nickname)
AddLine(Severity.Invalid, "Egg name does not match language Egg name.", CheckIdentifier.EVs);
@ -868,6 +874,11 @@ namespace PKHeX
if (pkm.CurrentHandler != 1)
return new CheckResult(Severity.Invalid, "Current handler should not be Event OT.", CheckIdentifier.History);
}
if (EncounterType == typeof (EncounterTrade) && pkm.Format == 7)
{
// TODO
return new CheckResult(Severity.Valid, "S/M History Block check skipped.", CheckIdentifier.History);
}
if (!pkm.WasEvent && !(pkm.WasLink && (EncounterMatch as EncounterLink)?.OT == false) && (pkm.HT_Name.Length == 0 || pkm.Geo1_Country == 0)) // Is not Traded
{
if (pkm.HT_Name.Length != 0)

View file

@ -252,16 +252,21 @@ namespace PKHeX
if (!pkm.WasIngameTrade)
return null;
int lang = pkm.Language;
if (lang == 0)
if (lang == 0 || lang == 6)
return null;
// Get valid pre-evolutions
IEnumerable<DexLevel> p = getValidPreEvolutions(pkm);
EncounterTrade z = null;
EncounterTrade[] table = null;
if (pkm.XY)
z = lang == 6 ? null : TradeGift_XY.FirstOrDefault(f => p.Any(r => r.Species == f.Species));
table = TradeGift_XY;
if (pkm.AO)
z = lang == 6 ? null : TradeGift_AO.FirstOrDefault(f => p.Any(r => r.Species == f.Species));
table = TradeGift_AO;
if (pkm.SM)
table = TradeGift_SM;
EncounterTrade z = table?.FirstOrDefault(f => p.Any(r => r.Species == f.Species));
if (z == null)
return null;
@ -284,6 +289,8 @@ namespace PKHeX
return null;
if (z.Gender != pkm.Gender)
return null;
if (z.OTGender != -1 && z.OTGender != pkm.OT_Gender)
return null;
// if (z.Ability == 4 ^ pkm.AbilityNumber == 4) // defer to Ability
// return null;

View file

@ -15,5 +15,6 @@
public int Form = 0;
public bool Shiny = false;
public int Gender = -1;
public int OTGender = -1;
}
}

View file

@ -249,6 +249,16 @@ namespace PKHeX
// Trades - 4.bin
};
internal static EncounterTrade[] TradeGift_SM =
{
new EncounterTrade { Species = 066, Form = 0, Level = 09, Ability = 2, TID = 00410, SID = 00000, OTGender = 1, Gender = 0, Nature = Nature.Brave, }, // Machop
new EncounterTrade { Species = 761, Form = 0, Level = 16, Ability = 1, TID = 20683, SID = 00009, OTGender = 0, Gender = 1, Nature = Nature.Adamant, }, // Bounsweet
new EncounterTrade { Species = 061, Form = 0, Level = 22, Ability = 2, TID = 01092, SID = 00009, OTGender = 1, Gender = 1, Nature = Nature.Naughty, }, // Poliwhirl
new EncounterTrade { Species = 440, Form = 0, Level = 27, Ability = 2, TID = 10913, SID = 00000, OTGender = 1, Gender = 1, Nature = Nature.Calm, }, // Happiny
new EncounterTrade { Species = 075, Form = 1, Level = 32, Ability = 1, TID = 20778, SID = 00009, OTGender = 0, Gender = 0, Nature = Nature.Impish, }, // Graveler-1
new EncounterTrade { Species = 762, Form = 0, Level = 43, Ability = 1, TID = 20679, SID = 00009, OTGender = 1, Gender = 1, Nature = Nature.Careful, }, // Steenee
new EncounterTrade { Species = 663, Form = 0, Level = 59, Ability = 4, TID = 56734, SID = 00008, OTGender = 0, Gender = 0, Nature = Nature.Jolly, }, // Talonflame
};
#endregion
private static readonly int[] WildPokeballs7 = {