Example #1
0
        public static string GetStringJobFromHex(int hexValue, int upper, int gender)
        {
            JobGroup group = JobGroup.Get(upper);

            List <Job> jobs = new List <Job>();

            if (hexValue == -2147483648)
            {
                return("Doram race");
            }

            if (hexValue < 0)
            {
                return(_getStringJobFromHexExcept(hexValue, upper, gender));
            }

            jobs.AddRange(AllJobs.Where(job => (job.Id & hexValue) == job.Id));

            Job    current = new Job(hexValue, upper, new string[] { null, null });
            string output;

            if (group.TryDetect(current, gender, out output))
            {
                return(output);
            }

            output = GenderString(gender);
            output = _generate(output, hexValue, group, gender);
            return(output.Trim(new char[] { ' ', ',' }).Trim(','));
        }
Example #2
0
        private static string _getStringJobFromHexExcept(long hexValue, int upper, int gender, int equipLevel)
        {
            JobGroup   group = JobGroup.Get(upper);
            List <Job> jobs  = new List <Job>();

            hexValue ^= -1;

            string output = "Every {0}";

            //if (hexValue < 0) {
            //	throw new Exception("Job cannot be negative.");
            //}

            var subCategory = group.GetRestrictedString(new Job(hexValue, upper, new string[] { "", null }));

            if (subCategory == null)
            {
                jobs.AddRange(AllJobs.Where(job => (job.Id & hexValue) == job.Id));
                jobs     = AllJobs.Where(p => p.Upper == 1 && jobs.All(q => p.Id != q.Id)).ToList();
                hexValue = JobAggregate(0, jobs, true);
                return(GetStringJobFromHex(hexValue, upper, gender, equipLevel));
            }

            if (subCategory == "")
            {
                subCategory = "Job";
            }

            subCategory = subCategory.Replace("Class", "Job").Trim(' ');

            jobs.AddRange(AllJobs.Where(job => (job.Id & hexValue) == job.Id));
            hexValue = JobAggregate(0, jobs, true);

            string except = "";

            except = _generate(except, hexValue, group, gender, equipLevel);

            output = output.Trim(' ');

            if (except.Length > 0)
            {
                output += " except " + except;
            }

            return(String.Format(output, subCategory).Trim(new char[] { ' ', ',' }).Trim(','));
        }
Example #3
0
        public static List <Job> GetJobsFromHex(string hexValue, int upper)
        {
            JobGroup group = JobGroup.Get(upper);
            int      jobId = FormatConverters.IntOrHexConverter(hexValue);

            //if (jobId < 0)
            //	jobId ^= -1;

            List <Job> jobs = new List <Job>();

            jobs.AddRange(_restrict(jobId, Novice.Id, group));
            jobs.AddRange(_restrict(jobId, Taekwon.Id, group));
            jobs.AddRange(_restrict(jobId, SoulLinker.Id, group));
            jobs.AddRange(_restrict(jobId, StarGladiator.Id, group));
            jobs.AddRange(_restrict(jobId, Gunslinger.Id, group));
            jobs.AddRange(_restrict(jobId, Ninja.Id, group));
            jobs.AddRange(_restrict(jobId, Swordman.Id, group));
            jobs.AddRange(_restrict(jobId, Acolyte.Id, group));
            jobs.AddRange(_restrict(jobId, Mage.Id, group));
            jobs.AddRange(_restrict(jobId, Archer.Id, group));
            jobs.AddRange(_restrict(jobId, Merchant.Id, group));
            jobs.AddRange(_restrict(jobId, Thief.Id, group));
            jobs.AddRange(_restrict(jobId, Knight.Id, group));
            jobs.AddRange(_restrict(jobId, Priest.Id, group));
            jobs.AddRange(_restrict(jobId, Wizard.Id, group));
            jobs.AddRange(_restrict(jobId, Hunter.Id, group));
            jobs.AddRange(_restrict(jobId, Blacksmith.Id, group));
            jobs.AddRange(_restrict(jobId, Assassin.Id, group));
            jobs.AddRange(_restrict(jobId, Crusader.Id, group));
            jobs.AddRange(_restrict(jobId, Monk.Id, group));
            jobs.AddRange(_restrict(jobId, Sage.Id, group));
            jobs.AddRange(_restrict(jobId, BardDancer.Id, group));
            jobs.AddRange(_restrict(jobId, Alchemist.Id, group));
            jobs.AddRange(_restrict(jobId, Rogue.Id, group));

            return(jobs.Distinct().ToList());
        }
Example #4
0
        public static Job Get(long id, JobGroup group, int equipLevel = 0)
        {
            Job job;

            if (equipLevel >= 100)
            {
                group = JobGroup.Get(group.Id & ~JobGroup.PreRenewal.Id);
            }

            if (_returnIf(id, group.Id, out job))
            {
                return(job);
            }

            if (group.IsOnlySubsetOf(JobGroup.Baby))
            {
                if (group.IsOnlySubsetOf(JobGroup.Baby3))
                {
                    if (_returnIf(id, JobGroup.Baby3.Id, out job))
                    {
                        return(job);
                    }
                }
                if (_returnIf(id, JobGroup.Baby2.Id, out job))
                {
                    return(job);
                }
            }

            if (group.Is(JobGroup.Renewal))
            {
                if (_returnIf(id, JobGroup.Normal3.Id, out job))
                {
                    return(job);
                }
            }

            if (group.Is(JobGroup.Trans3))
            {
                if (_returnIf(id, JobGroup.Trans3.Id, out job))
                {
                    return(job);
                }
            }

            if (group.Is(JobGroup.TransM))
            {
                if (_returnIf(id, JobGroup.Trans2.Id, out job))
                {
                    return(job);
                }
            }

            if (group.Is(JobGroup.Trans2))
            {
                if (_returnIf(id, JobGroup.Trans2.Id, out job))
                {
                    return(job);
                }
            }

            if (group.Is(JobGroup.Trans))
            {
                if (_returnIf(id, JobGroup.Trans2.Id, out job))
                {
                    return(job);
                }
            }

            if (group.IsBetween(JobGroup.PreRenewal, JobGroup.Renewal))
            {
                if (_returnIf(id, JobGroup.Normal3.Id, out job))
                {
                    return(job);
                }
            }

            if (_returnIf(id, JobGroup.Normal2.Id, out job))
            {
                return(job);
            }

            return(Get(id));
        }