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); }