예제 #1
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);
                }
            }
예제 #2
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();
        }
예제 #3
0
        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");
            }
        }
예제 #4
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();
        }
예제 #5
0
        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);
        }