public Dictionary <string, int> GetSlotTotals(bool refresh = false) { if (_SlotTotals == null || refresh) { var totals = new Dictionary <string, int>(); var headSlots = Head?.GetSlots(refresh) ?? new HashSet <Slots.Slot>(); var torsoSlots = Torso?.GetSlots(refresh) ?? new HashSet <Slots.Slot>(); var armSlots = Arm?.GetSlots(refresh) ?? new HashSet <Slots.Slot>(); var waistSlots = Waist?.GetSlots(refresh) ?? new HashSet <Slots.Slot>(); var legSlots = Leg?.GetSlots(refresh) ?? new HashSet <Slots.Slot>(); var weaponSlots = _WeaponSlots.ToHashSet(); var charmSlots = Charm?.GetSlots(refresh) ?? new HashSet <Slot>(); TryAddRange(totals, headSlots); TryAddRange(totals, torsoSlots); TryAddRange(totals, armSlots); TryAddRange(totals, waistSlots); TryAddRange(totals, legSlots); TryAddRange(totals, weaponSlots); TryAddRange(totals, charmSlots); _SlotTotals = totals; } return(_SlotTotals); }