public void ToolEdited(Tool tool, bool?equip = null) { bool toolbar; if (equip.HasValue) { toolbar = equip.Value; } else { toolbar = ToolSwitcherSession.IsToolbarCharacter() && ModEnabled && loaded; } for (int i = groups.Count - 1; i >= 0; i--) { ToolGroup g = groups[i]; if (g.Remove(tool)) { if (g.Count == 0) { groups.RemoveAtFast(i); } else if (toolbar) { g.EquipAny(); } } } for (int i = 0; i < groups.Count; i++) { ToolGroup g = groups[i]; if (g.ShouldContain(tool)) { g.Add(tool); if (toolbar) { tool.Equip(); } return; } } groups.Add(new ToolGroup(tool.Page, tool.Slot, tool)); if (toolbar) { tool.Equip(); } }