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