private string _findAmmoType(string jobHex)
        {
            List <Job> jobs = JobList.GetApplicableJobsFromHex(jobHex);

            if (jobs.Contains(JobList.Ninja))
            {
                return("Throwing Weapon");
            }

            if (jobs.Contains(JobList.Gunslinger))
            {
                return("Bullet");
            }

            if (jobs.Contains(JobList.Archer) || jobs.Contains(JobList.Hunter) || jobs.Contains(JobList.BardDancer))
            {
                return("Arrow");
            }

            if (jobs.Contains(JobList.Alchemist))
            {
                return("Shell");
            }

            if (jobs.Contains(JobList.Assassin))
            {
                return("Throwing Dagger");
            }

            return(null);
        }
        private string _findArmorUnidentifiedResource <TKey>(ReadableTuple <int> tupleSource, ReadableTuple <TKey> item)
        {
            List <Job> jobs     = JobList.GetApplicableJobsFromHex(tupleSource.GetValue <string>(ServerItemAttributes.ApplicableJob));
            int        location = _getInt(ServerItemAttributes.Location, tupleSource);

            if (_is(location, 32))
            {
                return("°¡µå");
            }

            if (_is(location, 1, 256, 512, 1024, 2048, 4096))
            {
                if (_overridableString(item, ClientItemAttributes.UnidentifiedResourceName,
                                       "¸Ó¸®¶ì", "±Û·¡½º", "Ç︧", "ĸ", "½º¸¶ÀÏ"))
                {
                    return(null);
                }

                if (location == 513)
                {
                    return("½º¸¶ÀÏ");
                }

                if (location == 512)
                {
                    return("±Û·¡½º");
                }

                if (_is(location, 256))
                {
                    if (jobs.All(p => JobList.GetFirstClass(p) == JobList.Swordman))
                    {
                        return("Ç︧");
                    }
                }

                return("ĸ");
            }

            if (_is(location, 16))
            {
                if (_overridableString(tupleSource, ServerItemAttributes.Name, "Armor"))
                {
                    return("¿ìµç¸ÞÀÏ");
                }

                if (_overridableString(tupleSource, ServerItemAttributes.Name, "Clothe", "Robe", " Suit", "Coat"))
                {
                    return("ÄÚÆ°¼ÅÃ÷");
                }

                if (jobs.Contains(JobList.Novice) || jobs.Any(p => JobList.GetFirstClass(p) == JobList.Acolyte))
                {
                    return("ÄÚÆ°¼ÅÃ÷");
                }

                int weight = _getInt(ServerItemAttributes.Weight, tupleSource);

                if (weight >= 1000)
                {
                    return("¿ìµç¸ÞÀÏ");
                }

                return("ÄÚÆ°¼ÅÃ÷");
            }

            if (_is(location, 64))
            {
                return("»÷µé");
            }

            if (_is(location, 4))
            {
                return("Èĵå");
            }

            if (_is(location, 8, 128))
            {
                return("¸µ");
            }
            return(null);
        }