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