private void ShowCritterChecklist(ColonyAchievementRequirement req)
    {
        CritterTypesWithTraits critterTypesWithTraits = req as CritterTypesWithTraits;

        if (req != null)
        {
            foreach (KeyValuePair <Tag, bool> item in critterTypesWithTraits.critterTypesToCheck)
            {
                HierarchyReferences nextRequirementWidget = GetNextRequirementWidget();
                if (item.Value)
                {
                    SetIcon(statusSuccessIcon, Color.green, nextRequirementWidget);
                }
                else
                {
                    ShowIcon(false, nextRequirementWidget);
                }
                SetDescription(string.Format(COLONY_ACHIEVEMENTS.MISC_REQUIREMENTS.STATUS.TAME_A_CRITTER, item.Key.Name.ProperName()), nextRequirementWidget);
            }
        }
    }
        public static List <string> CritterWhispererFormatter(ColonyAchievementStatus cas)
        {
            List <string> outStrings = new List <string>();

            CritterTypesWithTraits __instance = (CritterTypesWithTraits)cas.Requirements.Find(s => s is CritterTypesWithTraits);

            var priv = Traverse.Create(__instance);
            Dictionary <Tag, bool> tameDict = (Dictionary <Tag, bool>)priv.Field("critterTypesToCheck").GetValue();



            foreach (KeyValuePair <Tag, bool> keyValuePair in tameDict)
            {
                string localizeName = GetLocalizedName(keyValuePair.Key);

                string output = string.Format("Critter:{0}, Tamed: {1}", localizeName, keyValuePair.Value);

                outStrings.Add(output);
            }

            return(outStrings);
        }