public void EquipItem(HackerMod hackerMod)
    {
        Debug.Log("Hackermod stuff");
        List <HackerModChip> equippedChips = new List <HackerModChip>();

        switch (hackerMod.GetItemType())
        {
        case Item.ItemTypes.NeuralImplant:
            equippedChips = neuralImplant.GetAttachedChips();
            if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount())
            {
                equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Wetware, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count));
            }
            neuralImplant = hackerMod;
            break;

        case Item.ItemTypes.Rig:
            equippedChips = rig.GetAttachedChips();
            if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount())
            {
                equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Software, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count));
            }
            rig = hackerMod;
            break;

        case Item.ItemTypes.Uplink:
            equippedChips = uplink.GetAttachedChips();
            if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount())
            {
                equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Chipset, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count));
            }
            uplink = hackerMod;
            break;
        }

        for (int i = 0; i < hackerMod.GetCurrentLevelSlotCount(); i++)
        {
            hackerMod.InstallChip(equippedChips[i], i);
        }
    }
    private void SetupActiveHackerSlots()
    {
        activeHackerSlotBtns = new List <LoadoutSlotBtn>();
        activeHackerSlotBtns.AddRange(hackerModSlots); // Always need these three

        HackerLoadout hackerLoadout = FindObjectOfType <PlayerData>().GetCurrentHacker().GetHackerLoadout();
        HackerMod     neuralImplant = hackerLoadout.GetNeuralImplantMod();

        switch (neuralImplant.GetCurrentLevelSlotCount())
        {
        case 1:
            wetware1SlotHolder.SetActive(true);
            wetware2SlotHolder.SetActive(false);
            wetware3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(wetware1Slots);
            break;

        case 2:
            wetware1SlotHolder.SetActive(false);
            wetware2SlotHolder.SetActive(true);
            wetware3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(wetware2Slots);
            break;

        case 3:
            wetware1SlotHolder.SetActive(false);
            wetware2SlotHolder.SetActive(false);
            wetware3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(wetware3Slots);
            break;
        }

        HackerMod rig = hackerLoadout.GetRigMod();

        switch (rig.GetCurrentLevelSlotCount())
        {
        case 1:
            software1SlotHolder.SetActive(true);
            software2SlotHolder.SetActive(false);
            software3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(software1Slots);
            break;

        case 2:
            software1SlotHolder.SetActive(false);
            software2SlotHolder.SetActive(true);
            software3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(software2Slots);
            break;

        case 3:
            software1SlotHolder.SetActive(false);
            software2SlotHolder.SetActive(false);
            software3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(software3Slots);
            break;
        }

        HackerMod uplink = hackerLoadout.GetUplinkMod();

        switch (uplink.GetCurrentLevelSlotCount())
        {
        case 1:
            chipset1SlotHolder.SetActive(true);
            chipset2SlotHolder.SetActive(false);
            chipset3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(chipset1Slots);
            break;

        case 2:
            chipset1SlotHolder.SetActive(false);
            chipset2SlotHolder.SetActive(true);
            chipset3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(chipset2Slots);
            break;

        case 3:
            chipset1SlotHolder.SetActive(false);
            chipset2SlotHolder.SetActive(false);
            chipset3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(chipset3Slots);
            break;
        }

        foreach (LoadoutSlotBtn button in activeHackerSlotBtns)
        {
            button.SetupButton();
        }
    }