mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-10-02 15:06:49 -05:00
Misc legality gen tweaks
bypass savefile language checks if no language set fix gen2 static gift egg that is really a wild encounter -- egg flag was set & not cleared -> no wild pkm, bad! Adds test case for this. (probably isn't a better place to clear, enforces only once per generation rather than on every yield/end of every static yield)
This commit is contained in:
@@ -92,9 +92,9 @@ private void VerifyEReaderBerry()
|
||||
var matchJP = Legal.EReaderBerriesNames_JP.Contains(Legal.EReaderBerryName);
|
||||
if (!matchJP && !matchUSA) // Does not match any released E-Reader berry
|
||||
AddLine(Severity.Invalid, V369, CheckIdentifier.Form);
|
||||
else if (matchJP && !Legal.SavegameJapanese) // E-Reader is region locked
|
||||
else if (matchJP && !Legal.SavegameJapanese && Legal.SavegameLanguage >= 0) // E-Reader is region locked
|
||||
AddLine(Severity.Invalid, V370, CheckIdentifier.Form);
|
||||
else if (matchUSA && Legal.SavegameJapanese) // E-Reader is region locked
|
||||
else if (matchUSA && Legal.SavegameJapanese && Legal.SavegameLanguage >= 0) // E-Reader is region locked
|
||||
AddLine(Severity.Invalid, V371, CheckIdentifier.Form);
|
||||
}
|
||||
private void VerifyECPID()
|
||||
@@ -197,7 +197,7 @@ private bool VerifyLanguage()
|
||||
|
||||
// Korean Gen4 games can not trade with other Gen4 languages, but can use Pal Park with any Gen3 game/language.
|
||||
if (pkm.Format == 4 && pkm.Gen4
|
||||
&& (pkm.Language == (int)LanguageID.Korean) ^ (Legal.SavegameLanguage == (int)LanguageID.Korean))
|
||||
&& (pkm.Language == (int)LanguageID.Korean) ^ (Legal.SavegameLanguage == (int)LanguageID.Korean) && Legal.SavegameLanguage >= 0)
|
||||
{
|
||||
bool kor = pkm.Language == (int) LanguageID.Korean;
|
||||
var currentpkm = kor ? V611 : V612;
|
||||
@@ -387,7 +387,7 @@ private void VerifyTrade4()
|
||||
{
|
||||
lang = DetectTradeLanguageG4SurgePikachu(pkm, lang);
|
||||
// flag korean magikarp on gen4 saves since the pkm.Language is German
|
||||
if (pkm.Format == 4 && lang == (int)LanguageID.Korean && Legal.SavegameLanguage != (int)LanguageID.Korean)
|
||||
if (pkm.Format == 4 && lang == (int)LanguageID.Korean && Legal.SavegameLanguage != (int)LanguageID.Korean && Legal.SavegameLanguage >= 0)
|
||||
AddLine(Severity.Invalid, string.Format(V610, V611, V612), CheckIdentifier.Language);
|
||||
}
|
||||
VerifyTradeTable(Encounters4.TradeHGSS, Encounters4.TradeGift_HGSS, lang);
|
||||
@@ -399,7 +399,7 @@ private void VerifyTrade4()
|
||||
{
|
||||
lang = DetectTradeLanguageG4MeisterMagikarp(pkm, lang);
|
||||
// flag korean magikarp on gen4 saves since the pkm.Language is German
|
||||
if (pkm.Format == 4 && lang == (int)LanguageID.Korean && Legal.SavegameLanguage != (int)LanguageID.Korean)
|
||||
if (pkm.Format == 4 && lang == (int)LanguageID.Korean && Legal.SavegameLanguage != (int)LanguageID.Korean && Legal.SavegameLanguage >= 0)
|
||||
AddLine(Severity.Invalid, string.Format(V610, V611, V612), CheckIdentifier.Language);
|
||||
}
|
||||
else if (!pkm.Pt && lang == 1) // DP English origin are Japanese lang
|
||||
|
||||
@@ -23,7 +23,7 @@ public static partial class Legal
|
||||
|
||||
public static bool CheckWordFilter { get; set; } = true;
|
||||
|
||||
public static int SavegameLanguage { get; set; }
|
||||
public static int SavegameLanguage { get; set; } = -1;
|
||||
/// <summary> e-Reader Berry originates from a Japanese SaveFile </summary>
|
||||
public static bool SavegameJapanese { get; set; }
|
||||
/// <summary> e-Reader Berry is Enigma or special berry </summary>
|
||||
|
||||
@@ -145,6 +145,10 @@ private static IEnumerable<GBEncounterData> GenerateRawEncounters12(PKM pkm, Gam
|
||||
}
|
||||
yield return new GBEncounterData(pkm, gen, s, s.Version);
|
||||
}
|
||||
// clear egg flag
|
||||
// necessary for static egg gifts which appear in wild, level 8 GS clefairy
|
||||
// GetValidWildEncounters immediately returns empty otherwise
|
||||
pkm.WasEgg = false;
|
||||
foreach (var e in GetValidWildEncounters(pkm, game).OfType<EncounterSlot1>())
|
||||
{
|
||||
if (!species.Contains(e.Species))
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user