protected virtual void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk) { pk.EncryptionConstant = Util.Rand32(); pk.Species = Species; pk.AltForm = Form; int lang = (int)Language.GetSafeLanguage(Generation, (LanguageID)sav.Language); int level = GetMinimalLevel(); var version = this.GetCompatibleVersion((GameVersion)sav.Game); SanityCheckVersion(ref version); pk.Language = lang = GetEdgeCaseLanguage(pk, lang); pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, lang, Generation); pk.CurrentLevel = level; pk.Version = (int)version; pk.Ball = Ball; pk.HeldItem = HeldItem; pk.OT_Friendship = pk.PersonalInfo.BaseFriendship; var today = DateTime.Today; SetMetData(pk, level, today); if (EggEncounter) { SetEggMetData(pk, sav, today); } SetPINGA(pk, criteria); SetEncounterMoves(pk, version, level); if (Fateful) { pk.FatefulEncounter = true; } if (pk.Format < 6) { return; } if (this is IRelearn relearn) { pk.SetRelearnMoves(relearn.Relearn); } sav.ApplyHandlingTrainerInfo(pk); pk.SetRandomEC(); if (this is IGigantamax g && pk is IGigantamax pg) { pg.CanGigantamax = g.CanGigantamax; } if (this is IDynamaxLevel d && pk is IDynamaxLevel pd) { pd.DynamaxLevel = d.DynamaxLevel; } }
public PKM ConvertToPKM(ITrainerInfo SAV, EncounterCriteria criteria) { int gen = Version.GetGeneration(); var version = Version; if (gen < 2) { gen = 2; version = GameVersion.C; } var pk = PKMConverter.GetBlank(gen, version); SAV.ApplyToPKM(pk); pk.Species = Species; pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, SAV.Language, gen); pk.CurrentLevel = Level; pk.Version = (int)version; pk.Ball = 4; pk.OT_Friendship = pk.PersonalInfo.BaseFriendship; int[] moves = SetEncounterMoves(pk, version); SetPINGA(pk, criteria); if (pk.Format <= 2 && version != GameVersion.C) { return(pk); } SetMetData(pk); if (pk.Format < 3) { return(pk); } if (pk.GenNumber >= 4) { pk.SetEggMetData(version, (GameVersion)SAV.Game); } if (pk.Format < 6) { return(pk); } if (pk.Format == 6) { pk.SetHatchMemory6(); } SetAltForm(pk, SAV); pk.SetRandomEC(); pk.RelearnMoves = moves; return(pk); }
/// <summary> /// Clears the <see cref="PKM.Nickname"/> to the default value. /// </summary> /// <param name="pk"></param> public static string ClearNickname(this PKM pk) { pk.IsNicknamed = false; string nick = SpeciesName.GetSpeciesNameGeneration(pk.Species, pk.Language, pk.Format); pk.Nickname = nick; if (pk is _K12 pk12) { pk12.SetNotNicknamed(); } return(nick); }
public PKM ConvertToPKM(ITrainerInfo sav, EncounterCriteria criteria) { int gen = Generation; var version = Version; var pk = PKMConverter.GetBlank(gen, version); sav.ApplyTo(pk); pk.Species = Species; pk.Nickname = SpeciesName.GetSpeciesNameGeneration(Species, sav.Language, gen); pk.CurrentLevel = Level; pk.Version = (int)version; pk.Ball = (int)Ball.Poke; pk.OT_Friendship = pk.PersonalInfo.BaseFriendship; int[] moves = SetEncounterMoves(pk, version); SetPINGA(pk, criteria); if (gen <= 2 && version != GameVersion.C) { return(pk); } SetMetData(pk); if (gen < 3) { return(pk); } if (gen >= 4) { pk.SetEggMetData(version, (GameVersion)sav.Game); } if (gen < 6) { return(pk); } if (gen == 6) { pk.SetHatchMemory6(); } SetAltForm(pk, sav); pk.SetRandomEC(); pk.RelearnMoves = moves; return(pk); }
private string GetSpeciesNickname(string specForm) { if (Nickname.Length == 0) { return(specForm); } var name = SpeciesName.GetSpeciesNameGeneration(Species, LanguageID, Format); if (name == Nickname) { return(specForm); } return($"{Nickname} ({specForm})"); }
private static bool IsNicknameValid(PKM pkm, IEncounterable EncounterMatch, string nickname) { int species = pkm.Species; int format = pkm.Format; int language = pkm.Language; if (SpeciesName.GetSpeciesNameGeneration(species, language, format) == nickname) { return(true); } // Can't have another language name if it hasn't evolved or wasn't a language-traded egg. // Starting in Generation 8, hatched language-traded eggs will take the Language from the trainer that hatched it. // Also in Generation 8, evolving in a foreign language game will retain the original language as the source for the newly evolved species name. // Transferring from Gen7->Gen8 realigns the Nickname string to the Language, if not nicknamed. bool canHaveAnyLanguage = pkm.Format <= 7 && (EncounterMatch.Species != species || pkm.WasTradedEgg); if (canHaveAnyLanguage && !SpeciesName.IsNicknamedAnyLanguage(species, nickname, format)) { return(true); } switch (EncounterMatch) { case WC7 wc7 when wc7.IsAshGreninjaWC7(pkm): return(true); case ILangNick loc: if (loc.Language != 0 && !loc.IsNicknamed && !SpeciesName.IsNicknamedAnyLanguage(species, nickname, format)) { return(true); // fixed language without nickname, nice job event maker! } break; } if (pkm.Format == 5 && !pkm.IsNative) // transfer { if (canHaveAnyLanguage) { return(!SpeciesName.IsNicknamedAnyLanguage(species, nickname, 4)); } return(SpeciesName.GetSpeciesNameGeneration(species, language, 4) == nickname); } return(false); }
private void VerifyNicknameEgg(LegalityAnalysis data) { var Info = data.Info; var pkm = data.pkm; var EncounterMatch = Info.EncounterMatch; switch (pkm.Format) { case 4: if (pkm.IsNicknamed) // gen4 doesn't use the nickname flag for eggs { data.AddLine(GetInvalid(LNickFlagEggNo, CheckIdentifier.Egg)); } break; case 7: if (EncounterMatch is EncounterStatic ^ !pkm.IsNicknamed) // gen7 doesn't use for ingame gifts { data.AddLine(GetInvalid(pkm.IsNicknamed ? LNickFlagEggNo : LNickFlagEggYes, CheckIdentifier.Egg)); } break; default: if (!pkm.IsNicknamed) { data.AddLine(GetInvalid(LNickFlagEggYes, CheckIdentifier.Egg)); } break; } if (pkm.Format == 2 && pkm.IsEgg && !SpeciesName.IsNicknamedAnyLanguage(0, pkm.Nickname, 2)) { data.AddLine(GetValid(LNickMatchLanguageEgg, CheckIdentifier.Egg)); } else if (SpeciesName.GetSpeciesNameGeneration(0, pkm.Language, Info.Generation) != pkm.Nickname) { data.AddLine(GetInvalid(LNickMatchLanguageEggFail, CheckIdentifier.Egg)); } else { data.AddLine(GetValid(LNickMatchLanguageEgg, CheckIdentifier.Egg)); } }
protected override byte[] GetNonNickname(int language) { var name = SpeciesName.GetSpeciesNameGeneration(Species, language, Format); var len = Nickname_Trash.Length; byte[] data = new byte[len]; SetString(name.AsSpan(), data, len, StringConverterOption.Clear50); if (!Korean) { // Decimal point<->period fix for (int i = 0; i < data.Length; i++) { if (data[i] == 0xF2) { data[i] = 0xE8; } } } return(data); }
private bool IsNicknameValid(PKM pkm, IEncounterable EncounterMatch, string nickname) { if (SpeciesName.GetSpeciesNameGeneration(pkm.Species, pkm.Language, pkm.Format) == nickname) { return(true); } // Can't have another language name if it hasn't evolved or wasn't a language-traded egg. bool evolved = EncounterMatch.Species != pkm.Species; bool canHaveAnyLanguage = evolved || pkm.WasTradedEgg; if (canHaveAnyLanguage && !SpeciesName.IsNicknamedAnyLanguage(pkm.Species, nickname, pkm.Format)) { return(true); } switch (EncounterMatch) { case WC7 wc7 when wc7.IsAshGreninjaWC7(pkm): return(true); case ILangNick loc: if (loc.Language != 0 && !loc.IsNicknamed && !SpeciesName.IsNicknamedAnyLanguage(pkm.Species, nickname, pkm.Format)) { return(true); // fixed language without nickname, nice job event maker! } break; } if (pkm.Format == 5 && !pkm.IsNative) // transfer { if (canHaveAnyLanguage) { return(!SpeciesName.IsNicknamedAnyLanguage(pkm.Species, nickname, 4)); } return(SpeciesName.GetSpeciesNameGeneration(pkm.Species, pkm.Language, 4) == nickname); } return(false); }