Esempio n. 1
0
        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();
        }
Esempio n. 2
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}");
            }
        }
Esempio n. 3
0
            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);
                }
            }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
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}");
            }
        }
Esempio n. 7
0
            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);
                }
            }
Esempio n. 8
0
 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);
     }
 }