public static bool Prefix(SimGameState __instance, EconomyScale expenditureLevel, bool proRate, int ___ProRateRefund, ref int __result) { FinancesConstantsDef finances = __instance.Constants.Finances; int baseMaintenanceCost = __instance.GetShipBaseMaintenanceCost(); for (int index = 0; index < __instance.ShipUpgrades.Count; ++index) { float pilotQurikModifier = PilotQuirkManager.Instance.getArgoUpgradeCostModifier(__instance.PilotRoster.ToList(), __instance.ShipUpgrades[index].Description.Id, true); float baseCost = (float)__instance.ShipUpgrades[index].AdditionalCost * pilotQurikModifier; baseMaintenanceCost += Mathf.CeilToInt(baseCost * __instance.Constants.CareerMode.ArgoMaintenanceMultiplier); } foreach (MechDef mechDef in __instance.ActiveMechs.Values) { baseMaintenanceCost += finances.MechCostPerQuarter; } for (int index = 0; index < __instance.PilotRoster.Count; ++index) { baseMaintenanceCost += __instance.GetMechWarriorValue(__instance.PilotRoster[index].pilotDef); } float expenditureCostModifier = __instance.GetExpenditureCostModifier(expenditureLevel); __result = Mathf.CeilToInt((float)(baseMaintenanceCost - (proRate ? ___ProRateRefund : 0)) * expenditureCostModifier); return(false); }
public static void Postfix(SimGameState __instance, EconomyScale expenditureLevel, ref int __result) { FinancesConstantsDef finances = __instance.Constants.Finances; float expenditureCostModifier = __instance.GetExpenditureCostModifier(expenditureLevel); int baseMaintenanceCost = __result; foreach (MechDef mechDef in __instance.ActiveMechs.Values) { baseMaintenanceCost -= finances.MechCostPerQuarter; if (settings.CostByTons) { baseMaintenanceCost += Mathf.RoundToInt((float)mechDef.Chassis.Tonnage * settings.cbillsPerTon * expenditureCostModifier); if (settings.TonsAdditive) { baseMaintenanceCost += Mathf.RoundToInt(Helper.CalculateCBillValue(mechDef) * settings.PercentageOfMechCost * expenditureCostModifier); } } else { baseMaintenanceCost += Mathf.RoundToInt(Helper.CalculateCBillValue(mechDef) * settings.PercentageOfMechCost * expenditureCostModifier); } } __result = baseMaintenanceCost; }