protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            List <AfterschoolActivity> allChoices = sCareerGetAfterSchoolActivityList.Invoke <List <AfterschoolActivity> >(new object[] { Sim });

            if (allChoices == null)
            {
                allChoices = new List <AfterschoolActivity>();

                foreach (AfterschoolActivityType type in Enum.GetValues(typeof(AfterschoolActivityType)))
                {
                    if ((Sim.Child) && (!AfterschoolActivity.IsChildActivity(type)))
                    {
                        continue;
                    }

                    if ((Sim.Teen) && (!AfterschoolActivity.IsTeenActivity(type)))
                    {
                        continue;
                    }

                    GreyedOutTooltipCallback greyedOutTooltipCallback = null;
                    if (!AfterschoolActivity.MeetsCommonAfterschoolActivityRequirements(Sim.CreatedSim, type, ref greyedOutTooltipCallback))
                    {
                        continue;
                    }

                    allChoices.Add(new AfterschoolActivity(type));
                }
            }

            List <WeightedChoice> choices = new List <WeightedChoice>();

            foreach (AfterschoolActivity activity in allChoices)
            {
                float weight = 0;
                int   count  = 0;

                foreach (SkillNames actualSkill in activity.ActivitySkillNameList)
                {
                    SkillNames skill = actualSkill;
                    switch (skill)
                    {
                    case SkillNames.BassGuitar:
                    case SkillNames.Piano:
                    case SkillNames.Drums:
                        skill = SkillNames.Guitar;
                        break;
                    }

                    if (ScoringLookup.HasScoring(skill.ToString()))
                    {
                        weight += AddScoring(skill.ToString(), Sim);
                    }
                    else
                    {
                        Common.DebugNotify("AfterschoolActivity Missing " + skill.ToString());

                        weight += AddScoring("AfterschoolActivity", Sim);
                    }

                    count++;
                }

                if (weight < 0)
                {
                    continue;
                }

                if (count == 0)
                {
                    count = 1;
                }

                choices.Add(new WeightedChoice(activity.CurrentActivityType, weight / count));
            }

            if (choices.Count == 0)
            {
                IncStat("No Choices");
                return(false);
            }

            WeightedChoice choice = RandomUtil.GetWeightedRandomObjectFromList(choices);

            AfterschoolActivity.AddNewActivity(Sim.CreatedSim, choice.mType);
            return(true);
        }