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)); } } }
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); } }