Ejemplo n.º 1
0
        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));
                    }
                }
Ejemplo n.º 2
0
        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 && !PKX.IsNicknamedAnyLanguage(0, pkm.Nickname, 2))
            {
                data.AddLine(GetValid(LNickMatchLanguageEgg, CheckIdentifier.Egg));
            }
            else if (PKX.GetSpeciesNameGeneration(0, pkm.Language, Info.Generation) != pkm.Nickname)
            {
                data.AddLine(GetInvalid(LNickMatchLanguageEggFail, CheckIdentifier.Egg));
            }
            else
            {
                data.AddLine(GetValid(LNickMatchLanguageEgg, CheckIdentifier.Egg));
            }
        }
Ejemplo n.º 3
0
        private bool IsNicknameValid(PKM pkm, IEncounterable EncounterMatch, string nickname)
        {
            if (PKX.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 && !PKX.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 && !PKX.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(!PKX.IsNicknamedAnyLanguage(pkm.Species, nickname, 4));
                }
                return(PKX.GetSpeciesNameGeneration(pkm.Species, pkm.Language, 4) == nickname);
            }

            return(false);
        }