Пример #1
0
 public void setCompanyStats(StatCollection stats)
 {
     companyStats = stats;
     if (allowUpgrades)
     {
         if (!companyStats.ContainsStatistic(ADDITIONAL_MECH_STAT))
         {
             companyStats.AddStatistic(ADDITIONAL_MECH_STAT, FdefaultMechSlots);
         }
         ;
         if (!companyStats.ContainsStatistic(ADDITIONAL_PLAYER_MECH_STAT))
         {
             companyStats.AddStatistic(ADDITIONAL_PLAYER_MECH_STAT, FdefaultPlayerMechSlots);
         }
         ;
         if (!companyStats.ContainsStatistic(MAX_TONNAGE_STAT))
         {
             companyStats.AddStatistic(MAX_TONNAGE_STAT, FdefaultTonnage);
         }
         ;
         if (!companyStats.ContainsStatistic(CU_VEHICLE_STAT_NAME))
         {
             companyStats.AddStatistic(CU_VEHICLE_STAT_NAME, CuInitialVehicles);
         }
         ;
         UpdateCULances();
     }
 }
Пример #2
0
        public static object EvaluateBattleTechString(TsEnvironment env, object[] inputs)
        {
            int    statScope    = env.ToInt(inputs[0]);
            string statName     = env.ToString(inputs[1]);
            int    operation    = env.ToInt(inputs[2]);
            string compareValue = env.ToString(inputs[3]);

            Main.Logger.Log($"[EvaluateBattleTechString] Triggered with scope '{statScope}', statName '{statName}', operation '{operation}', compareValue '{compareValue}");

            StatCollection statCollection = SimHelper.GetStatCollection(statScope);

            if (statCollection.ContainsStatistic(statName))
            {
                string stat = statCollection.GetValue <string>(statName);

                switch (operation)
                {
                case 1: // equal to
                    return(stat == compareValue);

                case 2: // not equal to
                    return(stat != compareValue);

                default:
                    return(false);
                }
            }

            Main.Logger.Log($"[EvaluateBattleTechString] Stat {statName} does not exist for conversation operation.");
            return(false);
        }
Пример #3
0
 internal void CreateIfMissing()
 {
     if (!StatCollection.ContainsStatistic(Key))
     {
         Create();
     }
 }
Пример #4
0
        public static object GetBattleTechFloat(TsEnvironment env, object[] inputs)
        {
            int    statScope = env.ToInt(inputs[0]);
            string statName  = env.ToString(inputs[1]);

            Main.Logger.Log($"[GetBattleTechFloat] Triggered with scope {statScope} and statName {statName}.");

            StatCollection statCollection = SimHelper.GetStatCollection(statScope);

            if (statCollection == null) // GUARD
            {
                Main.Logger.LogError($"[GetBattleTechFloat] StatCollection is null for {statScope}");
                return(null);
            }

            if (statCollection.ContainsStatistic(statName))
            {
                float stat = statCollection.GetValue <float>(statName);
                Main.Logger.Log($"[GetBattleTechFloat] Stat {statName} found with value {stat}.");
                return(stat);
            }

            Main.Logger.LogError($"[GetBattleTechFloat] Stat {statName} does not exist for conversation operation.");
            return(null);
        }
        public void setCompanyStats(SimGameState simGame)
        {
            companyStats = simGame.CompanyStats;
            int legacyCost = getLegacyCompanyCosts(simGame);

            for (int i = 0; i < DCECore.settings.averagedDrops; i++)
            {
                string statName = $"{DropCostStatPrefix}{i}";
                if (!companyStats.ContainsStatistic(statName))
                {
                    DCECore.modLog.Info?.Write($"Initing Stat: {statName}, Value: {legacyCost}");
                    companyStats.AddStatistic <int>(statName, legacyCost);
                }
            }
            if (!companyStats.ContainsStatistic(DropCostIdxStat))
            {
                companyStats.AddStatistic <int>(DropCostIdxStat, 0);
            }
        }
Пример #6
0
        public void setCompanyStats(StatCollection stats)
        {
            companyStats = stats;

            if (!companyStats.ContainsStatistic(PqMechSkillTracker))
            {
                companyStats.AddStatistic <float>(PqMechSkillTracker, 0.0f);
            }
            if (!companyStats.ContainsStatistic(PqMedSkillTracker))
            {
                companyStats.AddStatistic <float>(PqMedSkillTracker, 0.0f);
            }
            if (!companyStats.ContainsStatistic(PqMoraleTracker))
            {
                companyStats.AddStatistic <float>(PqMoraleTracker, 0.0f);
            }
            Main.modLog.LogMessage($"Tracker Stat: {PqMechSkillTracker}, value: {companyStats.GetValue<float>(PqMechSkillTracker)}");
            Main.modLog.LogMessage($"Tracker Stat: {PqMedSkillTracker}, value: {companyStats.GetValue<float>(PqMedSkillTracker)}");
            Main.modLog.LogMessage($"Tracker Stat: {PqMoraleTracker}, value: {companyStats.GetValue<float>(PqMoraleTracker)}");
        }
Пример #7
0
 public void setCompanyStats(StatCollection stats)
 {
     companyStats = stats;
     if (allowUpgrades)
     {
         if (!companyStats.ContainsStatistic(ADDITIONAL_MECH_STAT))
         {
             companyStats.AddStatistic(ADDITIONAL_MECH_STAT, FadditinalMechSlots);
         }
         ;
         if (!companyStats.ContainsStatistic(ADDITIONAL_PLAYER_MECH_STAT))
         {
             companyStats.AddStatistic(ADDITIONAL_PLAYER_MECH_STAT, FadditinalPlayerMechSlots);
         }
         ;
         if (!companyStats.ContainsStatistic(MAX_TONNAGE_STAT))
         {
             companyStats.AddStatistic(MAX_TONNAGE_STAT, FmaxTonnage);
         }
         ;
     }
 }
        public int getCompanyCosts()
        {
            if (companyStats == null)
            {
                DCECore.modLog.Info?.Write($"CStats is null, race-condition?");
                return(0);
            }
            long totalCost = 0;

            for (int i = 0; i < DCECore.settings.averagedDrops; i++)
            {
                string statName = $"{DropCostStatPrefix}{i}";
                if (companyStats.ContainsStatistic(statName))
                {
                    totalCost += companyStats.GetValue <int>(statName);
                }
            }

            DCECore.modLog.Debug?.Write($"TotalCost before averaging: {totalCost}");
            totalCost /= DCECore.settings.averagedDrops;
            DCECore.modLog.Debug?.Write($"TotalCost after averaging: {totalCost}");
            dropWorth = (int)totalCost;
            return(dropWorth);
        }
Пример #9
0
        public static void setCompanyStats(StatCollection stats, bool init)
        {
            companyStats = stats;


            if (!companyStats.ContainsStatistic(CLIENT_ID_STAT))
            {
                companyStats.AddStatistic(CLIENT_ID_STAT, Fields.settings.ClientID);
            }
            ;
            if (!companyStats.ContainsStatistic(CAREER_ID_STAT) && init)
            {
                Guid careerId = Guid.NewGuid();
                companyStats.AddStatistic(CAREER_ID_STAT, careerId.ToString());
            }
            else
            {
                if (!companyStats.ContainsStatistic(CAREER_ID_STAT))
                {
                    companyStats.AddStatistic(CAREER_ID_STAT, "");
                }
            }
            if (!companyStats.ContainsStatistic(SEASON_STAT))
            {
                companyStats.AddStatistic(SEASON_STAT, Fields.settings.Season);
            }
            ;
            if (!companyStats.ContainsStatistic(MISSION_COUNT_STAT))
            {
                companyStats.AddStatistic(MISSION_COUNT_STAT, 0);
            }
            ;
            if (!companyStats.ContainsStatistic(CONSOLE_COUNT))
            {
                companyStats.AddStatistic(CONSOLE_COUNT, 0);
            }
            ;
            if (!companyStats.ContainsStatistic(BM_TRANSACTION))
            {
                companyStats.AddStatistic(BM_TRANSACTION, "");
            }
            ;

            Logger.Log($"Career ID Loaded: {companyStats.GetValue<string>(CAREER_ID_STAT)}");
            Logger.Log($"Client issue Token: {RtCore.RTCore.rtData}");
            Logger.Log($"Client Salt: {RtCore.RTCore.rtSalt}");
            Web.forceRefreshServerSettings();
        }
Пример #10
0
        /*
         * Looks up any stats element and replaces that over the placeholder
         */
        private string InterpolateStats(string text, string[] lookups)
        {
            if (lookups.Length < 3)
            {
                Main.Logger.LogError($"[InterpolateStats] {{Expression}} needs to be in the format of {{CI.StatType.StatKey}}");
                return($"[InterpolateStats] {{Expression}} needs to be in the format of {{CI.StatType.StatKey}}");
            }

            string         statType       = lookups[1];
            string         statName       = lookups[2];
            StatCollection statCollection = SimHelper.GetStatCollection(statType);

            if (statCollection.ContainsStatistic(statName))
            {
                string statValue = Convert.ToString(statCollection.GetStatistic(statName).CurrentValue.objVal);
                return(statValue);
            }
            else
            {
                Main.Logger.LogError($"[InterpolateStats] Stat '{statName}' does not exist for stat collection '{statType}'");
                return($"[InterpolateStats] Stat {statName} does not exist for stat collection {statType}");
            }
        }
Пример #11
0
 internal void SetShouldFix(StatCollection companyStats)
 {
     ShouldFix = AutoFixSetting && (companyStats == null || !companyStats.ContainsStatistic(CompanyStatKey));
 }
Пример #12
0
 public static void Prefix(SimGameState __instance, ref StatCollection ___companyStats)
 {
     if (__instance.DataManager.ContentPackIndex.IsContentPackOwned("heavymetal", true) && !___companyStats.ContainsStatistic("HasSeenHeavyMetalLootPopup"))
     {
         ___companyStats.AddStatistic <int>("HasSeenHeavyMetalLootPopup", 1);
     }
 }
Пример #13
0
        public static void setCompanyStats(StatCollection stats)
        {
            companyStats = stats;
            bool hasCu2 = CustomUnitsAPI.Detected_V2();

            if (BiggerDrops.settings.allowUpgrades)
            {
                if (hasCu2)
                {
                    // one time upgrade of this stat for existing careers
                    if (companyStats.ContainsStatistic(AdditionalMechSlotsStat) && !companyStats.ContainsStatistic(legacyUpgradeDone))
                    {
                        companyStats.AddStatistic(legacyUpgradeDone, 1);
                        companyStats.Int_Add(companyStats.GetStatistic(AdditionalMechSlotsStat), DefaultMechSlots);
                    }
                    if (!companyStats.ContainsStatistic(legacyUpgradeDone))
                    {
                        companyStats.AddStatistic(legacyUpgradeDone, 1);
                    }
                    Dictionary <string, int> SlotCount = new Dictionary <string, int>();
                    foreach (string id in BiggerDrops.settings.CuV2InitialSlots)
                    {
                        if (SlotCount.ContainsKey(id))
                        {
                            SlotCount[id]++;
                        }
                        else
                        {
                            SlotCount.Add(id, 1);
                        }
                    }
                    foreach (string slotId in SlotOrder)
                    {
                        DropSlotDef def = CustomUnitsAPI.GetDropSlotDef(slotId);
                        if (def != null)
                        {
                            if (!companyStats.ContainsStatistic(def.StatName))
                            {
                                int val = 0;
                                if (SlotCount.ContainsKey(slotId))
                                {
                                    val = SlotCount[slotId];
                                }
                                companyStats.AddStatistic(def.StatName, val);

                                Logger.M.WL($"failed to find slotdef: {slotId}");
                            }
                        }
                        else
                        {
                            Logger.M.WL($"failed to find slotdef: {slotId}");
                        }
                    }
                }
                else
                {
                    if (!companyStats.ContainsStatistic(AdditionalMechSlotsStat))
                    {
                        companyStats.AddStatistic(AdditionalMechSlotsStat,
                                                  Math.Max(Math.Min(MaxAdditionalMechSlots, BiggerDrops.settings.additinalMechSlots), 0));
                    }

                    if (!companyStats.ContainsStatistic(AdditionPlayerMechsStat))
                    {
                        companyStats.AddStatistic(AdditionPlayerMechsStat,
                                                  Math.Max(Math.Min(MaxAdditionalMechSlots, BiggerDrops.settings.additinalPlayerMechSlots),
                                                           0));
                    }

                    if (!companyStats.ContainsStatistic(CuVehicleStat))
                    {
                        companyStats.AddStatistic(CuVehicleStat, BiggerDrops.settings.CuInitialVehicles);
                    }
                    ;
                }

                if (!companyStats.ContainsStatistic(MaxTonnageStat))
                {
                    companyStats.AddStatistic(MaxTonnageStat,
                                              Math.Max(BiggerDrops.settings.defaultMaxTonnage, 0));
                }
            }
            UpdateCULances();
        }
        public static void TestStatistic(this StatCollection stats, EffectData effectData)
        {
            if (stats.ContainsStatistic(effectData.statisticData.statName))
            {
                return;
            }
            if (effectData.statisticData.statName.StartsWith(StatisticEffect_OnEffectBegin.ADD_ENCOUNTER_FLAG_STAT_ID) == false)
            {
                return;
            }
            Variant variant = new Variant(System.Type.GetType(effectData.statisticData.modType));

            switch (effectData.statisticData.operation)
            {
            case StatCollection.StatOperation.Set: {
                if (variant.CheckType(Variant.boolType))
                {
                    stats.AddStatistic <bool>(effectData.statisticData.statName, false);
                }
                else
                if (variant.CheckType(Variant.intType))
                {
                    stats.AddStatistic <int>(effectData.statisticData.statName, 0);
                }
                else
                if (variant.CheckType(Variant.floatType))
                {
                    stats.AddStatistic <float>(effectData.statisticData.statName, 0.0f);
                }
                else
                if (variant.CheckType(Variant.stringType))
                {
                    stats.AddStatistic <string>(effectData.statisticData.statName, string.Empty);
                }
            }
            break;

            case StatCollection.StatOperation.Int_Add:
            case StatCollection.StatOperation.Int_Subtract:
            case StatCollection.StatOperation.Int_Multiply:
            case StatCollection.StatOperation.Int_Divide:
            case StatCollection.StatOperation.Int_Divide_Denom:
            case StatCollection.StatOperation.Int_Mod:
            case StatCollection.StatOperation.Int_Multiply_Float:
            case StatCollection.StatOperation.Int_Divide_Float:
            case StatCollection.StatOperation.Int_Divide_Denom_Float:
            case StatCollection.StatOperation.Bitflag_SetBit:
            case StatCollection.StatOperation.Bitflag_FlipBit:
            case StatCollection.StatOperation.Bitflag_Combine: {
                stats.AddStatistic <int>(effectData.statisticData.statName, 0);
            }; break;

            case StatCollection.StatOperation.Float_Add:
            case StatCollection.StatOperation.Float_Subtract:
            case StatCollection.StatOperation.Float_Multiply:
            case StatCollection.StatOperation.Float_Divide:
            case StatCollection.StatOperation.Float_Divide_Denom:
            case StatCollection.StatOperation.Float_Multiply_Int:
            case StatCollection.StatOperation.Float_Divide_Int:
            case StatCollection.StatOperation.Float_Divide_Denom_Int: {
                stats.AddStatistic <float>(effectData.statisticData.statName, 0.0f);
            }; break;

            case StatCollection.StatOperation.String_Append:
            case StatCollection.StatOperation.String_Prepend: {
                stats.AddStatistic <string>(effectData.statisticData.statName, string.Empty);
            }; break;
            }
        }