public static void PerformPreLoopStudyClub(GoToSchoolInRabbitHole interaction, AfterschoolActivity activity) { try { School school = interaction.Actor.School; school.AddHomeworkToStudent(false); interaction.mHomework = school.OwnersHomework; if (interaction.mHomework != null) { school.DidHomeworkInStudyClubToday = true; interaction.mHomework.PercentComplete = 0f; interaction.mHomeworkCompletionRate = interaction.mHomework.GetCompletionRate(interaction.Actor, false, true); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(interaction.Actor, interaction.Target, e); } }
public static void PostDetentionLoop(GoToSchoolInRabbitHole ths, bool succeeded, bool detention, bool fieldTrip, AfterschoolActivity activity, bool hasAfterschoolActivity, ref InteractionInstance.InsideLoopFunction afterSchoolLoop) { try { School school = ths.Actor.School; ISchoolRabbitHole target = GetTarget(ths); bool flag5 = false; bool flag6 = false; if (!fieldTrip && !detention) { if (hasAfterschoolActivity) { flag5 = true; } else if (!ths.Actor.IsInActiveHousehold && target.HasAfterschoolActivityToday) { flag5 = RandomUtil.CoinFlip(); flag6 = true; } } if (!flag5) { school.FinishWorking(); ths.EndCommodityUpdates(succeeded); return; } CommodityChange fun = new CommodityChange(CommodityKind.Fun, 50, false, 25, OutputUpdateType.ContinuousFlow, false, false, UpdateAboveAndBelowZeroType.Either); ths.BeginCommodityUpdate(fun, 1); ths.mParticipatedInAfterschoolActivity = true; string str = flag6 ? AfterschoolActivityType.ArtClub.ToString() : activity.CurrentActivityType.ToString(); float num3 = (school.DayLength + Career.kNumHoursEarlyCanShowUpForWork) + AfterschoolActivity.kAfterschoolActivityLength; string name = null; if (Localization.HasLocalizationString("Gameplay/Careers/AfterschoolActivity:" + str)) { name = Common.LocalizeEAString(ths.Actor.IsFemale, "Gameplay/Careers/AfterschoolActivity:" + str); } else { name = Common.LocalizeEAString(ths.Actor.IsFemale, "Gameplay/Abstracts/Careers/AfterschoolActivity:" + str); } TimeOfDayStage stage2 = new TimeOfDayStage(name, school.CurLevel.FinishTime() + AfterschoolActivity.kAfterschoolActivityLength, num3); ths.Stages = new List <Stage>(new Stage[] { stage2 }); ths.ActiveStage = stage2; ths.SetAvailableTones(null); ths.Actor.RemoveExitReason(ExitReason.StageComplete); if (!flag6) { activity.StartSkillGainForActivity(ths.Actor); activity.StartAmbientSounds(ths.Actor, ths.Target); if (!sCareerPerformAfterschoolPreLoop.Invoke <bool>(new object[] { ths, activity })) { if (activity.CurrentActivityType == AfterschoolActivityType.StudyClub) { school.AddHomeworkToStudent(false); ths.mHomework = school.OwnersHomework; if (ths.mHomework != null) { school.DidHomeworkInStudyClubToday = true; ths.mHomework.PercentComplete = 0f; ths.mHomeworkCompletionRate = ths.mHomework.GetCompletionRate(ths.Actor, false, true); } } } ths.mLastLTRUpdateDateAndTime = SimClock.CurrentTime(); afterSchoolLoop = sCareerPerformAfterschoolLoop.Invoke <InteractionInstance.InsideLoopFunction>(new object[] { ths, activity }); if (afterSchoolLoop == null) { afterSchoolLoop = ths.AfterschoolActivityLoopDelegate; } } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(ths.Actor, ths.Target, e); } }