public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
        {
            tooltipData.dataList.Clear();

            {
                var value = mechDef.MechDefAssignedArmor;
                value *= ArmorMultiplier(mechDef);
                value *= DamageReductionMultiplierAll(mechDef);
                tooltipData.dataList.Add("<u>" + Strings.T("Armor") + "</u>", $"{value}");
            }

            {
                var value = DamageReductionMultiplierAll(mechDef);
                tooltipData.dataList.Add("<u>" + Strings.T("Damage Reduction") + "</u>", Strings.T("{0} %", value));

/*
 * <float>("DamageReductionMultiplierAll", 1f);
 * <float>("DamageReductionMultiplierMelee", 1f);
 * <float>("DamageReductionMultiplierEnergy", 1f);
 * <float>("DamageReductionMultiplierBallistic", 1f);
 * <float>("DamageReductionMultiplierMissile", 1f);
 * <float>("DamageReductionMultiplierAntipersonnel", 1f);
 */
            }

            {
                // stats.MaxStructureFactor
                var value = mechDef.MechDefMaxStructure;
                value *= StructureMultiplier(mechDef);
                tooltipData.dataList.Add(Strings.T("Structure"), $"{value}");
            }

            {
                // used by vanilla .. ReceivedInstabilityMultiplier
                var stability         = MaxStability(mechDef);
                var unsteadyThreshold = UnsteadyThreshold(mechDef);
                tooltipData.dataList.Add(Strings.T("Stability / Unsteady"), $"{stability} / {unsteadyThreshold}");
            }

            {
                var value = MaxEvasivePips(mechDef);
                tooltipData.dataList.Add(Strings.T("Max Evasive Pips"), $"{value}");
            }

            {
                var value = ToHitThisActor(mechDef);
                value += GetTargetSizeModifier(mechDef.Chassis.weightClass);
                tooltipData.dataList.Add(Strings.T("Defense"), $"{value}");

/*
 * <float>("ToHitThisActor", 0f);
 * <float>("ToHitThisActorBallistic", 0f);
 * <float>("ToHitThisActorEnergy", 0f);
 * <float>("ToHitThisActorMissile", 0f);
 * <float>("ToHitThisActorSmall", 0f);
 * <float>("ToHitThisActorMelee", 0f);
 * <float>("ToHitThisActorDirectFire", 0f);
 */
            }
        }
        public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
        {
            tooltipData.dataList.Clear();

            {
                var melee          = MechDefFirepowerStatistics.GetMelee(mechDef);
                var meleeFirepower = GetFirepower(mechDef, true);

                tooltipData.dataList.Add("<u>" + Strings.T("Melee Damage") + "</u>", $"{melee.Damage + meleeFirepower.TotalDamage}");
                //tooltipData.dataList.Add(Strings.T("Melee Total Damage"), $"{melee.Damage + meleeFirepower.TotalDamage}");
                tooltipData.dataList.Add(Strings.T("Melee Stability Dmg"), $"{melee.Instability + meleeFirepower.TotalInstability}");
                tooltipData.dataList.Add(Strings.T("M.Heat/Struct.Dmg"), $"{melee.HeatDamage + meleeFirepower.TotalHeatDamage}/{melee.StructureDamage + meleeFirepower.TotalStructureDamage}");
                //tooltipData.dataList.Add(Strings.T("Melee Accuracy"), $"{melee.Accuracy}");
                //tooltipData.dataList.Add(Strings.T("Melee Sup. Accuracy"), $"{meleeFirepower.AverageAccuracy}");
            }

            {
                var firepower = GetFirepower(mechDef, false);
                tooltipData.dataList.Add("<u>" + Strings.T("Ranged Damage") + "</u>", $"{firepower.TotalDamage}");
                tooltipData.dataList.Add(Strings.T("Ranged Stability Dmg"), $"{firepower.TotalInstability}");
                //tooltipData.dataList.Add(Strings.T("Ranged Average Accuracy"), $" {firepower.AverageAccuracy}");
                tooltipData.dataList.Add(Strings.T("R.Heat/Struct.Dmg"), $"{firepower.TotalHeatDamage}/{firepower.TotalStructureDamage}");
            }

            //{
            //	var dfa = MechDefFirepowerStatistics.GetDFA(mechDef);
            //	tooltipData.dataList.Add(Strings.T("DFA D/I/A/S"), $"{dfa.Damage} / {dfa.Instability} / {dfa.Accuracy} / {dfa.StructureDamage}");
            //}
        }
Exemple #3
0
        public static void Postfix(StatTooltipData __instance, MechDef def)
        {
            try
            {
                var movement = def.GetEngineMovement();
                if (movement == null)
                {
                    return;
                }

                var tooltipData = __instance;

                tooltipData.dataList.Remove("Max Move");
                tooltipData.dataList.Remove("Max Sprint");

                var combat   = CombatGameConstants.GetInstance(UnityGameInstance.BattleTechGame);
                var hexWidth = combat.MoveConstants.ExperimentalGridDistance;
                __instance.dataList.Add("Max Move", $"{movement.WalkSpeed}m / {Mathf.Round(movement.WalkSpeed / hexWidth)} hex");
                __instance.dataList.Add("Max Sprint", $"{movement.RunSpeed}m / {Mathf.Round(movement.RunSpeed / hexWidth)} hex");
                __instance.dataList.Add("TT Walk MP", $"{movement.MovementPoint}");
            }
            catch (Exception e)
            {
                Control.mod.Logger.LogError(e);
            }
        }
 public static void Postfix(StatTooltipData __instance)
 {
     mechDef = null;
     if (movement != null)
     {
         __instance.dataList.Add("TT Walk MP", movement.MovementPoint.ToString());
         movement = null;
     }
 }
 public static void Postfix(StatTooltipData __instance, MechDef def)
 {
     try
     {
         OverrideStatTooltipsFeature.RangeStat.SetupTooltip(__instance, def);
     }
     catch (Exception e)
     {
         Control.Logger.Error.Log(e);
     }
 }
 public static void Postfix(StatTooltipData __instance, MechDef def)
 {
     try
     {
         OverrideStatTooltipsFeature.HeatEfficiencyStat.SetupTooltip(__instance, def);
     }
     catch (Exception e)
     {
         Control.mod.Logger.LogError(e);
     }
 }
        public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
        {
            var stats = new MechDefHeatEfficiencyStatistics(mechDef);

            tooltipData.dataList.Clear();

            tooltipData.dataList.Add("<u>" + Strings.T("Heat Sinking") + "</u>", Strings.T("{0} Heat", stats.HeatSinking));
            tooltipData.dataList.Add("<u>" + Strings.T("Alpha Strike") + "</u>", Strings.T("{0} Heat", stats.AlphaStrike));
            tooltipData.dataList.Add(Strings.T("Jump Heat"), Strings.T("{0} Heat", stats.JumpHeat));
            tooltipData.dataList.Add(Strings.T("Heat Levels"), Strings.T("{0} / {1} Heat", stats.Overheat, stats.MaxHeat));
        }
        public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
        {
            tooltipData.dataList.Clear();

            var firepower = GetFirepower(mechDef);

            tooltipData.dataList.Add("<u>" + Strings.T("Medium Range Dmg") + "</u>", $"{firepower.TotalDamage}");
            tooltipData.dataList.Add(Strings.T("Instability Damage"), $"{firepower.TotalInstability}");
            tooltipData.dataList.Add(Strings.T("Heat Damage"), $"{firepower.TotalHeatDamage}");
            tooltipData.dataList.Add(Strings.T("Structure Damage"), $"{firepower.TotalStructureDamage}");
            tooltipData.dataList.Add(Strings.T("Average Accuracy"), $"{-firepower.AverageAccuracy}");
        }
            public static void Postfix(StatTooltipData __instance, MechDef def)
            {
                try
                {
                    if (!def.Chassis.ChassisTags.Contains("chassis_heatsinks"))
                    {
                        return;
                    }

                    Logger.Debug("[StatTooltipData_SetHeatData_POSTFIX] (" + def.Description.Id + ") def.Chassis.Heatsinks: " + def.Chassis.Heatsinks);

                    CombatGameConstants cgc = CombatGameConstants.GetInstance(UnityGameInstance.BattleTechGame);
                    float num = ((float)def.Chassis.Heatsinks + (float)cgc.Heat.InternalHeatSinkCount) * cgc.Heat.DefaultHeatSinkDissipationCapacity;
                    Logger.Debug("[StatTooltipData_SetHeatData_POSTFIX] (" + def.Description.Id + ") ChassisDissipationCapacity: " + num);

                    for (int i = 0; i < def.Inventory.Length; i++)
                    {
                        if (def.Inventory[i].ComponentDefType == ComponentType.HeatSink)
                        {
                            HeatSinkDef heatSinkDef = def.Inventory[i].Def as HeatSinkDef;
                            if (heatSinkDef != null)
                            {
                                num += heatSinkDef.DissipationCapacity;
                            }
                        }
                    }
                    Logger.Debug("[StatTooltipData_SetHeatData_POSTFIX] (" + def.Description.Id + ") TotalDissipationCapacity: " + num);

                    __instance.dataList.Remove("Heat Sinking");
                    __instance.dataList.Add(Strings.T("Heat Sinking"), Strings.T("{0} Heat", new object[]
                    {
                        num.ToString()
                    }));
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }
Exemple #10
0
    public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
    {
        tooltipData.dataList.Clear();

        {
            var firepower = GetLongRangeFirepower(mechDef);
            tooltipData.dataList.Add("<u>" + Strings.T("Long Range Dmg") + "</u>", $"{firepower.TotalDamage}");
        }
        {
            var firepower = GetExtremeLongRangeFirepower(mechDef);
            tooltipData.dataList.Add("<u>" + Strings.T("Very Long Range Dmg") + "</u>", $"{firepower.TotalDamage}");
        }
        {
            var firepower = GetIndirectFirepower(mechDef);
            // TODO apply range limits and add copy to medium range stat
            tooltipData.dataList.Add(Strings.T("Indirect Range Dmg"), $"{firepower.TotalDamage}");
        }
        {
            var firepower = GetFirepower(mechDef);
            tooltipData.dataList.Add(Strings.T("Stability Dmg"), $"{firepower.TotalInstability}");
            tooltipData.dataList.Add(Strings.T("Heat / Struct.Dmg"), $"{firepower.TotalHeatDamage} / {firepower.TotalStructureDamage}");
            tooltipData.dataList.Add(Strings.T("Average Accuracy"), $"{-firepower.AverageAccuracy}");
        }
    }
 public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
 {
     tooltipData.dataList.Clear();
 }
 public static void Postfix(StatTooltipData __instance)
 {
     mechDef = null;
     __instance.dataList.Add("TT Walk MP", string.Format("{0}", TTWalkSpeed));
 }
Exemple #13
0
        public void SetupTooltip(StatTooltipData tooltipData, MechDef mechDef)
        {
            var stats = new MechDefMovementStatistics(mechDef);

            tooltipData.dataList.Clear();
Exemple #14
0
            public static bool Prefix(StatTooltipData __instance, MechDef def)
            {
                try
                {
                    Logger.Debug($"[StatTooltipData_SetDurabilityData_PREFIX] Adding base Chassis.Stability value to the tooltip (including bonus from special gear)");

                    // Mostly copied from original method
                    float mechDefCurrentStructure = def.MechDefCurrentStructure;
                    float mechDefCurrentArmor     = def.MechDefCurrentArmor;
                    float stabilityDefenses       = 0f;
                    float dfaSelfDamage           = def.Chassis.DFASelfDamage;
                    //MAD: Add hit defense, check for special gear
                    bool  hasBallisticSiegeCompensators = false;
                    float hitDefenses = 0f;
                    //DAM
                    List <float> list = new List <float>();
                    for (int i = 0; i < def.Inventory.Length; i++)
                    {
                        if ((def.Inventory[i].DamageLevel == ComponentDamageLevel.Functional || def.Inventory[i].DamageLevel == ComponentDamageLevel.Installing) && def.Inventory[i].ComponentDefType == ComponentType.Upgrade && def.Inventory[i].DamageLevel != ComponentDamageLevel.Destroyed)
                        {
                            UpgradeDef upgradeDef = def.Inventory[i].Def as UpgradeDef;
                            if (upgradeDef != null)
                            {
                                for (int j = 0; j < upgradeDef.statusEffects.Length; j++)
                                {
                                    float effectMod = Utilities.GetEffectMod(upgradeDef.statusEffects[j], "ReceivedInstabilityMultiplier", StatisticEffectData.TargetCollection.NotSet, StatCollection.StatOperation.Float_Multiply, WeaponSubType.NotSet);
                                    dfaSelfDamage -= Utilities.GetEffectMod(upgradeDef.statusEffects[j], "DFASelfDamage", StatisticEffectData.TargetCollection.NotSet, StatCollection.StatOperation.Float_Subtract, WeaponSubType.DFA);
                                    //MAD: Add hit defense
                                    hitDefenses += Utilities.GetEffectMod(upgradeDef.statusEffects[j], "ToHitThisActor", StatisticEffectData.TargetCollection.NotSet, StatCollection.StatOperation.Float_Add, WeaponSubType.NotSet);
                                    //DAM
                                    if (effectMod > 0f)
                                    {
                                        list.Add(effectMod);
                                    }
                                }

                                if (upgradeDef.Description.Id == "Gear_General_GM_Ballistic_Siege_Compensators")
                                {
                                    hasBallisticSiegeCompensators = true;
                                    Logger.Info($"[StatTooltipData_SetDurabilityData_PREFIX] hasBallisticSiegeCompensators: {hasBallisticSiegeCompensators}");
                                }
                            }
                        }
                    }
                    for (int k = 0; k < list.Count; k++)
                    {
                        if (k > 0)
                        {
                            stabilityDefenses *= list[k];
                        }
                        else
                        {
                            stabilityDefenses = list[k];
                        }
                    }
                    if (stabilityDefenses != 0f)
                    {
                        stabilityDefenses *= 100f;
                        stabilityDefenses  = 100f - stabilityDefenses;
                    }
                    string stabilityDefensesStr = string.Format("{0}%", stabilityDefenses.ToString());

                    //MAD: Add base stability
                    float stability = def.Chassis.Stability + (hasBallisticSiegeCompensators ? 40f : 0f);

                    //MAD: Add hit defense (Multiply by 5 as 1f is translated to +-5% chance to hit)
                    hitDefenses = Mathf.FloorToInt(hitDefenses * 5);
                    string hitDefensesStr = string.Format("{0}%", hitDefenses.ToString());

                    //MAD: Add armor weight
                    string armorTonnage = Math.Round((decimal)(mechDefCurrentArmor * UnityGameInstance.BattleTechGame.MechStatisticsConstants.TONNAGE_PER_ARMOR_POINT), 2).ToString("F2").Replace(".", ",");
                    string armorStr     = $"{mechDefCurrentArmor} ({armorTonnage} tons)";

                    //MAD: Modified/Expanded output (Column 1)
                    __instance.dataList.Add(Strings.T("Structure"), mechDefCurrentStructure.ToString());
                    __instance.dataList.Add(Strings.T("Armor"), armorStr);
                    __instance.dataList.Add(Strings.T("Stability"), stability.ToString());
                    // Column 2
                    __instance.dataList.Add(Strings.T("DFA Self Dmg"), dfaSelfDamage.ToString());
                    __instance.dataList.Add(Strings.T("Hit Def"), hitDefensesStr);
                    __instance.dataList.Add(Strings.T("Stability Def"), stabilityDefensesStr);


                    // Skipping original method
                    return(false);
                }
                catch (Exception e)
                {
                    Logger.Error(e);

                    __instance.dataList.Clear();
                    return(true);
                }
            }
Exemple #15
0
        public static bool Prefix(StatTooltipData __instance, MechDef def)
        {
            try
            {
                Logger.Debug($"[StatTooltipData_SetFirepowerData_PREFIX] Fixing max stability damage value and respecting special gear...");

                float allDmg = 0f;
                float stbDmg = 0f;

                float energyDmg    = 0f;
                float ballisticDmg = 0f;
                float missileDmg   = 0f;
                float supportDmg   = 0f;

                bool hasOptimizedCapacitors        = false;
                bool hasBallisticSiegeCompensators = false;

                for (int i = 0; i < def.Inventory.Length; i++)
                {
                    if ((def.Inventory[i].DamageLevel == ComponentDamageLevel.Functional || def.Inventory[i].DamageLevel == ComponentDamageLevel.Installing) && def.Inventory[i].DamageLevel != ComponentDamageLevel.Destroyed)
                    {
                        if (def.Inventory[i].Def.Description.Id == "Gear_General_Optimized_Capacitors")
                        {
                            hasOptimizedCapacitors = true;
                            Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] hasOptimizedCapacitors: {hasOptimizedCapacitors}");
                        }
                        if (def.Inventory[i].Def.Description.Id == "Gear_General_GM_Ballistic_Siege_Compensators")
                        {
                            hasBallisticSiegeCompensators = true;
                            Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] hasBallisticSiegeCompensators: {hasBallisticSiegeCompensators}");
                        }


                        if (def.Inventory[i].ComponentDefType == ComponentType.Weapon)
                        {
                            WeaponDef weaponDef = def.Inventory[i].Def as WeaponDef;
                            if (weaponDef != null)
                            {
                                // Energy weapons
                                if (weaponDef.WeaponCategoryValue.IsEnergy)
                                {
                                    //Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] {weaponDef.Description.Name} is an energy weapon");

                                    if (weaponDef.Type == WeaponType.COIL)
                                    {
                                        allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * 3f * (float)weaponDef.ShotsWhenFired) : (weaponDef.Damage * 3f));
                                        stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                        energyDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * 3f * (float)weaponDef.ShotsWhenFired) : (weaponDef.Damage * 3f));
                                    }
                                    else
                                    {
                                        allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                        stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                        energyDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                    }

                                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] ({weaponDef.Description.Name}) energyDmg: {energyDmg}");
                                }
                                // Ballistic weapons
                                else if (weaponDef.WeaponCategoryValue.IsBallistic)
                                {
                                    //Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] {weaponDef.Description.Name} is a ballistic weapon");

                                    allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                    stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                    ballisticDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);

                                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] ({weaponDef.Description.Name}) ballisticDmg: {ballisticDmg}");
                                }
                                // Missiles
                                else if (weaponDef.WeaponCategoryValue.IsMissile)
                                {
                                    //Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] {weaponDef.Description.Name} is a missile weapon");

                                    allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                    stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                    missileDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);

                                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] ({weaponDef.Description.Name}) missileDmg: {missileDmg}");
                                }
                                // Support
                                else if (weaponDef.WeaponCategoryValue.IsSupport)
                                {
                                    //Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] {weaponDef.Description.Name} is a support weapon");

                                    if (weaponDef.Type == WeaponType.COIL)
                                    {
                                        allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * 3f * (float)weaponDef.ShotsWhenFired) : (weaponDef.Damage * 3f));
                                        stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                        supportDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * 3f * (float)weaponDef.ShotsWhenFired) : (weaponDef.Damage * 3f));
                                    }
                                    else
                                    {
                                        allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                        stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);

                                        supportDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                    }

                                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] ({weaponDef.Description.Name}) supportDmg: {supportDmg}");
                                }
                                // Everything else
                                else
                                {
                                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] {weaponDef.Description.Name} is uncategorized");

                                    allDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Damage * (float)weaponDef.ShotsWhenFired) : weaponDef.Damage);
                                    stbDmg += ((weaponDef.ShotsWhenFired > 0) ? (weaponDef.Instability * (float)weaponDef.ShotsWhenFired) : weaponDef.Instability);
                                }
                            }
                        }
                    }
                }

                string energyDmgStr = $"{energyDmg}";
                if (hasOptimizedCapacitors)
                {
                    int additionalEnergyDmg = (int)Math.Round(energyDmg * 0.2f);
                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] additionalEnergyDmg: {additionalEnergyDmg}");

                    allDmg      += additionalEnergyDmg;
                    energyDmgStr = $"{energyDmg} ({energyDmg + additionalEnergyDmg})";
                }

                string ballisticDmgStr = $"{ballisticDmg}";
                if (hasBallisticSiegeCompensators)
                {
                    int additionalBallisticDmg = (int)Math.Round(ballisticDmg * 0.2f);
                    Logger.Info($"[StatTooltipData_SetFirepowerData_PREFIX] additionalBallisticDmg: {additionalBallisticDmg}");

                    allDmg         += additionalBallisticDmg;
                    ballisticDmgStr = $"{ballisticDmg} ({ballisticDmg + additionalBallisticDmg})";
                }

                // Column 1
                __instance.dataList.Add(Strings.T("Max Dmg"), allDmg.ToString());
                __instance.dataList.Add(Strings.T("Energy"), energyDmgStr);
                __instance.dataList.Add(Strings.T("Support"), supportDmg.ToString());

                // Column 2
                __instance.dataList.Add(Strings.T("Max Stability Dmg"), stbDmg.ToString());
                __instance.dataList.Add(Strings.T("Ballistic"), ballisticDmgStr);
                __instance.dataList.Add(Strings.T("Missile"), missileDmg.ToString());

                // Skipping original method
                return(false);
            }
            catch (Exception e)
            {
                Logger.Error(e);

                __instance.dataList.Clear();
                return(true);
            }
        }