public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { DifficultyManager d = Singleton <DifficultyManager> .instance; if (levelUp.landValueProgress != 0) { Level targetLevel; int target2 = d.CommercialTargetLandValue.GetValue(Level.Level2); int target3 = d.CommercialTargetLandValue.GetValue(Level.Level3); if (landValue < target2) { targetLevel = Level.Level1; levelUp.landValueProgress = 1 + (int)(15f * landValue / target2 + 0.49f); } else if (landValue < target3) { targetLevel = Level.Level2; levelUp.landValueProgress = 1 + (int)(15f * (landValue - target2) / (target3 - target2) + 0.49f); } else { targetLevel = Level.Level5; levelUp.landValueProgress = 1; } if (targetLevel < currentLevel) { levelUp.landValueProgress = 1; } else if (targetLevel > currentLevel) { levelUp.landValueProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.landValueTooLow = false; if (currentLevel == Level.Level2) { if (landValue < d.CommercialTargetLandValue.GetTooLowValue(Level.Level2)) { levelUp.landValueTooLow = true; } } else if (currentLevel == Level.Level3) { if (landValue < d.CommercialTargetLandValue.GetTooLowValue(Level.Level3)) { levelUp.landValueTooLow = true; } } return(levelUp); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (!Singleton <GameSpeedManager> .instance.values.IsHardMode) { return(levelUp); } if (levelUp.landValueProgress != 0) { Level targetLevel; if (landValue < 30) { targetLevel = Level.Level1; levelUp.landValueProgress = 1 + (landValue * 15 + 15) / 30; } else if (landValue < 60) { targetLevel = Level.Level2; levelUp.landValueProgress = 1 + ((landValue - 30) * 15 + 15) / 30; } else { targetLevel = Level.Level5; levelUp.landValueProgress = 1; } if (targetLevel < currentLevel) { levelUp.landValueProgress = 1; } else if (targetLevel > currentLevel) { levelUp.landValueProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.landValueTooLow = false; if (currentLevel == Level.Level2) { if (landValue < 15) { levelUp.landValueTooLow = true; } } else if (currentLevel == Level.Level3) { if (landValue < 40) { levelUp.landValueTooLow = true; } } return(levelUp); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (Hydrology.instance.isRaining == true && Hydrology.instance._preRainfallLandvalues[buildingID] > 0 && landValue > Hydrology.instance._preRainfallLandvalues[buildingID] && ModSettings.FreezeLandvalues == true) { //Debug.Log("[RF].LUEB Commercial Building " + buildingID.ToString() + " increased in Landvalue during a storm from " + Hydrology.instance._preRainfallLandvalues[buildingID].ToString() + " to " + landValue.ToString()); landValue = Hydrology.instance._preRainfallLandvalues[buildingID]; } return(base.OnCalculateCommercialLevelUp(levelUp, averageWealth, landValue, buildingID, service, subService, currentLevel)); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (HistoricalStatusDataManager.Instance.IsHistorical(buildingID)) { levelUp.targetLevel = currentLevel; } return(levelUp); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { DifficultyManager d = Singleton<DifficultyManager>.instance; if (levelUp.landValueProgress != 0) { Level targetLevel; int target2 = d.CommercialTargetLandValue.GetValue(Level.Level2); int target3 = d.CommercialTargetLandValue.GetValue(Level.Level3); if (landValue < target2) { targetLevel = Level.Level1; levelUp.landValueProgress = 1 + (int)(15f * landValue / target2 + 0.49f); } else if (landValue < target3) { targetLevel = Level.Level2; levelUp.landValueProgress = 1 + (int)(15f * (landValue - target2) / (target3 - target2) + 0.49f); } else { targetLevel = Level.Level5; levelUp.landValueProgress = 1; } if (targetLevel < currentLevel) { levelUp.landValueProgress = 1; } else if (targetLevel > currentLevel) { levelUp.landValueProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.landValueTooLow = false; if (currentLevel == Level.Level2) { if (landValue < d.CommercialTargetLandValue.GetTooLowValue(Level.Level2)) levelUp.landValueTooLow = true; } else if (currentLevel == Level.Level3) { if (landValue < d.CommercialTargetLandValue.GetTooLowValue(Level.Level3)) levelUp.landValueTooLow = true; } return levelUp; }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (levelUp.landValueProgress != 0) { Level targetLevel; if (landValue < 30) { targetLevel = Level.Level1; levelUp.landValueProgress = 1 + (landValue * 15 + 15) / 30; } else if (landValue < 60) { targetLevel = Level.Level2; levelUp.landValueProgress = 1 + ((landValue - 30) * 15 + 15) / 30; } else { targetLevel = Level.Level5; levelUp.landValueProgress = 1; } if (targetLevel < currentLevel) { levelUp.landValueProgress = 1; } else if (targetLevel > currentLevel) { levelUp.landValueProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } } levelUp.landValueTooLow = false; if (currentLevel == Level.Level2) { if (landValue < 15) levelUp.landValueTooLow = true; } else if (currentLevel == Level.Level3) { if (landValue < 40) levelUp.landValueTooLow = true; } return levelUp; }
/// <summary> /// Commercial level up control - game extension method. /// Used to override 'low land value' complaint as appropriate. /// </summary> /// <param name="levelUp">Original upgrade struct (target level and progress)</param> /// <param name="averageWealth">Building average wealth (ignored)</param> /// <param name="landValue">Land value for the building (ignored)</param> /// <param name="buildingID">Building instance ID</param> /// <param name="service">Building service (ignored)</param> /// <param name="subService">Building subservice (ignored)</param> /// <param name="currentLevel">Existing building level (ignored)</param> /// <returns>Revised target level (level and progress)</returns> /// <returns></returns> public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { // Check if this building is RICO or not. bool isRICO = IsRICOBuilding(buildingID); // Check if the relevant 'ignore low land value complaint' setting is set. if ((ModSettings.noValueOther && !isRICO) || (ModSettings.noValueRico && isRICO)) { // It is - force land value complaint off. levelUp.landValueTooLow = false; } return(levelUp); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { return levelUp; }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { levelUp.targetLevel = this.controlLevelUp(levelUp.targetLevel, currentLevel, buildingID); return(levelUp); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { levelUp.targetLevel = Level.Level1; return(base.OnCalculateCommercialLevelUp(levelUp, averageWealth, landValue, buildingID, service, subService, currentLevel)); }
public override CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { if (SaveData2.saveData.DifficultyLevel == DifficultyLevel.Vanilla) { return levelUp; } var instance = Singleton<BuildingManager>.instance.m_buildings.m_buffer[(int)buildingID]; var zone = instance.Info.m_class.GetZone(); float wealth = 0; float happy = 0; float commute = 0; var levelUpHelper = LevelUpHelper3.instance; var serviceScore = levelUpHelper.GetProperServiceScore(buildingID); levelUpHelper.GetEducationHappyScore(buildingID, out wealth, out happy, out commute); Level targetLevel = Level.Level3; for (var i = 0; i < 3; i += 1) { if (serviceScore < levelUpHelper.GetServiceThreshhold((ItemClass.Level)i, zone) || wealth < levelUpHelper.GetWealthThreshhold((ItemClass.Level)i, zone)) { targetLevel = (Level)i; levelUp.landValueProgress = 1 + CalcProgress(serviceScore, levelUpHelper.GetServiceThreshhold((ItemClass.Level)i, ItemClass.Zone.Office), levelUpHelper.GetServiceThreshhold((ItemClass.Level)(i - 1), ItemClass.Zone.Office), 15); levelUp.wealthProgress = 1 + CalcProgress((int)wealth, levelUpHelper.GetWealthThreshhold((ItemClass.Level)i, zone), levelUpHelper.GetWealthThreshhold((ItemClass.Level)(i - 1), zone), 15); break; } } levelUp.landValueTooLow = (serviceScore < levelUpHelper.GetServiceThreshhold((ItemClass.Level)(Math.Max(-1, (int)currentLevel - 2)), zone)); if (targetLevel < currentLevel) { levelUp.landValueProgress = 1; levelUp.wealthProgress = 1; } else if (targetLevel > currentLevel) { levelUp.landValueProgress = 15; levelUp.wealthProgress = 15; } if (targetLevel < levelUp.targetLevel) { levelUp.targetLevel = targetLevel; } return levelUp; }
// Thread: Simulation public CommercialLevelUp OnCalculateCommercialLevelUp(CommercialLevelUp levelUp, int averageWealth, int landValue, ushort buildingID, Service service, SubService subService, Level currentLevel) { return(levelUp); }