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}"); } }
static void Postfix(SimGameState __instance, Pilot pilot, ref bool __result) { int currentMRBLevel = __instance.GetCurrentMRBLevel(); CrewDetails details = ModState.GetCrewDetails(pilot.pilotDef); __result = details.CanBeHiredAtMRBLevel(currentMRBLevel); }
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}"); } }
static bool Prefix(SimGameState __instance, Contract c) { int num = Mathf.Min(c.Override.finalDifficulty + c.Override.difficultyUIModifier, (int)__instance.Constants.Story.GlobalContractDifficultyMax); int repLevel = __instance.GetCurrentMRBLevel(); num -= repLevel; FactionValue teamFaction = c.GetTeamFaction("ecc8d4f2-74b4-465d-adf6-84445e5dfc230"); if (!teamFaction.DoesGainReputation || c.Override.contractDisplayStyle == ContractDisplayStyle.BaseCampaignStory || c.Override.contractDisplayStyle == ContractDisplayStyle.BaseCampaignRestoration || c.Override.contractDisplayStyle == ContractDisplayStyle.BaseFlashpoint || c.Override.contractDisplayStyle == ContractDisplayStyle.HeavyMetalFlashpointCampaign) { return(true); } switch (__instance.GetReputation(teamFaction)) { case SimGameReputation.LOATHED: return((float)num <= __instance.Constants.CareerMode.LoathedMaxContractDifficulty); case SimGameReputation.HATED: return((float)num <= __instance.Constants.CareerMode.HatedMaxContractDifficulty); case SimGameReputation.DISLIKED: return((float)num <= __instance.Constants.CareerMode.DislikedMaxContractDifficulty); case SimGameReputation.INDIFFERENT: return((float)num <= __instance.Constants.CareerMode.IndifferentMaxContractDifficulty); case SimGameReputation.LIKED: return((float)num <= __instance.Constants.CareerMode.LikedMaxContractDifficulty); case SimGameReputation.FRIENDLY: return((float)num <= __instance.Constants.CareerMode.FriendlyMaxContractDifficulty); default: return((float)num <= __instance.Constants.CareerMode.HonoredMaxContractDifficulty); } return(false); }
public void TestMRBLevels() { SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 0); Assert.AreEqual(0, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 49); Assert.AreEqual(0, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 50); Assert.AreEqual(1, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 199); Assert.AreEqual(1, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 200); Assert.AreEqual(2, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 499); Assert.AreEqual(2, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 500); Assert.AreEqual(3, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 699); Assert.AreEqual(3, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 700); Assert.AreEqual(4, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 899); Assert.AreEqual(4, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 900); Assert.AreEqual(5, SimGameState.GetCurrentMRBLevel()); SimGameState.CompanyStats.Set <int>($"Reputation.{FactionName}", 1500); Assert.AreEqual(5, SimGameState.GetCurrentMRBLevel()); }