private static void Postfix(CombatHUDWeaponSlot __instance, ICombatant target, Weapon ___displayedWeapon, CombatHUD ___HUD)
        {
            if (__instance == null || ___displayedWeapon == null || ___HUD.SelectedActor == null || target == null)
            {
                return;
            }

            Mod.Log.Trace?.Write("CHUDWS:SHC - entered.");

            Traverse AddToolTipDetailMethod = Traverse.Create(__instance).Method("AddToolTipDetail",
                                                                                 new Type[] { typeof(string), typeof(int) });

            AbstractActor attacker  = __instance.DisplayedWeapon.parent;
            string        cacheKey  = StraightTonnageCalculator.CacheKey(attacker, target);
            bool          keyExists = ModState.CachedComparisonMods.TryGetValue(cacheKey, out int modifier);

            if (!keyExists)
            {
                modifier = StraightTonnageCalculator.Modifier(attacker, target);
                ModState.CachedComparisonMods.Add(cacheKey, modifier);
            }

            string localText = new Localize.Text(Mod.LocalizedText.Label[ModText.LT_AttackModSizeDelta]).ToString();

            AddToolTipDetailMethod.GetValue(new object[] { localText, modifier });
        }
Пример #2
0
        private static void Postfix(Mech __instance)
        {
            foreach (KeyValuePair <string, float> entry in Mod.Config.StatisticsToAddPerTon)
            {
                float tonnage = StraightTonnageCalculator.GetTonnage(__instance);
                float stat    = 1 + entry.Value * tonnage;
                __instance.StatCollection.Set(entry.Key, stat);

                Mod.Log.Info?.Write($"Applying {entry.Key} {stat} to {__instance.UnitName}");
            }
        }
Пример #3
0
        private static void Postfix(ToHit __instance, ref float __result, AbstractActor attacker, Weapon weapon, ICombatant target,
                                    Vector3 attackPosition, Vector3 targetPosition, LineOfFireLevel lofLevel)
        {
            string cacheKey  = StraightTonnageCalculator.CacheKey(attacker, target);
            bool   keyExists = ModState.CachedComparisonMods.TryGetValue(cacheKey, out int modifier);

            if (!keyExists)
            {
                modifier = StraightTonnageCalculator.Modifier(attacker, target);
                ModState.CachedComparisonMods.Add(cacheKey, modifier);
            }

            __result += modifier;
        }