Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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}");
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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());
        }