private bool VerifyUnNicknamedEncounter(LegalityAnalysis data, PKM pkm, string nickname) { if (pkm.IsNicknamed) { for (int i = 0; i < PKX.SpeciesLang.Length; i++) { if (!PKX.SpeciesDict[i].TryGetValue(nickname, out int index)) { continue; } var msg = index == pkm.Species && i != pkm.Language ? V15 : V16; data.AddLine(Get(msg, Severity.Fishy)); return(true); } if (StringConverter.HasEastAsianScriptCharacters(nickname)) // East Asian Scripts { data.AddLine(GetInvalid(V222)); return(true); } data.AddLine(GetValid(V17)); } else if (pkm.Format < 3) { // pk1/pk2 IsNicknamed getter checks for match, logic should only reach here if matches. data.AddLine(GetValid(V18)); } else { var EncounterMatch = data.EncounterMatch; // 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 match = PKX.GetSpeciesNameGeneration(pkm.Species, pkm.Language, pkm.Format) == nickname; if (pkm.WasTradedEgg || evolved) { match |= !PKX.IsNicknamedAnyLanguage(pkm.Species, nickname, pkm.Format); } if (!match && pkm.Format == 5 && !pkm.IsNative) // transfer { if (evolved) { match |= !PKX.IsNicknamedAnyLanguage(pkm.Species, nickname, 4); } else { match |= PKX.GetSpeciesNameGeneration(pkm.Species, pkm.Language, 4) == nickname; } } if (!match) { if (EncounterMatch is WC7 wc7 && wc7.IsAshGreninjaWC7(pkm)) { data.AddLine(GetValid(V19)); } else { data.AddLine(GetInvalid(V20)); } }
private bool VerifyUnNicknamedEncounter(LegalityAnalysis data, PKM pkm, string nickname) { if (pkm.IsNicknamed) { for (int i = 0; i < SpeciesName.SpeciesLang.Count; i++) { if (!SpeciesName.SpeciesDict[i].TryGetValue(nickname, out int index)) { continue; } var msg = index == pkm.Species && i != pkm.Language ? LNickMatchNoOthersFail : LNickMatchLanguageFlag; data.AddLine(Get(msg, Severity.Fishy)); return(true); } if (StringConverter.HasEastAsianScriptCharacters(nickname) && !(pkm is PB7)) // East Asian Scripts { data.AddLine(GetInvalid(LNickInvalidChar)); return(true); } if (nickname.Length > Legal.GetMaxLengthNickname(data.Info.Generation, (LanguageID)pkm.Language)) { var severe = data.EncounterOriginal.EggEncounter && pkm.WasTradedEgg && nickname.Length <= Legal.GetMaxLengthNickname(data.Info.Generation, LanguageID.English) ? Severity.Fishy : Severity.Invalid; data.AddLine(Get(LNickLengthLong, severe)); return(true); } data.AddLine(GetValid(LNickMatchNoOthers)); } else if (pkm.Format < 3) { // pk1/pk2 IsNicknamed getter checks for match, logic should only reach here if matches. data.AddLine(GetValid(LNickMatchLanguage)); } else { var EncounterMatch = data.EncounterOriginal; bool valid = IsNicknameValid(pkm, EncounterMatch, nickname); var result = valid ? GetValid(LNickMatchLanguage) : GetInvalid(LNickMatchLanguageFail); data.AddLine(result); } return(false); }