private string GetSpeciesNickname(string specForm) { if (Nickname.Length == 0) { return(specForm); } bool isNicknamed = SpeciesName.IsNicknamedAnyLanguage(Species, Nickname, Format); if (!isNicknamed) { 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)); } }
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); }