public SpecialWeaponAttribute GetSpecialWeaponAttribute(Weapon weapon)
    {
        SpecialWeaponAttribute temp = null;

        bool found       = false;
        int  breakAmount = 10;

        int currentBreakAmount = 0;

        while (!found)
        {
            temp  = specialWeaponAttributes[Random.Range(0, specialWeaponAttributes.Length)];
            found = temp.CanAttachToWeapon(weapon);
            if (!found)
            {
                currentBreakAmount++;
            }
            if (currentBreakAmount >= breakAmount)
            {
                throw new System.Exception("Potential infinite loop stopped while selecting a special attribute");
            }
        }
        return(temp);
    }