Esempio n. 1
0
    public Hotbar(long gameOptionsId, Job job)
    {
        Slots = new QuickSlot[MaxSlots];

        for (int i = 0; i < MaxSlots; i++)
        {
            Slots[i] = new();
        }

        AddDefaultSkills();

        Id = DatabaseManager.Hotbars.Insert(this, gameOptionsId);

        void AddDefaultSkills()
        {
            JobMetadata jobMetadata = JobMetadataStorage.GetJobMetadata(job);

            if (jobMetadata is null)
            {
                return;
            }

            List <int> skillIds = new();

            jobMetadata.LearnedSkills.ForEach(x => skillIds.AddRange(x.SkillIds));

            List <(int skillId, byte slotPriority)> hotbarSkills = new();

            foreach (int skillId in skillIds)
            {
                JobSkillMetadata jobSkillMetadata = jobMetadata.Skills.First(x => x.SkillId == skillId);
                if (jobSkillMetadata.QuickSlotPriority != 99 && jobSkillMetadata.SubJobCode == 0)
                {
                    hotbarSkills.Add((skillId, jobSkillMetadata.QuickSlotPriority));
                }
            }

            foreach ((int skillId, byte _) in hotbarSkills.OrderBy(x => x.slotPriority))
            {
                AddToFirstSlot(QuickSlot.From(skillId));
            }
        }
    }
Esempio n. 2
0
    public void LearnDefaultSkills(Job job, JobCode jobCode)
    {
        JobMetadata jobMetadata = JobMetadataStorage.GetJobMetadata(job);

        if (jobMetadata is null)
        {
            return;
        }

        List <int> skillIds = new();

        jobMetadata.LearnedSkills.ForEach(x => skillIds.AddRange(x.SkillIds));

        foreach (int skillId in skillIds)
        {
            JobSkillMetadata jobSkillMetadata = jobMetadata.Skills.First(x => x.SkillId == skillId);
            if (jobSkillMetadata.SubJobCode != (int)jobCode && jobSkillMetadata.SubJobCode != 0)
            {
                continue;
            }

            AddOrUpdate(skillId, 1, true);
        }
    }