private LegalityCheck verifyNickname() { // If the Pokémon is not nicknamed, it should match one of the language strings. if (pk6.Nickname.Length == 0) { return(new LegalityCheck(Severity.Indeterminate, "Nickname is empty.")); } if (pk6.Species > PKX.SpeciesLang[0].Length) { return(new LegalityCheck(Severity.Indeterminate, "Species index invalid for Nickname comparison.")); } if (!Encounter.Valid) { return(new LegalityCheck(Severity.Valid, "Skipped Nickname check due to other check being invalid.")); } if (pk6.IsEgg) { if (!pk6.IsNicknamed) { return(new LegalityCheck(Severity.Invalid, "Eggs must be nicknamed.")); } return(PKX.SpeciesLang[pk6.Language][0] == pk6.Nickname ? new LegalityCheck(Severity.Valid, "Egg matches language Egg name.") : new LegalityCheck(Severity.Invalid, "Egg name does not match language Egg name.")); } string nickname = pk6.Nickname.Replace("'", "’"); if (pk6.IsNicknamed) { for (int i = 0; i < PKX.SpeciesLang.Length; i++) { string[] lang = PKX.SpeciesLang[i]; int index = Array.IndexOf(lang, nickname); if (index < 0) { continue; } return(index == pk6.Species && i != pk6.Language ? new LegalityCheck(Severity.Fishy, "Nickname matches another species name (+language).") : new LegalityCheck(Severity.Fishy, "Nickname flagged, matches species name.")); } return(new LegalityCheck(Severity.Valid, "Nickname does not match another species name.")); } // else { // Can't have another language name if it hasn't evolved. return(Legal.getHasEvolved(pk6) && PKX.SpeciesLang.Any(lang => lang[pk6.Species] == nickname) || PKX.SpeciesLang[pk6.Language][pk6.Species] == nickname ? new LegalityCheck(Severity.Valid, "Nickname matches species name.") : new LegalityCheck(Severity.Invalid, "Nickname does not match species name.")); } }
private LegalityCheck verifyNickname() { // If the Pokémon is not nicknamed, it should match one of the language strings. if (pk6.Nickname.Length == 0) { return(new LegalityCheck(Severity.Indeterminate, "Nickname is empty.")); } if (pk6.Species > PKX.SpeciesLang[0].Length) { return(new LegalityCheck(Severity.Indeterminate, "Species index invalid for Nickname comparison.")); } if (!Encounter.Valid) { return(new LegalityCheck(Severity.Valid, "Skipped Nickname check due to other check being invalid.")); } if (pk6.Language > 8) { return(new LegalityCheck(Severity.Indeterminate, "Language ID > 8.")); } if (EncounterType == typeof(EncounterTrade)) { string[] validOT = new string[0]; int index = -1; if (pk6.XY) { validOT = Legal.TradeXY[pk6.Language]; index = Array.IndexOf(Legal.TradeGift_XY, EncounterMatch); } else if (pk6.AO) { validOT = Legal.TradeAO[pk6.Language]; index = Array.IndexOf(Legal.TradeGift_AO, EncounterMatch); } if (validOT.Length == 0) { return(new LegalityCheck(Severity.Indeterminate, "Ingame Trade invalid version?")); } if (index == -1 || validOT.Length < index * 2) { return(new LegalityCheck(Severity.Indeterminate, "Ingame Trade invalid lookup?")); } string nick = validOT[index]; string OT = validOT[validOT.Length / 2 + index]; if (nick != pk6.Nickname) { return(new LegalityCheck(Severity.Fishy, "Ingame Trade nickname has been altered.")); } if (OT != pk6.OT_Name) { return(new LegalityCheck(Severity.Invalid, "Ingame Trade OT has been altered.")); } return(new LegalityCheck(Severity.Valid, "Ingame Trade OT/Nickname have not been altered.")); } if (pk6.IsEgg) { if (!pk6.IsNicknamed) { return(new LegalityCheck(Severity.Invalid, "Eggs must be nicknamed.")); } return(PKX.SpeciesLang[pk6.Language][0] == pk6.Nickname ? new LegalityCheck(Severity.Valid, "Egg matches language Egg name.") : new LegalityCheck(Severity.Invalid, "Egg name does not match language Egg name.")); } string nickname = pk6.Nickname.Replace("'", "’"); if (pk6.IsNicknamed) { for (int i = 0; i < PKX.SpeciesLang.Length; i++) { string[] lang = PKX.SpeciesLang[i]; int index = Array.IndexOf(lang, nickname); if (index < 0) { continue; } return(index == pk6.Species && i != pk6.Language ? new LegalityCheck(Severity.Fishy, "Nickname matches another species name (+language).") : new LegalityCheck(Severity.Fishy, "Nickname flagged, matches species name.")); } return(new LegalityCheck(Severity.Valid, "Nickname does not match another species name.")); } // else { // Can't have another language name if it hasn't evolved. return(Legal.getHasEvolved(pk6) && PKX.SpeciesLang.Any(lang => lang[pk6.Species] == nickname) || PKX.SpeciesLang[pk6.Language][pk6.Species] == nickname ? new LegalityCheck(Severity.Valid, "Nickname matches species name.") : new LegalityCheck(Severity.Invalid, "Nickname does not match species name.")); } }