public static void SimGameConstantOverride_ApplyOverride_Postfix(SimGameConstantOverride __instance, string constantType, string constantName, SimGameState ___simState) { Mod.Log.Trace("SGCO:AO entered."); if (constantName != null && constantName.ToLower().Equals(ModStats.StrayShotValidTargets.ToLower())) { string value = __instance.ConstantOverrides[constantType][constantName]; Mod.Log.Debug($" Setting StrayShotValidTargets to {value} "); ToHitConstantsDef thcd = ___simState.CombatConstants.ToHit; thcd.StrayShotValidTargets = (StrayShotValidTargets)Enum.Parse(typeof(StrayShotValidTargets), value); Traverse traverse = Traverse.Create(___simState.CombatConstants).Property("ToHit"); traverse.SetValue(thcd); Mod.Log.Debug($" Replaced ToHit"); } }
public override void CombatStarts() { if (Settings.AllowNetBonusModifier) { CombatResolutionConstantsDef con = CombatConstants.ResolutionConstants; con.AllowTotalNegativeModifier = true; typeof(CombatGameConstants).GetProperty("ResolutionConstants").SetValue(CombatConstants, con, null); } if (Settings.AllowLowElevationPenalty) { ToHitConstantsDef con = CombatConstants.ToHit; con.ToHitElevationApplyPenalties = true; typeof(CombatGameConstants).GetProperty("ToHit").SetValue(CombatConstants, con, null); } if (Settings.AllowNetBonusModifier && steppingModifier == null && !Settings.DiminishingHitChanceModifier) { TryRun(ModLog, FillSteppedModifiers); } }
static void Postfix(SimGameConstantOverride __instance, string constantType, string constantName, SimGameState ___simState) { Mod.Log.Trace?.Write("SGCO:AO entered."); if (constantName != null && constantName.ToLower().Equals(ModStats.HBS_StrayShotEnabler.ToLower())) { bool value = Convert.ToBoolean(__instance.ConstantOverrides[constantType][constantName]); Mod.Log.Debug?.Write($" Setting StrayShotsEnabled to {value} "); ToHitConstantsDef thcd = ___simState.CombatConstants.ToHit; thcd.StrayShotsEnabled = value; Traverse traverse = Traverse.Create(___simState.CombatConstants).Property("ToHit"); traverse.SetValue(thcd); Mod.Log.Debug?.Write($" Replaced ToHit"); } if (constantName != null && constantName.ToLower().Equals(ModStats.HBS_StrayShotHitsUnits.ToLower())) { bool value = Convert.ToBoolean(__instance.ConstantOverrides[constantType][constantName]); Mod.Log.Debug?.Write($" Setting StrayShotsHitUnits to {value} "); ToHitConstantsDef thcd = ___simState.CombatConstants.ToHit; thcd.StrayShotsHitUnits = value; Traverse traverse = Traverse.Create(___simState.CombatConstants).Property("ToHit"); traverse.SetValue(thcd); Mod.Log.Debug?.Write($" Replaced ToHit"); } if (constantName != null && constantName.ToLower().Equals(ModStats.HBS_StrayShotValidTargets.ToLower())) { string value = __instance.ConstantOverrides[constantType][constantName]; Mod.Log.Debug?.Write($" Setting StrayShotValidTargets to {value} "); ToHitConstantsDef thcd = ___simState.CombatConstants.ToHit; thcd.StrayShotValidTargets = (StrayShotValidTargets)Enum.Parse(typeof(StrayShotValidTargets), value); Traverse traverse = Traverse.Create(___simState.CombatConstants).Property("ToHit"); traverse.SetValue(thcd); Mod.Log.Debug?.Write($" Replaced ToHit"); } }