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 }); }
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}"); } }
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; }