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(); }
public static void Prefix(Contract __instance, MissionResult result, bool isGoodFaithEffort) { if (__instance != null && !__instance.ContractTypeValue.IsSkirmish) { SimGameState simulation = HBS.LazySingletonBehavior <UnityGameInstance> .Instance.Game.Simulation; ModState.Employer = __instance.GetTeamFaction("ecc8d4f2-74b4-465d-adf6-84445e5dfc230"); SimGameReputation employerRep = simulation.GetReputation(ModState.Employer); ModState.EmployerRep = employerRep; ModState.EmployerRepRaw = simulation.GetRawReputation(ModState.Employer); ModState.IsEmployerAlly = simulation.IsFactionAlly(ModState.Employer); ModState.MRBRating = simulation.GetCurrentMRBLevel(); // Normalize to 0 indexing Mod.Log.Info?.Write($"At contract start for employer: Employer:({ModState.Employer}): " + $"employerRep:{ModState.EmployerRep} employerIsAllied:{ModState.IsEmployerAlly} " + $"MRBRating: {ModState.MRBRating} MRBIndex: {Helper.MRBCfgIdx()}"); // Calculate the rollup, reputation and etc: Mod.Log.Info?.Write($" -- Contract Rollup Idx: {Helper.MRBCfgIdx()} => " + $"RawRollup: {Mod.Config.RollupMRBValue[Helper.MRBCfgIdx()]}"); RepCfg repCfg = Mod.Config.Reputation[Helper.FactionCfgIdx()]; Mod.Log.Info?.Write($" -- Faction Rep Idx: {Helper.FactionCfgIdx()} => " + $"Reputation: {repCfg.Reputation} " + $"RollupMultiComponent: {repCfg.RollupMultiComponent} RollupMultiMech: {repCfg.RollupMultiMech} " + $"HoldbackTrigger: {repCfg.HoldbackTrigger} HoldbackValueCapMulti: {repCfg.HoldbackValueCapMulti}"); } }
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); } }
static void Postfix(SimGameState __instance, ref Contract contract) { var MRBRep = __instance.GetRawReputation(__instance.GetFactionDef("MercenaryReviewBoard").FactionValue); float initialCV = (float)contract.InitialContractValue; int newInitialContractValue = (int)(initialCV + initialCV * (MRBRep / __instance.Constants.Story.MRBRepMaxCap)); Traverse.Create(contract).Property("InitialContractValue").SetValue(newInitialContractValue); }
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 Prefix(Contract __instance, MissionResult result, bool isGoodFaithEffort) { if (__instance != null && !__instance.ContractTypeValue.IsSkirmish) { SimGameState simulation = HBS.LazySingletonBehavior <UnityGameInstance> .Instance.Game.Simulation; ModState.Employer = __instance.GetTeamFaction("ecc8d4f2-74b4-465d-adf6-84445e5dfc230"); SimGameReputation employerRep = simulation.GetReputation(ModState.Employer); ModState.EmployerRep = employerRep; ModState.EmployerRepRaw = simulation.GetRawReputation(ModState.Employer); ModState.IsEmployerAlly = simulation.IsCareerFactionAlly(ModState.Employer); ModState.MRBRating = simulation.GetCurrentMRBLevel() - 1; // Normalize to 0 indexing Mod.Log.Info($"At contract start, Player has MRB:{ModState.MRBRating} Employer:({ModState.Employer}) EmployerRep:{ModState.EmployerRep} / EmployerAllied:{ModState.IsEmployerAlly}"); } }
public static void Postfix(ref bool __result, TagSet reqTags) { try { if (reqTags == null || reqTags.Count <= 0) { return; } SimGameState simGameState = SceneSingletonBehavior <UnityGameInstance> .Instance.Game.Simulation; string[] ___items = (string[])AccessTools.Field(typeof(TagSet), "items").GetValue(reqTags); foreach (string tag in ___items) { if (tag.Contains("ALLIED_FACTION_")) { string factionIdentifier = tag.Replace("ALLIED_FACTION_", ""); FactionValue factionValue = FactionEnumeration.GetFactionByName(factionIdentifier); int currentFactionReputation = simGameState.GetRawReputation(factionValue); Logger.Info($"[SimGameState_MeetsTagRequirements_POSTFIX] ---"); Logger.Info($"[SimGameState_MeetsTagRequirements_POSTFIX] reqTags: {reqTags}"); Logger.Info($"[SimGameState_MeetsTagRequirements_POSTFIX] factionIdentifier: {factionIdentifier}"); Logger.Info($"[SimGameState_MeetsTagRequirements_POSTFIX] currentFactionReputation: {currentFactionReputation}"); if (currentFactionReputation >= LittleThings.Settings.EnableAllianceFlashpointsAtReputation) { __result = true; } } } } catch (Exception e) { Logger.Error(e); } }
static void Prefix(ref SGCaptainsQuartersReputationScreen __instance) { try { SimGameState simState = (SimGameState)ReflectionHelper.GetPrivateField(__instance, "simState"); simState.displayedFactions = simState.displayedFactions.OrderByDescending(o => simState.GetRawReputation(o)).ToList(); } catch (Exception e) { Logger.LogError(e); } }