Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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);
        }