protected override bool Allow(SimDescription sim) { Occupation job = Occupation; if (!ManagerCareer.ValidCareer(job)) { IncStat("Invalid"); return(false); } else if (sim.Service != null) { IncStat("On Call"); return(false); } else if (sim.Genealogy == null) { IncStat("No Gene"); return(false); } else if (SimTypes.IsDead(sim)) { IncStat("Dead"); return(false); } return(base.Allow(sim)); }
protected override bool Allow(SimDescription sim) { if (!base.Allow(sim)) { return(false); } if (!(sim.Occupation is Career)) { IncStat("Not Career"); return(false); } else if (!ManagerCareer.ValidCareer(sim.Occupation)) { IncStat("No Career"); return(false); } else if (sim.Occupation is Retired) { IncStat("Retired"); return(false); } return(base.Allow(sim)); }
protected override bool Allow(SimDescription sim) { if (!ManagerCareer.ValidCareer(sim.Occupation)) { IncStat("No Job"); return(false); } else if (sim.Household == null) { IncStat("Homeless"); return(false); } else if (SimTypes.IsSpecial(sim)) { IncStat("Special"); return(false); } else if (!Careers.Allow(this, sim)) { IncStat("Careers Denied"); return(false); } return(base.Allow(sim)); }
protected override bool PrivateUpdate(ScenarioFrame frame) { Sim sim = Sim.CreatedSim; if (sim == null) { Sims.Instantiate(Sim, null, false); sim = Sim.CreatedSim; } if (sim == null) { IncStat("Hibernating"); return(false); } Career job = Occupation as Career; Careers.VerifyTone(job); if (!ManagerCareer.ValidCareer(job)) { IncStat("Career Invalidated"); return(false); } InteractionInstance instance = GetWorkInteraction(job); if (instance == null) { IncStat("No Interaction"); return(false); } else if (!Test(sim, instance.InteractionDefinition)) { return(false); } else { if (sim.InteractionQueue.Add(instance)) { if (GetValue <AllowGoHomePushOption, bool>(Sim)) { Manager.AddAlarm(new GoHomePushScenario(Sim)); } } else { IncStat("Failure"); } mReport = PostSlackerWarning(); return(true); } }
protected override bool Allow(SimDescription sim) { if (!Careers.Allow(this, sim)) { IncStat("User Denied"); return(false); } else if (!ManagerCareer.ValidCareer(sim.Occupation)) { IncStat("No Career"); return(false); } return(base.Allow(sim)); }
protected override bool Allow(SimDescription sim) { if (Event.Career == null) { IncStat("No Career"); return(false); } else if (!ManagerCareer.ValidCareer(Event.Career)) { IncStat("No Job"); return(false); } return(base.Allow(sim)); }
protected bool UpdatePerformance(Career career) { if (!ManagerCareer.ValidCareer(career)) { return(false); } if (SimTypes.IsSelectable(career.OwnerDescription)) { return(false); } Sim createdSim = career.OwnerDescription.CreatedSim; if ((createdSim != null) && (!career.SpecialWorkDay) && (!(createdSim.CurrentInteraction is Pregnancy.GoToHospital))) { if (HandleForeigners(career as School)) { IncStat("Foreign Limited"); return(false); } float perfPerHour = 0f; DateAndTime time = SimClock.CurrentTime(); if (career.IsAtWork && (SimClock.IsTimeBetweenTimes(time.Hour, career.CurLevel.StartTime, career.CurLevel.FinishTime() + career.OvertimeHours) || career.IsSpecialWorkTime)) { if (!career.ShouldBeAtWork() || career.IsSpecialWorkTime) { perfPerHour = Math.Max(perfPerHour, career.OvertimePerfPerHour); } else { float lastMetricAverageCalculated = 0f; foreach (PerfMetric metric in career.CurLevel.Metrics) { lastMetricAverageCalculated += metric.CalcMetric(career); } lastMetricAverageCalculated /= career.CurLevel.Metrics.Count; career.LastMetricAverageCalculated = lastMetricAverageCalculated; AddScoring("Metric Calc 100s", (int)(lastMetricAverageCalculated * 100)); if (lastMetricAverageCalculated > 0f) { perfPerHour = (lastMetricAverageCalculated / 3f) * career.MaxPerfFlowPerHour; } else { perfPerHour = (lastMetricAverageCalculated / -3f) * career.MinPerfFlowPerHour; } } perfPerHour += career.PerformanceBonusPerHour; perfPerHour += career.OwnerDescription.TraitManager.HasElement(TraitNames.MultiTasker) ? TraitTuning.MultiTaskerWorkPerformanceAdd : 0f; perfPerHour += career.mBonusPerformanceFromDegreePerHour; if ((createdSim != null) && (createdSim.BuffManager != null)) { if (createdSim.BuffManager.HasElement(BuffNames.MeditativeFocus)) { perfPerHour += MartialArts.kMeditativeFocusCareerPerformanceModifier; } if (createdSim.BuffManager.HasElement(BuffNames.Jobtastic)) { perfPerHour = career.SharedData.MaxPerfFlowPerHourMaxLevel; } if (createdSim.TraitManager.HasElement(TraitNames.EfficientChip)) { perfPerHour = career.MaxPerfFlowPerHour; } } } else if (career.IsMissingWork()) { InteractionInstance currentInteraction = createdSim.CurrentInteraction; if (currentInteraction != null) { bool flag; if (career is School) { flag = !(currentInteraction is GoToSchoolInRabbitHole); } else { flag = !(currentInteraction is WorkInRabbitHole); if (flag) { EventTracker.SendEvent(EventTypeId.kNotAtWork, createdSim); } } if (flag) { perfPerHour = career.MissWorkPerfPerHour * (career.OwnerDescription.TraitManager.HasElement(TraitNames.Vacationer) ? TraitTuning.VacationerMissingWorkPerformanceMultiplier : 1f); } } } else if ((career.PerformanceBonusPerHour != 0f) && !career.IsAllowedToWork()) { career.PerformanceBonusPerHour = 0f; } // Interval are 10 sim-minutes long perfPerHour *= GetValue <Option, int>(); perfPerHour /= 6f; career.AddPerformance(perfPerHour); AddScoring("Perf Change 100s", (int)(perfPerHour * 100)); return(true); } return(false); }