mirror of
https://github.com/kwsch/PKHeX
synced 2025-02-17 05:48:44 +00:00
Add initial gen3 event detection
egg events supported, only some gen3 event distros supported will eventually flag for PIDIV type mismatching @kamronbatman
This commit is contained in:
parent
9a7dc9998c
commit
82750de1b8
11 changed files with 199 additions and 74 deletions
|
@ -1991,9 +1991,27 @@ namespace PKHeX.Core
|
|||
|
||||
if (Encounter.Valid)
|
||||
{
|
||||
if (Type == typeof(MysteryGift))
|
||||
if (EncounterMatch is MysteryGift g)
|
||||
{
|
||||
if (pkm.FatefulEncounter)
|
||||
bool fatefulValid = false;
|
||||
if (g.Format == 3)
|
||||
{
|
||||
// obedience flag in gen3 is the fateful flag; met location stores the fateful info until transfer
|
||||
bool required = g.Species == 151 || g.Species == 386;
|
||||
required |= pkm.Format != 3 && !g.IsEgg;
|
||||
fatefulValid = !(required ^ pkm.FatefulEncounter);
|
||||
|
||||
var g3 = (WC3) g; // shiny locked gifts
|
||||
if (g3.Shiny != null && g3.Shiny != pkm.IsShiny)
|
||||
AddLine(Severity.Invalid, V409, CheckIdentifier.Fateful);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pkm.FatefulEncounter)
|
||||
fatefulValid = true;
|
||||
}
|
||||
|
||||
if (fatefulValid)
|
||||
AddLine(Severity.Valid, V321, CheckIdentifier.Fateful);
|
||||
else
|
||||
AddLine(Severity.Invalid, V322, CheckIdentifier.Fateful);
|
||||
|
@ -2003,9 +2021,7 @@ namespace PKHeX.Core
|
|||
{
|
||||
var fateful = s.Fateful;
|
||||
var shadow = EncounterMatch is EncounterStaticShadow;
|
||||
if (pkm.Gen3 && pkm.WasEgg && !pkm.IsEgg)
|
||||
fateful = false; // lost after hatching
|
||||
else if (shadow && !(pkm is XK3 || pkm is CK3))
|
||||
if (shadow && !(pkm is XK3 || pkm is CK3))
|
||||
fateful = true; // purification required for transfer
|
||||
|
||||
if (fateful)
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace PKHeX.Core
|
|||
public static partial class Legal
|
||||
{
|
||||
/// <summary>Event Database for a given Generation</summary>
|
||||
public static MysteryGift[] MGDB_G4, MGDB_G5, MGDB_G6, MGDB_G7 = new MysteryGift[0];
|
||||
public static MysteryGift[] MGDB_G3, MGDB_G4, MGDB_G5, MGDB_G6, MGDB_G7 = new MysteryGift[0];
|
||||
|
||||
/// <summary>Setting to specify if an analysis should permit data sourced from the physical cartridge era of GameBoy games.</summary>
|
||||
public static bool AllowGBCartEra = false;
|
||||
|
@ -168,6 +168,7 @@ namespace PKHeX.Core
|
|||
}
|
||||
}
|
||||
|
||||
MGDB_G3 = Encounter_WC3; // hardcoded
|
||||
MGDB_G4 = g4.ToArray();
|
||||
MGDB_G5 = g5.ToArray();
|
||||
MGDB_G6 = g6.ToArray();
|
||||
|
|
|
@ -136,7 +136,7 @@ namespace PKHeX.Core
|
|||
if (ctr != 0) yield break;
|
||||
}
|
||||
|
||||
bool wasEvent = pkm.WasEvent || pkm.WasEventEgg;
|
||||
bool wasEvent = pkm.WasEvent || pkm.WasEventEgg || pkm.GenNumber == 3; // egg events?
|
||||
if (wasEvent)
|
||||
{
|
||||
foreach (var z in getValidGifts(pkm))
|
||||
|
@ -285,23 +285,6 @@ namespace PKHeX.Core
|
|||
yield return e;
|
||||
}
|
||||
}
|
||||
private static IEnumerable<EncounterStatic> getG3SpecialEggEncounter(PKM pkm)
|
||||
{
|
||||
IEnumerable<DexLevel> dl = getValidPreEvolutions(pkm, MaxSpeciesID_3);
|
||||
var sttctable = pkm.E ? EventEgg_G3_Common : pkm.FRLG ? EventEgg_FRLG : EventEgg_RS;
|
||||
var table = sttctable.Where(e => dl.Any(d => d.Species == e.Species));
|
||||
foreach (EncounterStatic e in table)
|
||||
{
|
||||
if (pkm.Moves.All(m => !e.Moves.Contains(m))) // No special move
|
||||
continue;
|
||||
if (e.Nature != Nature.Random && pkm.Nature != (int)e.Nature)
|
||||
continue;
|
||||
if (e.Gender != -1 && e.Gender != pkm.Gender)
|
||||
continue;
|
||||
|
||||
yield return e;
|
||||
}
|
||||
}
|
||||
private static IEnumerable<EncounterStatic> getStaticEncounters(PKM pkm, int lvl = -1, GameVersion gameSource = GameVersion.Any)
|
||||
{
|
||||
if (gameSource == GameVersion.Any)
|
||||
|
@ -694,6 +677,8 @@ namespace PKHeX.Core
|
|||
{
|
||||
switch (pkm.GenNumber)
|
||||
{
|
||||
case 3:
|
||||
return getMatchingWC3(pkm, MGDB_G3);
|
||||
case 4:
|
||||
return getMatchingPCD(pkm, MGDB_G4);
|
||||
case 5:
|
||||
|
@ -706,6 +691,60 @@ namespace PKHeX.Core
|
|||
return new List<MysteryGift>();
|
||||
}
|
||||
}
|
||||
private static IEnumerable<MysteryGift> getMatchingWC3(PKM pkm, IEnumerable<MysteryGift> DB)
|
||||
{
|
||||
if (DB == null)
|
||||
yield break;
|
||||
|
||||
var validWC3 = new List<MysteryGift>();
|
||||
var vs = getValidPreEvolutions(pkm, MaxSpeciesID_3).ToArray();
|
||||
foreach (WC3 wc in DB.OfType<WC3>().Where(wc => vs.Any(dl => dl.Species == wc.Species)))
|
||||
{
|
||||
// Gen3 Version MUST match.
|
||||
if (wc.Version != 0 && !((GameVersion)wc.Version).Contains((GameVersion)pkm.Version))
|
||||
continue;
|
||||
|
||||
if (!wc.IsEgg)
|
||||
{
|
||||
if (wc.SID != -1 && wc.SID != pkm.SID) continue;
|
||||
if (wc.TID != -1 && wc.TID != pkm.TID) continue;
|
||||
if (wc.OT_Name != pkm.OT_Name) continue;
|
||||
if (wc.OT_Gender < 3 && wc.OT_Gender != pkm.OT_Gender) continue;
|
||||
if (wc.Language != 0 && wc.Language != pkm.Language) continue;
|
||||
|
||||
if (wc.Met_Location != pkm.Met_Location && pkm.HasOriginalMetLocation)
|
||||
continue;
|
||||
}
|
||||
else if (wc.IsEgg)
|
||||
{
|
||||
if (pkm.IsNative)
|
||||
{
|
||||
if (wc.Level != pkm.Met_Level)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (wc.Level > pkm.Met_Level)
|
||||
continue;
|
||||
if (pkm.IsEgg)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (wc.Ball != pkm.Ball) continue;
|
||||
|
||||
// Some checks are best performed separately as they are caused by users screwing up valid data.
|
||||
// if (wc.Level > pkm.CurrentLevel) continue; // Defer to level legality
|
||||
// RIBBONS: Defer to ribbon legality
|
||||
|
||||
if (wc.Species == pkm.Species) // best match
|
||||
yield return wc;
|
||||
else
|
||||
validWC3.Add(wc);
|
||||
}
|
||||
foreach (var z in validWC3)
|
||||
yield return z;
|
||||
}
|
||||
private static IEnumerable<MysteryGift> getMatchingPCD(PKM pkm, IEnumerable<MysteryGift> DB)
|
||||
{
|
||||
if (DB == null)
|
||||
|
|
|
@ -259,7 +259,7 @@ namespace PKHeX.Core
|
|||
private static CheckResult verifyEncounterEvent(PKM pkm, MysteryGift MatchedGift)
|
||||
{
|
||||
// Strict matching already performed by EncounterGenerator. May be worth moving some checks here to better flag invalid gifts.
|
||||
return new CheckResult(Severity.Valid, string.Format(V21, MatchedGift.CardID.ToString("0000"), MatchedGift.CardTitle), CheckIdentifier.Encounter);
|
||||
return new CheckResult(Severity.Valid, string.Format(V21, MatchedGift.getCardHeader(), ""), CheckIdentifier.Encounter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -401,7 +401,8 @@ namespace PKHeX.Core
|
|||
public static string V405 {get; set;} = "Outsider {0} should have evolved into {1}.";
|
||||
public static string V406 {get; set;} = "Non Japanese Shadow E-reader Pokémon. Unreleased encounter.";
|
||||
public static string V407 {get; set;} = "OT from Colosseum/XD cannot be female.";
|
||||
public static string V408 {get; set;} = "OT from Generation 1 cannot be female.";
|
||||
public static string V408 {get; set;} = "Female OT from Generation 1/2 is invalid.";
|
||||
public static string V409 {get; set;} = "Mystery Gift shiny mismatch.";
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
|
|
@ -238,62 +238,79 @@ namespace PKHeX.Core
|
|||
46, 47, 48, 49,
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic[] EventEgg_FRLG_Exclusive =
|
||||
internal static readonly MysteryGift[] Encounter_Event3 =
|
||||
{
|
||||
new WC3 { Species = 385, Level = 05, TID = 40122, OT_Gender = 3, OT_Name = "CHANNEL", CardTitle = "Channel Jirachi", Method = PIDType.Channel, Version = (int)GameVersion.RS },
|
||||
new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "アゲト", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 1 },
|
||||
new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "コロシアム", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 1 },
|
||||
|
||||
new WC3 { Species = 385, Level = 05, TID = 20043, OT_Gender = 0, OT_Name = "WISHMKR", CardTitle = "Wishmaker Jirachi", Method = PIDType.BACD_R, Language = 2 },
|
||||
new WC3 { Species = 251, Level = 10, TID = 31121, OT_Gender = 1, OT_Name = "AGATE", CardTitle = "Agate Celebi", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true },
|
||||
new WC3 { Species = 025, Level = 10, TID = 31121, OT_Gender = 0, OT_Name = "COLOS", CardTitle = "Colosseum Pikachu", Method = PIDType.CXD, Shiny = false, Language = 2, NotDistributed = true },
|
||||
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "バトルやま", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 1 }, // JPN
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MATTLE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 2 }, // ENG
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MT BATA", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 3 }, // FRE
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "DUELLBE", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 4 }, // GER
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "MONTE L", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 5 }, // ITA
|
||||
new WC3 { Species = 250, Level = 70, TID = 10048, OT_Gender = 0, OT_Name = "ERNESTO", CardTitle = "Mt. Battle Ho-oh", Method = PIDType.CXD, Shiny = false, Language = 7 }, // SPA
|
||||
};
|
||||
|
||||
internal static readonly MysteryGift[] Encounter_Event3_FRLG =
|
||||
{
|
||||
// Egg Pokémon Present Eggs
|
||||
new EncounterStatic { Species = 043, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{073} }, // Oddish with Leech Seed
|
||||
new EncounterStatic { Species = 052, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{080} }, // Meowth with Petal Dance
|
||||
new EncounterStatic { Species = 060, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{186} }, // Poliwag with Sweet Kiss
|
||||
new EncounterStatic { Species = 069, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{298} }, // Bellsprout with Teeter Dance
|
||||
new WC3 { Species = 043, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{073} }, // Oddish with Leech Seed
|
||||
new WC3 { Species = 052, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{080} }, // Meowth with Petal Dance
|
||||
new WC3 { Species = 060, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{186} }, // Poliwag with Sweet Kiss
|
||||
new WC3 { Species = 069, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{298} }, // Bellsprout with Teeter Dance
|
||||
// Wish Egg
|
||||
new EncounterStatic { Species = 083, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 281} }, // Farfetch'd with Wish & Yawn
|
||||
new EncounterStatic { Species = 096, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 187} }, // Drowzee with Wish & Belly Drum
|
||||
new EncounterStatic { Species = 102, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 230} }, // Exeggcute with Wish & Sweet Scent
|
||||
new EncounterStatic { Species = 108, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 215} }, // Lickitung with Wish & Heal Bell
|
||||
new EncounterStatic { Species = 113, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 230} }, // Chansey with Wish & Sweet Scent
|
||||
new EncounterStatic { Species = 115, Level = 05, EggLocation = 255, Version = GameVersion.FRLG, Moves = new[]{273, 281} }, // Kangaskhan with Wish & Yawn
|
||||
new WC3 { Species = 083, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 281} }, // Farfetch'd with Wish & Yawn
|
||||
new WC3 { Species = 096, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 187} }, // Drowzee with Wish & Belly Drum
|
||||
new WC3 { Species = 102, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 230} }, // Exeggcute with Wish & Sweet Scent
|
||||
new WC3 { Species = 108, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 215} }, // Lickitung with Wish & Heal Bell
|
||||
new WC3 { Species = 113, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 230} }, // Chansey with Wish & Sweet Scent
|
||||
new WC3 { Species = 115, IsEgg = true, Level = 05, Version = (int)GameVersion.FRLG, Moves = new[]{273, 281} }, // Kangaskhan with Wish & Yawn
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic[] EventEgg_RS_Exclusive =
|
||||
internal static readonly MysteryGift[] Encounter_Event3_RS =
|
||||
{
|
||||
// Pokémon Center 5th Anniversary Eggs
|
||||
new EncounterStatic { Species = 172, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{298} }, // Pichu with Teeter Dance
|
||||
new EncounterStatic { Species = 172, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{273} }, // Pichu with Wish
|
||||
new EncounterStatic { Species = 280, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{204} }, // Ralts with Charm
|
||||
new EncounterStatic { Species = 280, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{273} }, // Ralts with Wish
|
||||
new EncounterStatic { Species = 359, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{180} }, // Absol with Spite
|
||||
new EncounterStatic { Species = 359, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{273} }, // Absol with Wish
|
||||
new EncounterStatic { Species = 371, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{334} }, // Bagon with Iron Defense
|
||||
new EncounterStatic { Species = 371, Level = 05, EggLocation = 255, Version = GameVersion.RS, Moves = new[]{273} }, // Bagon with Wish
|
||||
new WC3 { Species = 172, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{298} }, // Pichu with Teeter Dance
|
||||
new WC3 { Species = 172, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{273} }, // Pichu with Wish
|
||||
new WC3 { Species = 280, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{204} }, // Ralts with Charm
|
||||
new WC3 { Species = 280, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{273} }, // Ralts with Wish
|
||||
new WC3 { Species = 359, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{180} }, // Absol with Spite
|
||||
new WC3 { Species = 359, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{273} }, // Absol with Wish
|
||||
new WC3 { Species = 371, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{334} }, // Bagon with Iron Defense
|
||||
new WC3 { Species = 371, IsEgg = true, Level = 05, Version = (int)GameVersion.RS, Moves = new[]{273} }, // Bagon with Wish
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic[] EventEgg_G3_Common =
|
||||
internal static readonly MysteryGift[] Encounter_Event3_Common =
|
||||
{
|
||||
// Pokémon Box
|
||||
new EncounterStatic { Species = 333, Level = 05, EggLocation = 255, Version = GameVersion.RSBOX, Moves = new[]{206} }, // Swablu Egg with False Swipe
|
||||
new EncounterStatic { Species = 263, Level = 05, EggLocation = 255, Version = GameVersion.RSBOX, Moves = new[]{245} }, // Zigzagoon Egg with Extreme Speed
|
||||
new EncounterStatic { Species = 300, Level = 05, EggLocation = 255, Version = GameVersion.RSBOX, Moves = new[]{6} }, // Skitty Egg with Pay Day
|
||||
new EncounterStatic { Species = 172, Level = 05, EggLocation = 255, Version = GameVersion.RSBOX, Moves = new[]{57} }, // Pichu Egg with Surf
|
||||
new WC3 { Species = 333, IsEgg = true, Level = 05, /*Version = (int)GameVersion.RSBOX,*/ Moves = new[]{206} }, // Swablu Egg with False Swipe
|
||||
new WC3 { Species = 263, IsEgg = true, Level = 05, /*Version = (int)GameVersion.RSBOX,*/ Moves = new[]{245} }, // Zigzagoon Egg with Extreme Speed
|
||||
new WC3 { Species = 300, IsEgg = true, Level = 05, /*Version = (int)GameVersion.RSBOX,*/ Moves = new[]{006} }, // Skitty Egg with Pay Day
|
||||
new WC3 { Species = 172, IsEgg = true, Level = 05, /*Version = (int)GameVersion.RSBOX,*/ Moves = new[]{057} }, // Pichu Egg with Surf
|
||||
// PokePark Eggs
|
||||
new EncounterStatic { Species = 054, Level = 05, EggLocation = 255, Moves = new[]{300} }, // Psyduck with Mud Sport
|
||||
new EncounterStatic { Species = 172, Level = 05, EggLocation = 255, Moves = new[]{266} }, // Pichu with Follow me
|
||||
new EncounterStatic { Species = 174, Level = 05, EggLocation = 255, Moves = new[]{321} }, // Igglybuff with Tickle
|
||||
new EncounterStatic { Species = 222, Level = 05, EggLocation = 255, Moves = new[]{300} }, // Corsola with Mud Sport
|
||||
new EncounterStatic { Species = 276, Level = 05, EggLocation = 255, Moves = new[]{294} }, // Taillow with Feather Dance
|
||||
new EncounterStatic { Species = 283, Level = 05, EggLocation = 255, Moves = new[]{300} }, // Surskit with Mud Sport
|
||||
new EncounterStatic { Species = 293, Level = 05, EggLocation = 255, Moves = new[]{298} }, // Whismur with Teeter Dance
|
||||
new EncounterStatic { Species = 300, Level = 05, EggLocation = 255, Moves = new[]{205} }, // Skitty with Rollout
|
||||
new EncounterStatic { Species = 311, Level = 05, EggLocation = 255, Moves = new[]{346} }, // Plusle with Water Sport
|
||||
new EncounterStatic { Species = 312, Level = 05, EggLocation = 255, Moves = new[]{300} }, // Minun with Mud Sport
|
||||
new EncounterStatic { Species = 325, Level = 05, EggLocation = 255, Moves = new[]{253} }, // Spoink with Uproar
|
||||
new EncounterStatic { Species = 327, Level = 05, EggLocation = 255, Moves = new[]{047} }, // Spinda with Sing
|
||||
new EncounterStatic { Species = 331, Level = 05, EggLocation = 255, Moves = new[]{227} }, // Cacnea with Encore
|
||||
new EncounterStatic { Species = 341, Level = 05, EggLocation = 255, Moves = new[]{346} }, // Corphish with Water Sport
|
||||
new EncounterStatic { Species = 360, Level = 05, EggLocation = 255, Moves = new[]{321} }, // Wynaut with Tickle
|
||||
new WC3 { Species = 054, IsEgg = true, Level = 05, Moves = new[]{300} }, // Psyduck with Mud Sport
|
||||
new WC3 { Species = 172, IsEgg = true, Level = 05, Moves = new[]{266} }, // Pichu with Follow me
|
||||
new WC3 { Species = 174, IsEgg = true, Level = 05, Moves = new[]{321} }, // Igglybuff with Tickle
|
||||
new WC3 { Species = 222, IsEgg = true, Level = 05, Moves = new[]{300} }, // Corsola with Mud Sport
|
||||
new WC3 { Species = 276, IsEgg = true, Level = 05, Moves = new[]{294} }, // Taillow with Feather Dance
|
||||
new WC3 { Species = 283, IsEgg = true, Level = 05, Moves = new[]{300} }, // Surskit with Mud Sport
|
||||
new WC3 { Species = 293, IsEgg = true, Level = 05, Moves = new[]{298} }, // Whismur with Teeter Dance
|
||||
new WC3 { Species = 300, IsEgg = true, Level = 05, Moves = new[]{205} }, // Skitty with Rollout
|
||||
new WC3 { Species = 311, IsEgg = true, Level = 05, Moves = new[]{346} }, // Plusle with Water Sport
|
||||
new WC3 { Species = 312, IsEgg = true, Level = 05, Moves = new[]{300} }, // Minun with Mud Sport
|
||||
new WC3 { Species = 325, IsEgg = true, Level = 05, Moves = new[]{253} }, // Spoink with Uproar
|
||||
new WC3 { Species = 327, IsEgg = true, Level = 05, Moves = new[]{047} }, // Spinda with Sing
|
||||
new WC3 { Species = 331, IsEgg = true, Level = 05, Moves = new[]{227} }, // Cacnea with Encore
|
||||
new WC3 { Species = 341, IsEgg = true, Level = 05, Moves = new[]{346} }, // Corphish with Water Sport
|
||||
new WC3 { Species = 360, IsEgg = true, Level = 05, Moves = new[]{321} }, // Wynaut with Tickle
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic[] EventEgg_FRLG = EventEgg_FRLG_Exclusive.Concat(EventEgg_G3_Common).ToArray();
|
||||
internal static readonly EncounterStatic[] EventEgg_RS = EventEgg_RS_Exclusive.Concat(EventEgg_G3_Common).ToArray();
|
||||
internal static readonly MysteryGift[] Encounter_WC3 = Encounter_Event3.Concat(Encounter_Event3_RS).Concat(Encounter_Event3_FRLG.Concat(Encounter_Event3_Common)).ToArray();
|
||||
|
||||
internal static readonly EncounterStatic[] Encounter_RSE_Roam =
|
||||
{
|
||||
|
@ -407,8 +424,8 @@ namespace PKHeX.Core
|
|||
new EncounterStatic { Species = 386, Level = 30, Location = 187, Version = GameVersion.LG, Form = 2, Fateful = true }, // Deoxys @ Birth Island
|
||||
};
|
||||
|
||||
internal static readonly EncounterStatic[] Encounter_RSE = Encounter_RSE_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_RSE)).Concat(Encounter_RSE_Regular).Concat(EventEgg_RS).ToArray();
|
||||
internal static readonly EncounterStatic[] Encounter_FRLG = Encounter_FRLG_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_FRLG)).Concat(Encounter_FRLG_Stationary).Concat(EventEgg_FRLG).ToArray();
|
||||
internal static readonly EncounterStatic[] Encounter_RSE = Encounter_RSE_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_RSE)).Concat(Encounter_RSE_Regular).ToArray();
|
||||
internal static readonly EncounterStatic[] Encounter_FRLG = Encounter_FRLG_Roam.SelectMany(e => e.Clone(Roaming_MetLocation_FRLG)).Concat(Encounter_FRLG_Stationary).ToArray();
|
||||
|
||||
private static readonly int[] TradeContest_Cool = {30, 05, 05, 05, 05, 10};
|
||||
private static readonly int[] TradeContest_Beauty = {05, 30, 05, 05, 05, 10};
|
||||
|
|
|
@ -113,7 +113,7 @@ namespace PKHeX.Core
|
|||
public virtual int Bean { get => 0; set { } }
|
||||
public virtual int BeanCount { get => 0; set { } }
|
||||
|
||||
public string getCardHeader() => (CardID > 0 ? $"Card #: {CardID:0000}" : "N/A") + $" - {CardTitle.Replace('\u3000',' ').Trim()}";
|
||||
public virtual string getCardHeader() => (CardID > 0 ? $"Card #: {CardID:0000}" : "N/A") + $" - {CardTitle.Replace('\u3000',' ').Trim()}";
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
|
|
48
PKHeX.Core/MysteryGifts/WC3.cs
Normal file
48
PKHeX.Core/MysteryGifts/WC3.cs
Normal file
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
|
||||
namespace PKHeX.Core
|
||||
{
|
||||
public class WC3 : MysteryGift
|
||||
{
|
||||
// Template Properties
|
||||
|
||||
/// <summary>
|
||||
/// Matched <see cref="PIDIV"/> Type
|
||||
/// </summary>
|
||||
public PIDType Method;
|
||||
|
||||
public string OT_Name;
|
||||
public int OT_Gender = 3;
|
||||
public int TID = -1;
|
||||
public int SID = -1;
|
||||
public int Met_Location = 255;
|
||||
public int Version;
|
||||
public int Language;
|
||||
public override int Species { get; set; }
|
||||
public override bool IsEgg { get; set; }
|
||||
public override int[] Moves { get; set; }
|
||||
public bool NotDistributed = false;
|
||||
public bool? Shiny = null; // null = allow, false = never, true = always
|
||||
|
||||
// Mystery Gift Properties
|
||||
public override int Format => 3;
|
||||
public override int Level { get; set; }
|
||||
public override int Ball { get; set; } = 4;
|
||||
|
||||
// Description
|
||||
public override string CardTitle { get; set; } = "Generation 3 Event";
|
||||
public override string getCardHeader() => CardTitle;
|
||||
|
||||
// Unused
|
||||
public override bool GiftUsed { get; set; }
|
||||
public override int CardID { get; set; }
|
||||
public override bool IsItem { get; set; }
|
||||
public override int Item { get; set; }
|
||||
public override bool IsPokémon { get; set; }
|
||||
|
||||
public override PKM convertToPKM(SaveFile SAV)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -338,4 +338,5 @@ V402 = Incorrect Stadium OT.
|
|||
V405 = Outsider {0} should have evolved into {1}.
|
||||
V406 = Non Japanese Shadow E-reader Pokémon. Unreleased encounter.
|
||||
V407 = OT from Colosseum/XD cannot be female.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V409 = Mystery Gift shiny mismatch.
|
|
@ -339,4 +339,5 @@ V402 = Incorrect Stadium OT.
|
|||
V405 = Outsider {0} should have evolved into {1}.
|
||||
V406 = Non Japanese Shadow E-reader Pokémon. Unreleased encounter.
|
||||
V407 = OT from Colosseum/XD cannot be female.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V409 = Mystery Gift shiny mismatch.
|
|
@ -338,4 +338,5 @@ V402 = 不正确竞技场初训家。
|
|||
V405 = 外来的{0}应当进化为{1}.
|
||||
V406 = 非日版黑暗E-reader宝可梦。未解禁遇见方式。
|
||||
V407 = OT from Colosseum/XD cannot be female.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V408 = Female OT from Generation 1/2 is invalid.
|
||||
V409 = Mystery Gift shiny mismatch.
|
Loading…
Add table
Reference in a new issue