Misc tweaks for enc->pk ctor language/version

lang->language
only pass version if relevant
This commit is contained in:
Kurt 2025-04-13 11:58:33 -05:00
parent efa627f703
commit 76f2705c9c
58 changed files with 258 additions and 271 deletions

View File

@ -40,7 +40,7 @@ public string LongName
public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var rnd = Util.Rand;
var date = this.GetRandomValidDate();
var pk = new PB7
@ -57,7 +57,7 @@ public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)Ball.Poke,
MetDate = date,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
@ -67,7 +67,7 @@ public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
};
SetPINGA(pk, criteria);
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);
pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation);
pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation);
SetEncounterMoves(pk, LevelMin);
pk.AwakeningSetAllTo(2);
pk.HeightScalar = PokeSizeUtil.GetRandomScalar(rnd);

View File

@ -113,10 +113,10 @@ public bool IsBallValid(Ball ball, ushort currentSpecies, PKM pk)
public PKM ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
var pk = GetBlank();
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var rnd = Util.Rand;
{
pk.Language = lang;
pk.Language = language;
pk.PID = rnd.Rand32();
pk.EncryptionConstant = rnd.Rand32();
pk.Species = Species;
@ -139,7 +139,7 @@ public PKM ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
}
SetPINGA(pk, criteria);
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);
pk.Nickname = SpeciesName.GetSpeciesNameImportHOME(Species, lang, Generation);
pk.Nickname = SpeciesName.GetSpeciesNameImportHOME(Species, language, Generation);
SetEncounterMoves(pk, LevelMin);
if (pk is IScaledSize s2)

View File

@ -31,9 +31,10 @@ public sealed record EncounterSlot1(EncounterArea1 Parent, ushort Species, byte
public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, Version);
var isJapanese = lang == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(Version, Species);
var version = this.GetCompatibleVersion(tr.Version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var isJapanese = language == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(version, Species);
var pk = new PK1(isJapanese)
{
Species = Species,
@ -41,16 +42,16 @@ public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
CatchRate = pi.CatchRate,
DV16 = EncounterUtil.GetRandomDVs(Util.Rand, criteria.Shiny.IsShiny(), criteria.HiddenPowerType),
OriginalTrainerName = EncounterUtil.GetTrainerName(tr, lang),
OriginalTrainerName = EncounterUtil.GetTrainerName(tr, language),
TID16 = tr.TID16,
Type1 = pi.Type1,
Type2 = pi.Type2,
};
pk.SetNotNicknamed(lang);
pk.SetNotNicknamed(language);
if (criteria.Shiny.IsShiny())
pk.SetShiny();
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);
EncounterUtil.SetEncounterMoves(pk, version, LevelMin);
pk.ResetPartyStats();
return pk;

View File

@ -34,9 +34,10 @@ public sealed record EncounterStatic1(ushort Species, byte Level, GameVersion Ve
public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, Version);
var isJapanese = lang == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(Version, Species);
var version = this.GetCompatibleVersion(tr.Version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var isJapanese = language == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(version, Species);
var pk = new PK1(isJapanese)
{
Species = Species,
@ -45,16 +46,16 @@ public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
DV16 = criteria.IsSpecifiedIVsAll() ? criteria.GetCombinedDVs()
: EncounterUtil.GetRandomDVs(Util.Rand, criteria.Shiny.IsShiny(), criteria.HiddenPowerType),
OriginalTrainerName = EncounterUtil.GetTrainerName(tr, lang),
OriginalTrainerName = EncounterUtil.GetTrainerName(tr, language),
TID16 = tr.TID16,
Type1 = pi.Type1,
Type2 = pi.Type2,
};
pk.SetNotNicknamed(lang);
pk.SetNotNicknamed(language);
if (criteria.Shiny.IsShiny())
pk.SetShiny();
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);
EncounterUtil.SetEncounterMoves(pk, version, LevelMin);
pk.ResetPartyStats();
return pk;

View File

@ -115,9 +115,10 @@ public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
bool gsc = CanObtainMinGSC();
var level = gsc ? LevelMinGSC : LevelMinRBY;
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, Version);
var isJapanese = lang == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(Version, Species);
var version = this.GetCompatibleVersion(tr.Version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var isJapanese = language == (int)LanguageID.Japanese;
var pi = EncounterUtil.GetPersonal1(version, Species);
var pk = new PK1(isJapanese)
{
Species = Species,
@ -126,14 +127,14 @@ public PK1 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
DV16 = criteria.IsSpecifiedIVsAll() ? criteria.GetCombinedDVs()
: EncounterUtil.GetRandomDVs(Util.Rand, criteria.Shiny.IsShiny(), criteria.HiddenPowerType),
Nickname = Nicknames.Span[lang],
Nickname = Nicknames.Span[language],
TID16 = tr.TID16,
Type1 = pi.Type1,
Type2 = pi.Type2,
};
pk.OriginalTrainerTrash[0] = StringConverter1.TradeOTCode;
EncounterUtil.SetEncounterMoves(pk, Version, level);
EncounterUtil.SetEncounterMoves(pk, version, level);
if (EvolveOnTrade)
pk.Species++;

View File

@ -80,8 +80,8 @@ public bool IsTreeAvailable(ushort trainerID)
public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var isJapanese = lang == (int)LanguageID.Japanese;
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var isJapanese = language == (int)LanguageID.Japanese;
var pi = PersonalTable.C[Species];
var pk = new PK2(isJapanese)
{
@ -92,11 +92,11 @@ public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
DV16 = criteria.IsSpecifiedIVsAll() ? criteria.GetCombinedDVs()
: EncounterUtil.GetRandomDVs(Util.Rand, criteria.Shiny.IsShiny(), criteria.HiddenPowerType),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
TID16 = tr.TID16,
};
pk.SetNotNicknamed(lang);
pk.SetNotNicknamed(language);
if (criteria.Shiny.IsShiny())
pk.SetShiny();

View File

@ -43,7 +43,7 @@ public sealed record EncounterStatic2(ushort Species, byte Level, GameVersion Ve
public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.C[Species];
var pk = new PK2
{
@ -55,7 +55,7 @@ public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
OriginalTrainerFriendship = pi.BaseFriendship,
};
pk.SetNotNicknamed(lang);
pk.SetNotNicknamed(language);
pk.DV16 = IVs.IsSpecified ? EncounterUtil.GetDV16(IVs) :
criteria.IsSpecifiedIVsAll() ? criteria.GetCombinedDVs() :

View File

@ -56,9 +56,9 @@ public EncounterTrade2(ReadOnlySpan<string[]> names, byte index, ushort species,
public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
// Prefer to generate as Crystal, as it will include met data.
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, GameVersion.C);
var isJapanese = lang == (int)LanguageID.Japanese;
var version = this.GetCompatibleVersion(tr.Version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var isJapanese = language == (int)LanguageID.Japanese;
var pi = PersonalTable.C[Species];
var pk = new PK2(isJapanese)
{
@ -67,8 +67,8 @@ public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetLocation = Location,
Nickname = Nicknames.Span[lang],
OriginalTrainerName = TrainerNames.Span[lang],
Nickname = Nicknames.Span[language],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
};
@ -86,7 +86,7 @@ public PK2 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
pk.TID16 = tr.TID16;
}
EncounterUtil.SetEncounterMoves(pk, Version, Level);
EncounterUtil.SetEncounterMoves(pk, version, Level);
pk.ResetPartyStats();

View File

@ -38,7 +38,7 @@ public record EncounterSlot3(EncounterArea3 Parent, ushort Species, byte Form, b
public PK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = Version switch
{
GameVersion.RSE => tr.Version switch
@ -62,11 +62,11 @@ public PK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)GetRequiredBall(Ball.Poke),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -86,8 +86,8 @@ public EncounterTrade3(ReadOnlySpan<string[]> names, byte index, GameVersion gam
public PK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.E[Species];
var pk = new PK3
{
@ -100,17 +100,17 @@ public PK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)FixedBall,
OriginalTrainerFriendship = pi.BaseFriendship,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
TID16 = TID16,
SID16 = SID16,
};
// Italian LG Jynx untranslated from English name
if (Species == (int)Core.Species.Jynx && version == GameVersion.LG && lang == (int)LanguageID.Italian)
lang = 2;
pk.Nickname = Nicknames.Span[lang];
pk.OriginalTrainerName = TrainerNames.Span[lang];
if (Species == (int)Core.Species.Jynx && version == GameVersion.LG && language == (int)LanguageID.Italian)
language = 2;
pk.Nickname = Nicknames.Span[language];
pk.OriginalTrainerName = TrainerNames.Span[language];
EncounterUtil.SetEncounterMoves(pk, Version, Level);
SetPINGA(pk, criteria);

View File

@ -43,7 +43,7 @@ public sealed record EncounterShadow3XD(byte Index, ushort Gauge, ReadOnlyMemory
public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.E[Species];
var pk = new XK3
{
@ -57,11 +57,11 @@ public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)(FixedBall != Ball.None ? FixedBall : Ball.Poke),
FatefulEncounter = FatefulEncounter,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = 0,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
// Fake as Purified
RibbonNational = true,

View File

@ -30,7 +30,7 @@ public sealed record EncounterSlot3XD(EncounterArea3XD Parent, ushort Species, b
public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.E[Species];
var pk = new XK3
{
@ -43,11 +43,11 @@ public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = GameVersion.CXD,
Ball = (byte)Ball.Poke,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = 0,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -34,7 +34,7 @@ public sealed record EncounterStatic3XD(ushort Species, byte Level)
public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.E[Species];
var pk = new XK3
{
@ -48,11 +48,11 @@ public XK3 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)(FixedBall != Ball.None ? FixedBall : Ball.Poke),
FatefulEncounter = FatefulEncounter,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = 0,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -45,7 +45,7 @@ private Ball GetRequiredBallValue(Ball fallback = Ball.None)
public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.HGSS[Species];
var pk = new PK4
{
@ -61,11 +61,11 @@ public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDateNDS(),
Ball = (byte)GetRequiredBallValue(Ball.Poke),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -52,7 +52,7 @@ public sealed record EncounterStatic4(GameVersion Version)
public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.HGSS[Species];
var pk = new PK4
@ -70,11 +70,11 @@ public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)(FixedBall != Ball.None ? FixedBall : Ball.Poke),
FatefulEncounter = FatefulEncounter,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
if (IsEgg)

View File

@ -68,7 +68,7 @@ public static EncounterStatic4Pokewalker[] GetAll(ReadOnlySpan<byte> data)
public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.HGSS[Species];
var pk = new PK4
@ -83,11 +83,11 @@ public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDateNDS(),
Ball = (byte)FixedBall,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -77,8 +77,8 @@ public EncounterTrade4PID(ReadOnlySpan<string[]> names, byte index, GameVersion
public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.DP[Species];
var pk = new PK4
{
@ -94,14 +94,14 @@ public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = GetReceivedLanguage(lang, version),
Language = GetReceivedLanguage(language, version),
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = true,
Nickname = Nicknames.Span[lang],
Nickname = Nicknames.Span[language],
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,

View File

@ -85,8 +85,8 @@ public EncounterTrade4RanchGift(ushort species, byte met, byte level)
public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.DP[Species];
var pk = new PK4
{
@ -101,13 +101,13 @@ public PK4 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = GetTrainerName(lang),
OriginalTrainerName = GetTrainerName(language),
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,

View File

@ -45,7 +45,7 @@ public sealed record EncounterSlot5(EncounterArea5 Parent, ushort Species, byte
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -59,11 +59,11 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)Ball.Poke,
MetDate = EncounterDate.GetDateNDS(),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);

View File

@ -40,8 +40,8 @@ public sealed record EncounterStatic5(GameVersion Version)
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -55,13 +55,13 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
if (IsEgg)

View File

@ -32,8 +32,8 @@ public EncounterStatic5Entree(GameVersion version, ushort species, byte level, b
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -47,13 +47,13 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
if (Moves.HasMoves)

View File

@ -43,8 +43,8 @@ public sealed record EncounterStatic5N(uint PID)
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -56,11 +56,11 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)(FixedBall != Ball.None ? FixedBall : Ball.Poke),
Version = version,
Language = lang,
Language = language,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
IV_HP = IV,
IV_ATK = IV,
IV_DEF = IV,
@ -69,7 +69,7 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
IV_SPE = IV,
NSparkle = NSparkle,
OriginalTrainerName = GetOT(lang),
OriginalTrainerName = GetOT(language),
OriginalTrainerGender = 0,
ID32 = ID32,
PID = PID,

View File

@ -28,8 +28,8 @@ public sealed record EncounterStatic5Radar(ushort Species, byte Form, AbilityPer
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -43,13 +43,13 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
EncounterUtil.SetEncounterMoves(pk, version, LevelMin);

View File

@ -71,8 +71,8 @@ public EncounterTrade5B2W2(string[] names, GameVersion version)
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.B2W2[Species];
var pk = new PK5
{
@ -87,14 +87,14 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
EncounterUtil.SetEncounterMoves(pk, version, Level);

View File

@ -69,8 +69,8 @@ public EncounterTrade5BW(ReadOnlySpan<string[]> names, byte index, GameVersion v
public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.BW[Species];
var pk = new PK5
{
@ -87,14 +87,14 @@ public PK5 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
TID16 = TID16,
Version = version,
Language = lang == 1 ? 0 : lang, // Trades for JPN games have language ID of 0, not 1.
Language = language == 1 ? 0 : language, // Trades for JPN games have language ID of 0, not 1.
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
EncounterUtil.SetEncounterMoves(pk, version, Level);

View File

@ -57,8 +57,9 @@ private ReadOnlySpan<ushort> GetDexNavMoves()
public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.AO[Species];
var geo = tr.GetRegionOrigin(language);
var pk = new PK6
{
Species = Species,
@ -71,16 +72,16 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)Ball.Poke,
MetDate = EncounterDate.GetDate3DS(),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
SetPINGA(pk, criteria, pi);
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);

View File

@ -49,10 +49,11 @@ public sealed record EncounterSlot6XY(EncounterArea6XY Parent, ushort Species, b
public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = Version != GameVersion.XY ? Version : GameVersion.XY.Contains(tr.Version) ? tr.Version : GameVersion.X;
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = Version != GameVersion.XY ? Version : tr.Version is GameVersion.X or GameVersion.Y ? tr.Version : GameVersion.X;
var form = GetWildForm(Form);
var pi = PersonalTable.XY[Species, form];
var geo = tr.GetRegionOrigin(language);
var pk = new PK6
{
Species = Species,
@ -64,17 +65,17 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDate3DS(),
Version = version,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
OriginalTrainerFriendship = pi.BaseFriendship,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
if (IsRandomUnspecificForm && Form == EncounterUtil.FormVivillon)
pk.Form = Vivillon3DS.GetPattern(pk.Country, pk.Region);

View File

@ -50,10 +50,11 @@ public sealed record EncounterStatic6(GameVersion Version)
public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.AO[Species];
var rnd = Util.Rand;
var geo = tr.GetRegionOrigin(language);
var pk = new PK6
{
EncryptionConstant = rnd.Rand32(),
@ -68,13 +69,17 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
FatefulEncounter = FatefulEncounter,
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (IsEgg)
@ -86,11 +91,6 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
pk.EggMetDate = pk.MetDate;
}
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
if (Moves.HasMoves)
pk.SetMoves(Moves);
else

View File

@ -66,10 +66,11 @@ public EncounterTrade6(ReadOnlySpan<string[]> names, byte index, GameVersion ver
public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.AO[Species];
var rnd = Util.Rand;
var geo = tr.GetRegionOrigin(language);
var pk = new PK6
{
PID = rnd.Rand32(),
@ -85,9 +86,9 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerMemory = OriginalTrainerMemory,
OriginalTrainerMemoryIntensity = OriginalTrainerMemoryIntensity,
@ -96,17 +97,17 @@ public PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,
CurrentHandler = 1,
HandlingTrainerFriendship = pi.BaseFriendship,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
EncounterUtil.SetEncounterMoves(pk, version, Level);
if (pk.IsShiny)

View File

@ -45,9 +45,10 @@ public sealed record EncounterSlot7(EncounterArea7 Parent, ushort Species, byte
public PK7 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var form = GetWildForm(Form);
var pi = PersonalTable.USUM[Species, form];
var geo = tr.GetRegionOrigin(language);
var pk = new PK7
{
Species = Species,
@ -59,17 +60,17 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDate3DS(),
Ball = (byte)Ball.Poke,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
OriginalTrainerFriendship = pi.BaseFriendship,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
SetPINGA(pk, criteria, pi);
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);

View File

@ -53,13 +53,14 @@ public sealed record EncounterStatic7(GameVersion Version)
public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.USUM[Species, Form];
var geo = tr.GetRegionOrigin(language);
var pk = new PK7
{
Species = Species,
Form = GetWildForm(Form, tr),
Form = Form != FormVivillon ? Form : Vivillon3DS.GetPattern(geo.Country, geo.Region),
CurrentLevel = LevelMin,
MetLocation = Location,
MetLevel = LevelMin,
@ -69,22 +70,21 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (RibbonWishing)
pk.RibbonWishing = true;
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
if (IsEgg)
{
// Fake as hatched.
@ -103,19 +103,6 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
return pk;
}
private static byte GetWildForm(byte form, ITrainerInfo tr)
{
if (form == FormVivillon)
{
if (tr is IRegionOrigin r)
return Vivillon3DS.GetPattern(r.Country, r.Region);
if (tr.Language == 1)
return Vivillon3DS.GetPattern(1, 0);
return Vivillon3DS.GetPattern(49, 7); // USA, California
}
return form;
}
private void SetPINGA(PK7 pk, EncounterCriteria criteria, PersonalInfo7 pi)
{
var rnd = Util.Rand;

View File

@ -64,10 +64,11 @@ public EncounterTrade7(ReadOnlySpan<string[]> names, byte index, GameVersion ver
public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.USUM[Species, Form];
var rnd = Util.Rand;
var geo = tr.GetRegionOrigin(language);
var pk = new PK7
{
PID = rnd.Rand32(),
@ -84,9 +85,9 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerMemory = OriginalTrainerMemory,
OriginalTrainerMemoryIntensity = OriginalTrainerMemoryIntensity,
@ -95,17 +96,17 @@ public PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = true,
Nickname = Nicknames.Span[lang],
Nickname = Nicknames.Span[language],
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,
CurrentHandler = 1,
HandlingTrainerFriendship = pi.BaseFriendship,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (tr is IRegionOrigin r)
r.CopyRegionOrigin(pk);
else
pk.SetDefaultRegionOrigins(lang);
EncounterUtil.SetEncounterMoves(pk, version, Level);
if (pk.IsShiny)

View File

@ -29,7 +29,7 @@ public sealed record EncounterSlot7b(EncounterArea7b Parent, ushort Species, byt
public PB7 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.GG[Species];
var date = EncounterDate.GetDateSwitch();
var pk = new PB7
@ -43,11 +43,11 @@ public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = date,
Ball = (byte)Ball.Poke,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ReceivedDate = date,
ReceivedTime = EncounterDate.GetTime(),

View File

@ -34,7 +34,7 @@ public sealed record EncounterStatic7b(GameVersion Version)
public PB7 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.GG[Species, Form];
var date = EncounterDate.GetDateSwitch();
@ -50,11 +50,11 @@ public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = date,
Ball = (byte)Ball.Poke,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ReceivedDate = date,
ReceivedTime = EncounterDate.GetTime(),

View File

@ -46,8 +46,8 @@ public sealed record EncounterTrade7b(GameVersion Version) : IEncounterable, IEn
public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.GG[Species, Form];
var date = EncounterDate.GetDateSwitch();
var pk = new PB7
@ -62,13 +62,13 @@ public PB7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,

View File

@ -47,7 +47,7 @@ public bool CanEncounterViaCurry
public PK8 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var form = GetWildForm(Form);
var pi = PersonalTable.SWSH[Species, form];
var pk = new PK8
@ -61,11 +61,11 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDateSwitch(),
Ball = (byte)Ball.Poke,
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
OriginalTrainerFriendship = pi.BaseFriendship,
};
SetPINGA(pk, criteria, pi);

View File

@ -72,8 +72,8 @@ public bool IsOverworldCorrelationCorrect(PKM pk)
public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pk = new PK8
{
Species = Species,
@ -87,12 +87,12 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = PersonalTable.SWSH[Species, Form].BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
DynamaxLevel = DynamaxLevel,
CanGigantamax = CanGigantamax,

View File

@ -13,20 +13,20 @@ public sealed record EncounterStatic8N : EncounterStatic8Nest<EncounterStatic8N>
{
private readonly byte MinRank;
private readonly byte MaxRank;
private readonly byte NestID;
private readonly byte NestIndex;
private string RankString=> MinRank == MaxRank ? $"{MinRank+1}" : $"{MinRank+1}-{MaxRank+1}";
public override string Name => $"Stock Raid Den Encounter [{NestID:000}] {RankString}★";
public override string Name => $"Stock Raid Den Encounter [{NestIndex:000}] {RankString}★";
private bool IsNestLocation(byte loc) => GetNestLocations(NestID).Contains(loc);
private bool IsValidMetLocation(byte metLocation) => GetNestLocations(NestIndex).Contains(metLocation);
public override byte Level { get => LevelMin; init { } }
public override byte LevelMin => LevelCaps[MinRank * 2];
public override byte LevelMax => LevelCaps[(MaxRank * 2) + 1];
public EncounterStatic8N(byte nestID, byte minRank, byte maxRank, byte val, [ConstantExpected] GameVersion game) : base(game)
public EncounterStatic8N(byte nestIndex, byte minRank, byte maxRank, byte val, [ConstantExpected] GameVersion game) : base(game)
{
NestID = nestID;
NestIndex = nestIndex;
MinRank = minRank;
MaxRank = maxRank;
DynamaxLevel = (byte)(MinRank + 1u);
@ -42,6 +42,7 @@ public static EncounterStatic8N Read(ReadOnlySpan<byte> data, [ConstantExpected]
CanGigantamax = data[5] != 0,
};
/// <summary> Level ranges based on <see cref="MinRank"/> and <see cref="MaxRank"/>. </summary>
private static ReadOnlySpan<byte> LevelCaps =>
[
15, 20, // 0
@ -66,7 +67,7 @@ protected override bool IsMatchLevel(PKM pk)
var location = pk.MetLocation;
if (location <= byte.MaxValue) // Should always be true, no met locations > 255.
{
if (IsInaccessibleRank12Nest(NestID, (byte)location))
if (IsInaccessibleRank12Nest(NestIndex, (byte)location))
return false;
}
}
@ -109,7 +110,7 @@ protected override bool IsMatchLocation(PKM pk)
return true;
if (loc > byte.MaxValue)
return false;
return IsNestLocation((byte)loc);
return IsValidMetLocation((byte)loc);
}
public (bool Possible, bool ForceNoShiny) IsPossibleSeed<T>(T pk, ulong seed, bool checkDmax) where T : PKM

View File

@ -53,8 +53,8 @@ public abstract record EncounterStatic8Nest<T>(GameVersion Version)
public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = Info;
var pk = new PK8
{
@ -68,11 +68,11 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
DynamaxLevel = DynamaxLevel,
CanGigantamax = CanGigantamax,

View File

@ -99,8 +99,8 @@ public EncounterTrade8(ReadOnlyMemory<string> trainerNames, GameVersion game, us
public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.SWSH[Species, Form];
var rnd = Util.Rand;
var pk = new PK8
@ -118,9 +118,9 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerMemory = OriginalTrainerMemory,
OriginalTrainerMemoryIntensity = OriginalTrainerMemoryIntensity,
@ -129,7 +129,7 @@ public PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
DynamaxLevel = DynamaxLevel,
HandlingTrainerName = tr.OT,
HandlingTrainerGender = tr.Gender,

View File

@ -36,11 +36,11 @@ public sealed record EncounterSlot8a(EncounterArea8a Parent, ushort Species, byt
public PA8 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PA8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.LA[Species, Form];
var pk = new PA8
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -55,7 +55,7 @@ public PA8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);
pk.Scale = pk.HeightScalar;

View File

@ -60,11 +60,11 @@ public EncounterStatic8a(ushort species, byte form, byte level, byte heightScala
public PA8 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PA8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.LA[Species, Form];
var pk = new PA8
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -81,7 +81,7 @@ public PA8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
IsAlpha = IsAlpha,
Ball = (byte)(FixedBall == Ball.None ? Ball.LAPoke : FixedBall),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria);

View File

@ -65,7 +65,7 @@ public sealed record EncounterSlot8b(EncounterArea8b Parent, ushort Species, byt
public PB8 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var pi = PersonalTable.BDSP[Species, Form];
var pk = new PB8
{
@ -78,11 +78,11 @@ public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetDate = EncounterDate.GetDateSwitch(),
Ball = (byte)GetRequiredBall(Ball.Poke),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
OriginalTrainerFriendship = pi.BaseFriendship,
};
SetPINGA(pk, criteria, pi);

View File

@ -61,8 +61,8 @@ public bool IsStaticCorrelationCorrect(PKM pk)
public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.BDSP[Species, Form];
var pk = new PB8
{
@ -77,12 +77,12 @@ public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = tr.ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = tr.Gender,
OriginalTrainerName = tr.OT,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
if (IsEgg)

View File

@ -74,8 +74,8 @@ public EncounterTrade8b(ReadOnlySpan<string[]> names, byte index, GameVersion ga
public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.BDSP[Species, Form];
var pk = new PB8
{
@ -93,14 +93,14 @@ public PB8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = OriginalTrainerFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
HeightScalar = HeightScalar,
WeightScalar = WeightScalar,
HandlingTrainerName = tr.OT,

View File

@ -240,12 +240,12 @@ private static EncounterDist9 ReadEncounter(ReadOnlySpan<byte> data) => new()
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.SV[Species, Form];
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -256,7 +256,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)Ball.Poke,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,

View File

@ -77,12 +77,12 @@ private static EncounterFixed9 ReadEncounter(ReadOnlySpan<byte> data) => new()
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.SV[Species, Form];
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -93,7 +93,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)Ball.Poke,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,

View File

@ -254,12 +254,12 @@ private static EncounterMight9 ReadEncounter(ReadOnlySpan<byte> data) => new()
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.SV[Species, Form];
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -270,7 +270,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)Ball.Poke,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
RibbonMarkMightiest = true,
AffixedRibbon = (sbyte)RibbonIndex.MarkMightiest,

View File

@ -74,12 +74,12 @@ private static EncounterOutbreak9 ReadEncounter(ReadOnlySpan<byte> data) => new(
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.SV[Species, Form];
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -90,7 +90,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)Ball.Poke,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,

View File

@ -127,9 +127,9 @@ public static bool CanSpawnInWeather(RibbonIndex mark, byte loc)
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var form = GetWildForm(Form);
var version = Version != GameVersion.SV ? Version : GameVersion.SV.Contains(tr.Version) ? tr.Version : GameVersion.SL;
var version = Version != GameVersion.SV ? Version : tr.Version is GameVersion.SL or GameVersion.VL ? tr.Version : GameVersion.SL;
var pi = PersonalTable.SV[Species, form];
var pk = new PK9
{
@ -142,13 +142,13 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)Ball.Poke,
MetDate = EncounterDate.GetDateSwitch(),
Language = lang,
Language = language,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,
ID32 = tr.ID32,
ObedienceLevel = LevelMin,
OriginalTrainerFriendship = pi.BaseFriendship,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
};
SetPINGA(pk, criteria, pi);
EncounterUtil.SetEncounterMoves(pk, Version, LevelMin);

View File

@ -68,12 +68,12 @@ public bool IsMissingExtraMark(PKM pk, out RibbonIndex index)
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = PersonalTable.SV[Species, Form];
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -85,7 +85,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Ball = (byte)Ball.Poke,
FatefulEncounter = FatefulEncounter,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,

View File

@ -178,12 +178,12 @@ private static EncounterTera9 ReadEncounter(ReadOnlySpan<byte> data, TeraRaidMap
public PK9 ConvertToPKM(ITrainerInfo tr) => ConvertToPKM(tr, EncounterCriteria.Unrestricted);
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
var pi = GetPersonal();
var pk = new PK9
{
Language = lang,
Language = language,
Species = Species,
Form = Form,
CurrentLevel = LevelMin,
@ -194,7 +194,7 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
Version = version,
Ball = (byte)Ball.Poke,
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
ObedienceLevel = LevelMin,
OriginalTrainerName = tr.OT,
OriginalTrainerGender = tr.Gender,

View File

@ -69,8 +69,8 @@ public EncounterTrade9(ReadOnlySpan<string[]> names, byte index, GameVersion gam
public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var version = this.GetCompatibleVersion(tr.Version);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.SV[Species, Form];
var rnd = Util.Rand;
var xoro = new Xoroshiro128Plus(rnd.Rand64());
@ -89,14 +89,14 @@ public PK9 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
ID32 = ID32,
Version = version,
Language = lang,
Language = language,
OriginalTrainerGender = OTGender,
OriginalTrainerName = TrainerNames.Span[lang],
OriginalTrainerName = TrainerNames.Span[language],
OriginalTrainerFriendship = pi.BaseFriendship,
IsNicknamed = IsFixedNickname,
Nickname = IsFixedNickname ? Nicknames.Span[lang] : SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation),
Nickname = IsFixedNickname ? Nicknames.Span[language] : SpeciesName.GetSpeciesNameGeneration(Species, language, Generation),
HeightScalar = PokeSizeUtil.GetRandomScalar(rnd),
WeightScalar = Weight.GetSizeValue(Weight != SizeType9.RANDOM ? FixedValueScale : default, ref xoro),

View File

@ -26,17 +26,17 @@ public sealed record EncounterEgg(ushort Species, byte Form, byte Level, byte Ge
public PKM ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
{
var gen = Generation;
var generation = Generation;
var version = Version;
var pk = EntityBlank.GetBlank(gen, version);
var pk = EntityBlank.GetBlank(generation, version);
tr.ApplyTo(pk);
int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
int language = (int)Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
pk.Species = Species;
pk.Form = Form;
pk.Language = lang;
pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, gen);
pk.Language = language;
pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, language, generation);
pk.CurrentLevel = Level;
pk.Version = version;
@ -49,7 +49,7 @@ public PKM ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
var rnd = Util.Rand;
SetPINGA(pk, criteria);
if (gen <= 2)
if (generation <= 2)
{
var pk2 = (PK2)pk;
if (version == GameVersion.C)
@ -71,10 +71,10 @@ public PKM ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
SetMetData(pk);
if (gen >= 4)
if (generation >= 4)
pk.SetEggMetData(version, tr.Version);
if (gen < 6)
if (generation < 6)
return pk;
if (pk is PK6 pk6)
pk6.SetHatchMemory6();
@ -111,7 +111,7 @@ private void SetForm(PKM pk, ITrainerInfo sav)
pk.Form = (byte)Util.Rand.Next(7, 14);
break;
case (int)Core.Species.Scatterbug or (int)Core.Species.Spewpa or (int)Core.Species.Vivillon:
if (sav.Generation is 6 or 7 && sav is IRegionOrigin o)
if (sav.Generation is 6 or 7 && sav is IRegionOriginReadOnly o)
pk.Form = Vivillon3DS.GetPattern(o.Country, o.Region);
// else keep original value
break;

View File

@ -302,7 +302,7 @@ private static void SetDefaultManaphyEggDetails(PK4 pk4, ITrainerInfo trainer)
// Manaphy is the only PGT gift egg! (and the only gift that needs a version to be set)
var version = trainer.Version;
if (!version.IsValidSavedVersion() || !GameVersion.Gen4.ContainsFromLumped(version))
if (!version.IsGen4())
version = GameVersion.D;
pk4.Version = version;

View File

@ -300,8 +300,12 @@ public override PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
if (!IsEntity)
throw new ArgumentException(nameof(IsEntity));
var version = OriginGame != 0 ? (GameVersion)OriginGame : this.GetCompatibleVersion(tr.Version);
int language = (int)Core.Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var geo = tr.GetRegionOrigin(language);
var rnd = Util.Rand;
byte currentLevel = Level > 0 ? Level : (byte)(1 + rnd.Next(100));
var pi = PersonalTable.AO.GetFormEntry(Species, Form);
PK6 pk = new()
{
@ -312,8 +316,8 @@ public override PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
MetLevel = currentLevel,
Form = Form,
EncryptionConstant = EncryptionConstant != 0 ? EncryptionConstant : rnd.Rand32(),
Version = OriginGame != 0 ? (GameVersion)OriginGame : tr.Version,
Language = Language != 0 ? Language : tr.Language,
Version = OriginGame != 0 ? (GameVersion)OriginGame : version,
Language = Language != 0 ? Language : language,
Ball = Ball,
Move1 = Move1, Move2 = Move2, Move3 = Move3, Move4 = Move4,
RelearnMove1 = RelearnMove1, RelearnMove2 = RelearnMove2,
@ -364,6 +368,10 @@ public override PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
EV_SPE = EV_SPE,
EV_SPA = EV_SPA,
EV_SPD = EV_SPD,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (IsOriginalTrainerNameSet)
@ -374,17 +382,6 @@ public override PK6 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
pk.CurrentHandler = 1;
}
if (tr is IRegionOrigin o)
{
pk.Country = o.Country;
pk.Region = o.Region;
pk.ConsoleRegion = o.ConsoleRegion;
}
else
{
pk.SetDefaultRegionOrigins(pk.Language);
}
pk.SetMaximumPPCurrent();
pk.MetDate = Date ?? EncounterDate.GetDate3DS();

View File

@ -361,11 +361,12 @@ public override PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
if (!IsEntity)
throw new ArgumentException(nameof(IsEntity));
var version = OriginGame != 0 ? (GameVersion)OriginGame : this.GetCompatibleVersion(tr.Version);
var language = Language != 0 ? Language : (int)Core.Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
var geo = tr.GetRegionOrigin(language);
var rnd = Util.Rand;
byte currentLevel = Level > 0 ? Level : (byte)(1 + rnd.Next(100));
var metLevel = MetLevel > 0 ? MetLevel : currentLevel;
var version = OriginGame != 0 ? (GameVersion)OriginGame : this.GetCompatibleVersion(tr.Version);
var language = Language != 0 ? Language : (int)Core.Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var pi = PersonalTable.USUM.GetFormEntry(Species, Form);
PK7 pk = new()
@ -429,6 +430,10 @@ public override PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
EV_SPE = EV_SPE,
EV_SPA = EV_SPA,
EV_SPD = EV_SPD,
ConsoleRegion = geo.ConsoleRegion,
Country = geo.Country,
Region = geo.Region,
};
if (IsOriginalTrainerNameSet && !IsAshPikachu)
@ -439,17 +444,6 @@ public override PK7 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
pk.CurrentHandler = 1;
}
if (tr is IRegionOrigin o)
{
pk.Country = o.Country;
pk.Region = o.Region;
pk.ConsoleRegion = o.ConsoleRegion;
}
else
{
pk.SetDefaultRegionOrigins(language);
}
pk.SetMaximumPPCurrent();
if ((tr.Generation > Generation && OriginGame == 0) || !CanBeReceivedByVersion(pk.Version))

View File

@ -406,7 +406,7 @@ public override PK8 ConvertToPKM(ITrainerInfo tr, EncounterCriteria criteria)
var metLevel = MetLevel > 0 ? MetLevel : currentLevel;
var pi = PersonalTable.SWSH.GetFormEntry(Species, Form);
var version = OriginGame != 0 ? (GameVersion)OriginGame : this.GetCompatibleVersion(tr.Version);
var language = (int)Core.Language.GetSafeLanguage(Generation, (LanguageID)tr.Language, version);
var language = (int)Core.Language.GetSafeLanguage(Generation, (LanguageID)tr.Language);
bool hasOT = GetHasOT(language);
var pk = new PK8