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"); } }
static void Prefix(SimGameState __instance) { Mod.Log.Trace?.Write("SGS:ARSM entered."); SimGameConstantOverride sgco = __instance.ConstantOverrides; if (sgco.ConstantOverrides.ContainsKey("CareerMode")) { // Patch starting mechs if (sgco.ConstantOverrides["CareerMode"].ContainsKey(ModStats.HBS_RandomMechs)) { string startingMechsS = sgco.ConstantOverrides["CareerMode"][ModStats.HBS_RandomMechs]; Mod.Log.Info?.Write($"Replacing starting random mechs with:{startingMechsS}"); string[] startingMechs = startingMechsS.Split(','); __instance.Constants.CareerMode.StartingRandomMechLists = startingMechs; } else { Mod.Log.Debug?.Write($"key: {ModStats.HBS_RandomMechs} not found"); } // Patch faction reputation if (sgco.ConstantOverrides["CareerMode"].ContainsKey(ModStats.HBS_FactionRep)) { string factionRepS = sgco.ConstantOverrides["CareerMode"][ModStats.HBS_FactionRep]; string[] factions = factionRepS.Split(','); foreach (string factionToken in factions) { string[] factionSplit = factionToken.Split(':'); string factionId = factionSplit[0]; int factionRep = int.Parse(factionSplit[1]); Mod.Log.Info?.Write($"Applying rep: {factionRep} to faction: ({factionId})"); FactionDef factionDef = FactionDef.GetFactionDefByEnum(__instance.DataManager, factionId); __instance.AddReputation(factionDef.FactionValue, factionRep, false); } } else { Mod.Log.Debug?.Write($"key: {ModStats.HBS_RandomMechs} not found"); } } else if (!sgco.ConstantOverrides.ContainsKey("CareerMode")) { Mod.Log.Debug?.Write("key:CareerMode not found"); } }
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"); } }