Esempio n. 1
0
        private void Update()
        {
            if (!isActiveAndEnabled || !PropertyHelper.IsGameLoaded)
            {
                return;
            }

            if (Input.GetKey(KeyCode.F1))
            {
                Main.OpenSettingsWindow();
            }

            if (Input.GetKey(KeyCode.F2))
            {
                Main.CloseSettingsWindow();
            }

            foreach (Furniture furniture in Settings.sRoomManager.AllFurniture)
            {
                if (PropertyHelper.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    furniture.ActorNoise       = 0f;
                    furniture.EnvironmentNoise = 0f;
                    furniture.FinalNoise       = 0f;
                    furniture.Noisiness        = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoWaterElectricity"))
                {
                    furniture.Water   = 0;
                    furniture.Wattage = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "DisableFires"))
                {
                    furniture.Parent.Temperature = 21f;
                    if (furniture.Parent.IsOnFire)
                    {
                        furniture.Parent.StopFire();
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "IncreaseBookshelfSkill") && furniture.Type == "Bookshelf")
                {
                    furniture.AuraValues[1] = 0.75f;
                }

                //TODO: else 0.25
                if (PropertyHelper.GetProperty(TrainerSettings, "NoMaintenance"))
                {
                    switch (furniture.Type)
                    {
                    case "Chair":
                        if (furniture.Comfort < 1.2f)
                        {
                            furniture.Comfort = 1.5f;
                        }
                        goto case "Ventilation";

                    case "CCTV":
                    case "Computer":
                    case "Lamp":
                    case "Server":
                    case "Product Printer":
                    case "Radiator":
                    case "Sink":
                    case "Toilet":
                    case "Ventilation":
                        if (furniture.upg != null && furniture.upg.Quality < 0.8f)
                        {
                            furniture.upg.Quality = 1f;
                            furniture.upg.Broken  = false;
                        }
                        break;
                    }
                }
            }

            for (int i = 0; i < Settings.sRoomManager.Rooms.Count; i++)
            {
                Room room = Settings.sRoomManager.Rooms[i];

                if (PropertyHelper.GetProperty(TrainerSettings, "CleanRooms"))
                {
                    room.ClearDirt();
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "TemperatureLock"))
                {
                    room.Temperature = 21.4f;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullEnvironment"))
                {
                    room.FurnEnvironment = 4;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullRoomBrightness"))
                {
                    room.IndirectLighting = 8;
                }
            }

            for (int i = 0; i < Settings.sActorManager.Actors.Count; i++)
            {
                Actor    actor    = Settings.sActorManager.Actors[i];
                Employee employee = Settings.sActorManager.Actors[i].employee;

                //if (PropertyHelper.GetProperty(TrainerSettings, "DisableSkillDecay"))
                //{
                //    for (int index = 0; index < 5; index++)
                //    {
                //        if (employee.IsRole((Employee.EmployeeRole)index))
                //        {
                //            employee.ChangeSkillDirect((Employee.EmployeeRole)index, employee.GetSkill((Employee.EmployeeRole)index));
                //            foreach (var specialization in Settings.Specializations)
                //            {
                //                employee.SetSpecialization(Employee.EmployeeRole.Designer, specialization, employee.GetSpecialization(Employee.EmployeeRole.Designer, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Artist, specialization, employee.GetSpecialization(Employee.EmployeeRole.Artist, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Programmer, specialization, employee.GetSpecialization(Employee.EmployeeRole.Programmer, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Lead, specialization, employee.GetSpecialization(Employee.EmployeeRole.Lead, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Service, specialization, employee.GetSpecialization(Employee.EmployeeRole.Service, specialization));
                //            }
                //        }
                //    }
                //}

                if (PropertyHelper.GetProperty(TrainerSettings, "NoSickness") && actor.SpecialState == Actor.HomeState.Sick)
                {
                    var sickActors = TimeOfDay.Instance.Sick;

                    if (sickActors != null)
                    {
                        if (sickActors.Contains(actor))
                        {
                            TimeOfDay.Instance.Sick.Remove(actor);
                        }
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "LockAge"))
                {
                    employee.AgeMonth = (int)employee.Age * 12;                     //20*12
                    actor.UpdateAgeLook();
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoStress"))
                {
                    employee.Stress = 1;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullEfficiency"))
                {
                    if (employee.RoleString.Contains("Lead"))
                    {
                        actor.Effectiveness = PropertyHelper.GetProperty(TrainerSettings, "UltraEfficiency") ? 20 : 4;
                    }
                    else
                    {
                        actor.Effectiveness = PropertyHelper.GetProperty(TrainerSettings, "UltraEfficiency") ? 10 : 2;
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullSatisfaction"))
                {
                    employee.JobSatisfaction = 2f;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoNeeds"))
                {
                    employee.Bladder = 1;
                    employee.Hunger  = 1;
                    employee.Energy  = 1;
                    employee.Social  = 1;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FreeEmployees"))
                {
                    employee.ChangeSalary(0f, 0f, actor, false);
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    actor.Noisiness = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoVacation"))
                {
                    actor.VacationMonth = SDateTime.NextMonth(24);
                }

                actor.WalkSpeed = PropertyHelper.GetProperty(TrainerSettings, "IncreaseWalkSpeed") ? 4f : 2f;
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoDistributionDeals"))
            {
                Settings.Distribution.TimeToCancel = -999;
                foreach (var company in Settings.simulation.Companies)
                {
                    company.Value.HasDistributionDeal = true;
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "MoreHostingDeals"))
            {
                int inGameHour = TimeOfDay.Instance.Hour;

                if ((inGameHour == 9 || inGameHour == 15) && !PropertyHelper.DealIsPushed)
                {
                    PushDeal();
                }
                else if (inGameHour != 9 && inGameHour != 15 && PropertyHelper.DealIsPushed)
                {
                    PropertyHelper.DealIsPushed = false;
                }

                if (!PropertyHelper.RewardIsGained && inGameHour == 12)
                {
                    PushReward();
                }
                else if (inGameHour != 12 && PropertyHelper.RewardIsGained)
                {
                    PropertyHelper.RewardIsGained = false;
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "DisableBurglars"))
            {
                foreach (var burglar in Settings.sActorManager.Others["Burglars"])
                {
                    burglar.Dismiss();
                    burglar.Despawned = true;
                    Settings.sActorManager.RemoveFromAwaiting(burglar);
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndDesign"))
            {
                var designDocuments = Settings.MyCompany.WorkItems
                                      .OfType <DesignDocument>()
                                      .Where(d => d.HasFinished)
                                      .ToList();

                designDocuments.ForEach(designDocument =>
                {
                    designDocument.PromoteAction();
                });
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndResearch"))
            {
                var researchWorks = Settings.MyCompany.WorkItems
                                    .OfType <ResearchWork>()
                                    .Where(rw => rw.Finished)
                                    .ToList();

                researchWorks.ForEach(researchWork =>
                {
                    GameSettings.Instance.MyCompany.AddResearch(researchWork.Spec, researchWork.Year);
                    TechLevel tech = GameSettings.Instance.simulation.AddTechLevel(researchWork.Spec, researchWork.Year);
                    if (tech != null)
                    {
                        LegalWork legalWork = new LegalWork(tech);
                        GameSettings.Instance.MyCompany.WorkItems.Add(legalWork);
                        GameSettings.Instance.ApplyDefaultTeams(legalWork, ((int)legalWork.Type).ToString() + "Team");
                    }
                    researchWork.Kill(false);
                });
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndPatent"))
            {
                var legalWorks = Settings.MyCompany.WorkItems
                                 .OfType <LegalWork>()
                                 .Where(lw => lw.CurrentStage() == "Finished" &&
                                        lw.Type == LegalWork.WorkType.Patent)
                                 .ToList();

                legalWorks.ForEach(legalWork =>
                {
                    legalWork.PatentNow();
                });
            }

            //TODO: add printspeed and printprice when it's disabled (else)
            if (PropertyHelper.GetProperty(TrainerSettings, "FreePrint"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintPrice = 0f);
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "IncreasePrintSpeed"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintSpeed = 2f);
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "NoEducationCost"))
            {
                EducationWindow.EdCost = new float[3]
                {
                    0f, 0f, 0f
                };
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "FreeStaff"))
            {
                Settings.StaffSalaryDue = 0f;
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "NoServerCost"))
            {
                Settings.ServerCost = 0f;
            }

            //LoanWindow.factor = 250000;
            GameSettings.MaxFloor  = 100;            //10 default
            AI.MaxBoxes            = PropertyHelper.GetProperty(TrainerSettings, "IncreaseCourierCapacity") ? 108 : 54;
            AI.BoxPrice            = PropertyHelper.GetProperty(TrainerSettings, "ReduceBoxPrice") ? 62.5f : 125;
            Server.ISPCost         = PropertyHelper.GetProperty(TrainerSettings, "ReduceISPCost") ? 15f : 30f;
            Settings.ExpansionCost = PropertyHelper.GetProperty(TrainerSettings, "ReduceExpansionCost") ? 175f : 350f;
        }
Esempio n. 2
0
        private void Update()
        {
            if (!isActiveAndEnabled || !Helpers.IsGameLoaded)
            {
                return;
            }

            if (Input.GetKey(KeyCode.F1))
            {
                Main.OpenSettingsWindow();
            }

            if (Input.GetKey(KeyCode.F2))
            {
                Main.CloseSettingsWindow();
            }

            if (!_specializationsLoaded && HUD.Instance.mainReputataionBars.company != null)
            {
                LoadSpecializations();
                _specializationsLoaded = true;
                ShowDiscordInvite(displayAsPopup: true);
            }

            if (_defaultEnvironmentISPCostFactor.IsZero())
            {
                _defaultEnvironmentISPCostFactor = Settings.Environment.ISPCostFactor;
            }

            foreach (Furniture furniture in Settings.sRoomManager.AllFurniture)
            {
                if (Helpers.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    furniture.ActorNoise       = 0f;
                    furniture.EnvironmentNoise = 0f;
                    furniture.FinalNoise       = 0f;
                    furniture.Noisiness        = 0;
                }

                if (Helpers.GetProperty(TrainerSettings, "NoWaterElectricity"))
                {
                    furniture.Water   = 0;
                    furniture.Wattage = 0;
                }

                if (Helpers.GetProperty(TrainerSettings, "DisableFires"))
                {
                    if (furniture.HasUpg && furniture.upg.FireStarter > 0.0f)
                    {
                        furniture.upg.FireStarter = 0.0f;
                    }
                    if (furniture.Parent.IsOnFire)
                    {
                        if (furniture.Parent.Temperature > 40f)
                        {
                            furniture.Parent.Temperature = 21f;
                        }
                        furniture.Parent.StopFire();
                    }
                }

                if (Helpers.GetProperty(TrainerSettings, "IncreaseBookshelfSkill") && furniture.Type == "Bookshelf")
                {
                    furniture.AuraValues[1] = 0.75f;
                }

                //TODO: else 0.25
                if (Helpers.GetProperty(TrainerSettings, "NoMaintenance"))
                {
                    switch (furniture.Type)
                    {
                    case "Chair":
                        if (furniture.Comfort < 1.2f)
                        {
                            furniture.Comfort = 1.5f;
                        }
                        goto case "Ventilation";

                    case "CCTV":
                    case "Computer":
                    case "Lamp":
                    case "Server":
                    case "Product Printer":
                    case "Radiator":
                    case "Sink":
                    case "Toilet":
                    case "Ventilation":
                        break;

                    default:
                        break;
                    }

                    if (furniture.HasUpg && (furniture.upg.Quality < 0.8f || furniture.upg.Broken))
                    {
                        furniture.upg.RepairMe();
                    }
                }
            }

            for (int i = 0; i < Settings.sRoomManager.Rooms.Count; i++)
            {
                Room room = Settings.sRoomManager.Rooms[i];

                if (Helpers.GetProperty(TrainerSettings, "CleanRooms"))
                {
                    room.ClearDirt();
                }

                if (Helpers.GetProperty(TrainerSettings, "TemperatureLock"))
                {
                    room.Temperature = 21f;
                }

                if (Helpers.GetProperty(TrainerSettings, "FullEnvironment"))
                {
                    room.FurnEnvironment = 8;
                }

                if (Helpers.GetProperty(TrainerSettings, "FullRoomBrightness"))
                {
                    room.IndirectLighting = 16;
                }

                if (Helpers.GetProperty(TrainerSettings, "NoSickness"))
                {
                    room.GermCount = 0f;
                }
            }

            for (int i = 0; i < Settings.sActorManager.Actors.Count; i++)
            {
                Actor    actor    = Settings.sActorManager.Actors[i];
                Employee employee = Settings.sActorManager.Actors[i].employee;

                if (Helpers.GetProperty(TrainerSettings, "NoSickness"))
                {
                    actor.GermAdd   = 0f;
                    actor.GermCount = 0f;
                    TimeOfDay.Instance.Sick.Clear();
                }

                if (Helpers.GetProperty(TrainerSettings, "LockAge"))
                {
                    employee.AgeMonth = (int)employee.Age * 12;
                    actor.UpdateAgeLook();
                }

                if (Helpers.GetProperty(TrainerSettings, "NoStress"))
                {
                    employee.Stress = 1;
                }

                actor.Effectiveness = (employee.RoleString.Contains("Lead") ? Helpers.GetProperty(Stores, "LeadEfficiencyStore") : Helpers.GetProperty(Stores, "EfficiencyStore")).MakeFloat();

                if (Helpers.GetProperty(TrainerSettings, "FullSatisfaction"))
                {
                    employee.JobSatisfaction = 2f;
                    employee.ActiveComplaint = false;
                    foreach (var thought in employee.Thoughts.Values.ToList())
                    {
                        if (thought.Mood.Negative || thought.Mood.Sue || !string.IsNullOrEmpty(thought.Mood.QuitReason))
                        {
                            employee.Thoughts.Remove(thought.Thought);
                        }
                    }

                    employee.SetMood("LoveWork", actor, 1f);
                }

                if (Helpers.GetProperty(TrainerSettings, "NoNeeds"))
                {
                    employee.Bladder       = 1f;
                    employee.Hunger        = 1f;
                    employee.Energy        = 1f;
                    employee.Social        = 1f;
                    employee.Posture       = 1f;
                    employee.Diligence     = 1f;
                    employee.HadProperFood = true;
                }

                if (Helpers.GetProperty(TrainerSettings, "FreeEmployees"))
                {
                    employee.Salary   = 0f;
                    employee.AskedFor = 0f;
                    employee.Demanded = 0f;
                    employee.ChangeSalary(0f, 0f, actor, false);
                }

                if (Helpers.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    actor.Noisiness = 0;
                }

                if (Helpers.GetProperty(TrainerSettings, "NoVacation"))
                {
                    actor.VacationMonth = SDateTime.NextMonth(24);
                }

                actor.WalkSpeed = Helpers.GetProperty(TrainerSettings, "IncreaseWalkSpeed") ? 4f : 2f;
            }

            if (Helpers.GetProperty(TrainerSettings, "AutoDistributionDeals"))
            {
                //TimeOfDay.OnDayPassed
                //TimeOfDay.OnMonthPassed
                //bool canHandleLoad = true;
                if (Settings.Distribution != null && Settings.Distribution.Open)
                {
                    //var serverGroup = Settings.GetServerGroup(Settings.Distribution.ServerName);
                    //canHandleLoad = serverGroup.Available >= 0.2f;

                    Settings.Distribution.TimeToCancel = -10f;

                    foreach (var company in Settings.simulation.GetAllCompanies())
                    {
                        if (!company.IsPlayerOwned())
                        {
                            SimulatedCompany simulatedCompany = company as SimulatedCompany;
                            if (simulatedCompany != null)
                            {
                                simulatedCompany.DistributionDealCooldown = 0;
                            }

                            company.HasDistributionDeal = true;
                            //MarketSimulation.DistributionStandardCut = company.HasDistributionDeal ? 1f : 0.3f;
                        }
                    }
                }
            }

            if (Helpers.GetProperty(TrainerSettings, "MoreHostingDeals"))
            {
                int inGameHour = TimeOfDay.Instance.Hour;

                if ((inGameHour == 9 || inGameHour == 15) && !Helpers.DealIsPushed)
                {
                    PushDeal();
                }
                else if (inGameHour != 9 && inGameHour != 15 && Helpers.DealIsPushed)
                {
                    Helpers.DealIsPushed = false;
                }

                if (!Helpers.RewardIsGained && inGameHour == 12)
                {
                    PushReward();
                }
                else if (inGameHour != 12 && Helpers.RewardIsGained)
                {
                    Helpers.RewardIsGained = false;
                }
            }

            if (Helpers.GetProperty(TrainerSettings, "DisableBurglars"))
            {
                foreach (var burglar in Settings.sActorManager.Others["Burglars"])
                {
                    burglar.Dismiss();
                    burglar.Despawned = true;
                    Settings.sActorManager.RemoveFromAwaiting(burglar);
                }
            }

            if (Helpers.GetProperty(TrainerSettings, "AutoEndDesign"))
            {
                var designDocuments = Settings.MyCompany.WorkItems
                                      .OfType <DesignDocument>()
                                      .Where(d => d.HasFinished)
                                      .ToList();

                designDocuments.ForEach(designDocument =>
                {
                    designDocument.PromoteAction();
                });
            }

            if (Helpers.GetProperty(TrainerSettings, "AutoEndResearch"))
            {
                var researchWorks = Settings.MyCompany.WorkItems
                                    .OfType <ResearchWork>()
                                    .Where(rw => rw.Finished)
                                    .ToList();

                researchWorks.ForEach(researchWork =>
                {
                    GameSettings.Instance.MyCompany.AddResearch(researchWork.Spec, researchWork.Year);
                    TechLevel tech = GameSettings.Instance.simulation.AddTechLevel(researchWork.Spec, researchWork.Year);
                    if (tech != null)
                    {
                        LegalWork legalWork = new LegalWork(tech);
                        GameSettings.Instance.MyCompany.WorkItems.Add(legalWork);
                        GameSettings.Instance.ApplyDefaultTeams(legalWork, ((int)legalWork.Type).ToString() + "Team");
                    }
                    researchWork.Kill(false);
                });
            }

            if (Helpers.GetProperty(TrainerSettings, "AutoEndPatent"))
            {
                var legalWorks = Settings.MyCompany.WorkItems
                                 .OfType <LegalWork>()
                                 .Where(lw => lw.CurrentStage() == "Finished" &&
                                        lw.Type == LegalWork.WorkType.Patent)
                                 .ToList();

                legalWorks.ForEach(legalWork =>
                {
                    legalWork.PatentNow();
                });
            }

            //TODO: add printspeed and printprice when it's disabled (else)
            if (Helpers.GetProperty(TrainerSettings, "FreePrint"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintPrice = 0f);
            }

            if (Helpers.GetProperty(TrainerSettings, "IncreasePrintSpeed"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintSpeed = 2f);
            }

            if (Helpers.GetProperty(TrainerSettings, "NoEducationCost"))
            {
                EducationWindow.EdCost = new[]
                {
                    0f, 0f, 0f
                };
            }

            if (Helpers.GetProperty(TrainerSettings, "FreeStaff"))
            {
                Settings.StaffSalaryDue = 0f;
            }

            if (Helpers.GetProperty(TrainerSettings, "NoServerCost"))
            {
                Settings.ServerCost = 0f;
            }

            if (Helpers.GetProperty(TrainerSettings, "NoWaterElectricity"))
            {
                Settings.ElectricityBill = 0f;
                Settings.SolarPanelBill  = 0f;
            }

            GameSettings.MaxFloor = 100;             //10 default
            AI.MaxBoxes           = Helpers.GetProperty(TrainerSettings, "IncreaseCourierCapacity") ? 108 : 54;
            AI.MaxBoxCarry        = Helpers.GetProperty(TrainerSettings, "IncreaseCourierCapacity") ? 18 : 9;
            AI.BoxPrice           = Helpers.GetProperty(TrainerSettings, "ReduceBoxPrice") ? 62.5f : 125;
            Settings.Environment.ISPCostFactor = Helpers.GetProperty(TrainerSettings, "ReduceISPCost") ? _defaultEnvironmentISPCostFactor / 2f : _defaultEnvironmentISPCostFactor;
            Settings.ExpansionCost             = Helpers.GetProperty(TrainerSettings, "ReduceExpansionCost") ? 175f : 350f;
        }