internal void ArrangeResearchAbilities(DBABILITIES abilities) { researchPointsPanel.Visible = false; unit hero = abilities.Owner as unit; if (hero == null) return; List<DBABILITY> baseAbils = abilities.GetRange(hero.BaseHeroAbilList); List<DBABILITY> availableForResearch = (researchRestriction == 0) ? abilities.GetWithAvailableResearchPoints(hero.BaseHeroAbilList) : baseAbils; bool found; for (int i = 0; i < abilitySlots.Count; i++) { found = false; Button b = abilitySlots[i] as Button; foreach (DBABILITY ability in baseAbils) if (ability.Profile.ResearchSlotPriority == i) { PlaceResearchAbility(b, ability.Profile, availableForResearch.Contains(ability)); found = true; break; } if (!found) PlaceResearchAbility(b, null, false); } }