From 36e3a073a4fd6b689d4e76fdf1479cf97f5a964e Mon Sep 17 00:00:00 2001 From: CptMoore <39010654+cptmoore@users.noreply.github.com> Date: Sun, 3 Mar 2024 01:39:57 +0100 Subject: [PATCH] Added EngineMultiplier, which multiplies with other EngineMultipliers, opposed to EngineFactor, which always worked off the base. --- source/Features/Engines/Engine.cs | 2 +- source/Features/OverrideTonnage/WeightFactors.cs | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/source/Features/Engines/Engine.cs b/source/Features/Engines/Engine.cs index d7cfc9aa..6fc4e6a0 100644 --- a/source/Features/Engines/Engine.cs +++ b/source/Features/Engines/Engine.cs @@ -117,7 +117,7 @@ private static int MatchingCount(IEnumerable heatSinks, HeatSi private float HeatSinkExternalFreeTonnage => HeatSinkExternalFreeCount * HeatSinkDef.Def.Tonnage; internal float GyroTonnage => PrecisionUtils.RoundUp(StandardGyroTonnage * WeightFactors.GyroFactor, WeightPrecision); - internal float EngineTonnage => PrecisionUtils.RoundUp(StandardEngineTonnage * WeightFactors.EngineFactor, WeightPrecision); + internal float EngineTonnage => PrecisionUtils.RoundUp(StandardEngineTonnage * WeightFactors.EngineFactor * WeightFactors.EngineMultiplier, WeightPrecision); internal float HeatSinkTonnage => -HeatSinkExternalFreeTonnage; internal float TotalTonnage => HeatSinkTonnage + EngineTonnage + GyroTonnage; diff --git a/source/Features/OverrideTonnage/WeightFactors.cs b/source/Features/OverrideTonnage/WeightFactors.cs index 2ad7c309..12e7ca80 100644 --- a/source/Features/OverrideTonnage/WeightFactors.cs +++ b/source/Features/OverrideTonnage/WeightFactors.cs @@ -11,13 +11,16 @@ namespace MechEngineer.Features.OverrideTonnage; [UsedBy(User.BattleValue)] public class WeightFactors : SimpleCustomComponent, IAdjustSlotElement, IAdjustTooltipEquipment, IAdjustTooltipWeapon { + // TODO rename to BaseMultiplier, all factors are additive and therefore only a factor against the base public float ArmorFactor { get; set; } = 1; public float StructureFactor { get; set; } = 1; public float EngineFactor { get; set; } = 1; - //public float EngineFactorFactor { get; set; } = 1; // TODO was problematic, 1. engine, 2. engine factor, 3. engine factor factor public float GyroFactor { get; set; } = 1; public float ChassisCapacityFactor { get; set; } = 1; + // Multipliers are multiplied with each other and the base + public float EngineMultiplier { get; set; } = 1; + // not factors public int ReservedSlots { get; set; } = 0; // TODO move to own feature... SlotsHandler or SizeHandler public float ComponentByChassisFactor { get; set; } = 0; // TODO move to something more elaborate (see CustomCapacities / HBS statistics) @@ -29,10 +32,11 @@ public void Combine(WeightFactors savings) ArmorFactor += savings.ArmorFactor - 1; StructureFactor += savings.StructureFactor - 1; EngineFactor += savings.EngineFactor - 1; - //EngineFactorFactor += savings.EngineFactorFactor - 1; GyroFactor += savings.GyroFactor - 1; ChassisCapacityFactor += savings.ChassisCapacityFactor - 1; + EngineMultiplier *= savings.EngineMultiplier; + ReservedSlots += savings.ReservedSlots; ComponentByChassisFactor += savings.ComponentByChassisFactor; }