public static void Postfix(SimGameState __instance) { try { if (!__instance.CompanyTags.Contains(FixTaurianReputationTag) && __instance.CompanyTags.Contains("story_complete")) { Logger.Debug($"[SimGameState__OnAttachUXComplete_POSTFIX] Apply reputation fix for the Taurian Concordat"); FactionValue TaurianConcordat = FactionEnumeration.GetFactionByName("TaurianConcordat"); int currentReputation = __instance.GetRawReputation(TaurianConcordat); Logger.Debug($"[SimGameState__OnAttachUXComplete_POSTFIX] currentReputation: {currentReputation}"); if (currentReputation < -10) { int reputationToAdd = (currentReputation * -1) - 10; Logger.Debug($"[SimGameState__OnAttachUXComplete_POSTFIX] reputationToAdd: {reputationToAdd}"); __instance.AddReputation(TaurianConcordat, reputationToAdd, false, null); } // Done __instance.CompanyTags.Add(FixTaurianReputationTag); Logger.Debug($"[SimGameState__OnAttachUXComplete_POSTFIX] Added {FixTaurianReputationTag} to CompanyTags"); } } catch (Exception e) { Logger.Error(e); } }
public static void RefuseAction(AAR_SalvageScreen salvageScreen, int reputationModifier) { SimGameState sgs = UnityGameInstance.BattleTechGame.Simulation; int repBefore = sgs.GetRawReputation(ModState.Employer); sgs.AddReputation(ModState.Employer, reputationModifier, false); ModState.EmployerRepRaw = sgs.GetRawReputation(ModState.Employer); Mod.Log.Info($"Player refused holdback. {ModState.Employer} reputation {repBefore} + {reputationModifier} modifier = {ModState.EmployerRepRaw}."); // Roll up any remaining salvage and widget-tize it List <SalvageDef> rolledUpSalvage = Helper.RollupSalvage(ModState.PotentialSalvage); Helper.CalculateAndAddAvailableSalvage(salvageScreen, rolledUpSalvage); ModState.Reset(); }
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"); } }
public static void AcceptAction(AAR_SalvageScreen salvageScreen, int reputationModifier) { SimGameState sgs = UnityGameInstance.BattleTechGame.Simulation; int repBefore = sgs.GetRawReputation(ModState.Employer); sgs.AddReputation(ModState.Employer, reputationModifier, false); ModState.EmployerRepRaw = sgs.GetRawReputation(ModState.Employer); Mod.Log.Info($"Player accepted holdback. {ModState.Employer} reputation {repBefore} + {reputationModifier} modifier = {ModState.EmployerRepRaw}."); // Remove the disputed items Mod.Log.Debug(" -- Removing disputed items."); foreach (SalvageDef sDef in ModState.HeldbackParts) { Helper.RemoveSalvage(sDef); } // Update quantities of compensation parts Mod.Log.Debug(" -- Updating quantities on compensation parts."); foreach (SalvageDef compSDef in ModState.CompensationParts) { Mod.Log.Debug($" compensation salvageDef:{compSDef.Description.Name} with quantity:{compSDef.Count}"); foreach (SalvageDef sDef in ModState.PotentialSalvage) { Mod.Log.Debug($" salvageDef:{sDef.Description.Name} with quantity:{sDef.Count}"); if (compSDef.RewardID == sDef.RewardID) { Mod.Log.Info($" Matched compensation target, updating quantity to: {compSDef.Count + sDef.Count}"); sDef.Count = sDef.Count + compSDef.Count; break; } } } // Roll up any remaining salvage and widget-tize it List <SalvageDef> rolledUpSalvage = Helper.RollupSalvage(ModState.PotentialSalvage); Helper.CalculateAndAddAvailableSalvage(salvageScreen, rolledUpSalvage); ModState.Reset(); }
public static void Add(string param) { // Factions: Davion, Liao, Kurita, Marik, Steiner, TaurianConcordat, MagistracyOfCanopus, AuriganPirates, MercenaryReviewBoard SimGameState simGameState = SceneSingletonBehavior <UnityGameInstance> .Instance.Game.Simulation; if (param == "help") { string help = ""; help += "• This command will add reputation for some faction"; help += Environment.NewLine; help += "• Params: faction name '+' the desired amount"; help += Environment.NewLine; help += "• Example: '/rep AuriganPirates+100'"; help += Environment.NewLine; help += "Valid factions are Davion, Liao, Kurita, Marik, Steiner, TaurianConcordat, MagistracyOfCanopus, AuriganPirates and MercenaryReviewBoard"; PopupHelper.Info(help); return; } //@ToDo: Allow to add reputation for all factions at once (ie: "/rep all+100") string message = ""; FactionValue faction = FactionEnumeration.GetInvalidUnsetFactionValue(); string[] array = param.Split(new char[] { '+' }); if (array.Length != 2) { message = $"Param should be faction+number. Type '/rep help' to get an example."; Logger.Debug($"[Cheater_Reputation_Add] {message}"); PopupHelper.Info(message); return; } string factionName = array[0]; int.TryParse(array[1], out int val); try { faction = FactionEnumeration.GetFactionByName(factionName); } catch (ArgumentException ex) { message = $"Unable to convert to a faction from provided string: {factionName}. Type '/rep help' to get a list of valid factions."; Logger.Debug($"[Cheater_Reputation_Add] {message}"); Logger.Error(ex); PopupHelper.Info(message); } if (faction.IsInvalidUnset) { message = $"Invalid faction passed: {factionName}. Type '/rep help' to get a list of valid factions."; Logger.Debug($"[Cheater_Reputation_Add] {message}"); PopupHelper.Info(message); return; } simGameState.AddReputation(faction, val, false, null); message = $"Added {val} reputation for faction {factionName}."; Logger.Debug($"[Cheater_Reputation_Add] {message}"); PopupHelper.Info(message); }