public override void CombatStartsOnce() { Type SlotType = typeof(CombatHUDWeaponSlot), PanelType = typeof(CombatHUDWeaponPanel); if (Settings.SaturationOfLoadout != 0 || Settings.ShowDamageInLoadout || Settings.ShowMeleeDamageInLoadout || Settings.ShowAlphaDamageInLoadout != null) { Patch(typeof(CombatHUDTargetingComputer), "RefreshWeaponList", null, "EnhanceWeaponLoadout"); } if (Settings.ShowBaseHitchance) { Patch(SlotType, "UpdateToolTipsFiring", typeof(ICombatant), "ShowBaseHitChance", null); Patch(SlotType, "UpdateToolTipsMelee", typeof(ICombatant), "ShowBaseMeleeChance", null); } if (Settings.ShowNeutralRangeInBreakdown) { rangedPenalty = ModifierList.GetRangedModifierFactor("range"); Patch(SlotType, "UpdateToolTipsFiring", typeof(ICombatant), "ShowNeutralRange", null); } if (Settings.ShowWeaponProp || Settings.WeaponRangeFormat != null) { Patch(SlotType, "GenerateToolTipStrings", null, "UpdateWeaponTooltip"); } if (Settings.ShowReducedWeaponDamage || Settings.CalloutWeaponStability) { Patch(SlotType, "RefreshDisplayedWeapon", null, "UpdateWeaponDamage"); } if (Settings.ShowTotalWeaponDamage) { Patch(PanelType, "ShowWeaponsUpTo", null, "ShowTotalDamageSlot"); Patch(PanelType, "RefreshDisplayedWeapons", "ResetTotalWeaponDamage", "ShowTotalWeaponDamage"); Patch(SlotType, "RefreshHighlighted", "BypassTotalSlotHighlight", null); } if (Settings.ShowReducedWeaponDamage || Settings.ShowTotalWeaponDamage) { // Update damage numbers (and multi-target highlights) _after_ all slots are in a correct state. Patch(typeof(SelectionStateFireMulti), "SetTargetedCombatant", null, "RefreshTotalDamage"); Patch(SlotType, "OnPointerUp", null, "RefreshTotalDamage"); } if (Settings.CalloutWeaponStability) { HeauUpDisplay.HookCalloutToggle(ToggleStabilityDamage); } if (HasMod("com.joelmeador.WeaponRealizer", "WeaponRealizer.Core")) { TryRun(ModLog, InitWeaponRealizerBridge); } }
public override void CombatStartsOnce() { if (Settings.ShowNumericInfo) { Patch(typeof(CombatHUDActorDetailsDisplay), "RefreshInfo", null, "ShowNumericInfo"); Patch(typeof(CombatHUDActorInfo), "RefreshAllInfo", "RecordTarget", "ShowBuildingInfo"); Patch(typeof(CombatHUDActorInfo), "RefreshPredictedHeatInfo", null, "RecordRefresh"); Patch(typeof(CombatHUDActorInfo), "RefreshPredictedStabilityInfo", null, "RecordRefresh"); // Force heat/stab number refresh Patch(typeof(CombatHUDMechTray), "Update", null, "RefreshActorInfo"); // Force move/distance number refresh Patch(typeof(SelectionStateMove), "ProcessMousePos", null, "RefreshMoveAndDist"); Patch(typeof(SelectionStateJump), "ProcessMousePos", null, "RefreshMoveAndDist"); HeauUpDisplay.HookCalloutToggle(RefreshTargetInfo); } if (Settings.FixHeatPreview) { Patch(typeof(Mech), "get_AdjustedHeatsinkCapacity", null, "CorrectProjectedHeat"); } if (Settings.ShowAmmoInTooltip || Settings.ShowEnemyAmmoInTooltip) { MechTrayArmorHoverToolTipProp = typeof(CombatHUDMechTrayArmorHover).GetProperty("ToolTip", NonPublic | Instance); if (MechTrayArmorHoverToolTipProp == null) { Warn("Cannot access CombatHUDMechTrayArmorHover.ToolTip, ammo not displayed in paperdoll tooltip."); } else { Patch(typeof(CombatHUDMechTrayArmorHover), "setToolTipInfo", new Type[] { typeof(Mech), typeof(ArmorLocation) }, "OverridePaperDollTooltip", null); } } if (Settings.ShortPilotHint != null) { PilotStatus = new Dictionary <CombatHUDMWStatus, Pilot>(4); Patch(typeof(CombatHUDMWStatus), "OnPortraitRightClicked", null, "RefreshPilotHint"); Patch(typeof(CombatHUDMWStatus), "ForceUnexpand", null, "RefreshPilotHint"); Patch(typeof(CombatHUDMWStatus), "RefreshPilot", null, "ReplacePilotHint"); } if (Settings.MechTrayGreyActedPilot) { Patch(typeof(CombatHUDPortrait), "RefreshDisplayedActor", null, "ColourPilotNames"); } }