private static void LogStatus(List <QMod> mods, ModStatus statusToReport, string summary, Logger.Level logLevel)
        {
            List <QMod> specificMods = mods.FindAll(mod => mod.Status == statusToReport);

            if (specificMods.Count == 0)
            {
                return;
            }

            Logger.Log(logLevel, summary);
            foreach (QMod mod in specificMods)
            {
                switch (statusToReport)
                {
                case ModStatus.MissingDependency:
                {
                    if (mod.Dependencies.Length > 0)
                    {
                        Console.WriteLine($"- {mod.DisplayName} ({mod.Id}) is missing these dependencies:");
                        foreach (string dependency in mod.Dependencies)
                        {
                            if (!QModServices.Main.ModPresent(dependency))
                            {
                                Console.WriteLine($"   - {dependency}");
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine($"- {mod.DisplayName} ({mod.Id}) is missing a dependency but none are listed in mod.json, Please check Nexusmods for list of Dependencies.");
                    }
                    break;
                }

                case ModStatus.OutOfDateDependency:
                    Console.WriteLine($"- {mod.DisplayName} ({mod.Id}) requires a newer version of these dependencies:");
                    foreach (RequiredQMod dependency in mod.RequiredMods)
                    {
                        if (dependency.RequiresMinimumVersion)
                        {
                            IQMod dependencyDetails = QModServices.Main.FindModById(dependency.Id);

                            if (dependencyDetails == null || dependencyDetails.ParsedVersion < dependency.MinimumVersion)
                            {
                                Console.WriteLine($"   - {dependency.Id} at version {dependency.MinimumVersion} or later");
                            }
                        }
                    }
                    break;

                default:
                    Console.WriteLine($"- {mod.DisplayName} ({mod.Id})");
                    break;
                }
            }
        }
        public static void CrossModUpdates()
        {
            QuickLogger.Info("Checking if MoreSeamothDepth mod is present");

            IQMod moreSeamothDepth = QModServices.Main.FindModById("MoreSeamothDepth");

            if (moreSeamothDepth != null &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule4", out TechType vehicleHullModule4) &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule5", out TechType vehicleHullModule5))
            {
                QuickLogger.Info("Detected Seamoth Depth Modules Mk4 & Mk5");
                // the AddDepthModule will add the module to the common upgrades set, the common depth modules set, and the vehicle-specific set
                VehicleUpgrader.AddDepthModule(vehicleHullModule4, 4, VehicleUpgrader.EVehicleType.Seamoth);
                VehicleUpgrader.AddDepthModule(vehicleHullModule5, 5, VehicleUpgrader.EVehicleType.Seamoth);
            }

#if BELOWZERO
            QuickLogger.Info("Checking if SeaTruckDepthUpgrades mod is present");

            IQMod moreSeatruckDepth = QModServices.Main.FindModById("SeaTruckDepthUpgrades");
            if (moreSeatruckDepth != null &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckDepthMK4", out TechType seaTruckHull4) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckDepthMK5", out TechType seaTruckHull5) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckDepthMK6", out TechType seaTruckHull6))
            {
                QuickLogger.Info("Detected SeaTruck Depth Modules Mk4, Mk5 and Mk6");
                VehicleUpgrader.AddDepthModule(seaTruckHull4, 4, VehicleUpgrader.EVehicleType.Seatruck);
                VehicleUpgrader.AddDepthModule(seaTruckHull5, 5, VehicleUpgrader.EVehicleType.Seatruck);
                VehicleUpgrader.AddDepthModule(seaTruckHull6, 6, VehicleUpgrader.EVehicleType.Seatruck);
            }

            IQMod seatruckSpeed = QModServices.Main.FindModById("SeaTruckSpeedUpgrades");
            if (seatruckSpeed != null &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckSpeedMK1", out TechType speedMk1) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckSpeedMK2", out TechType speedMk2) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckSpeedMK3", out TechType speedMk3))
            {
                QuickLogger.Info("Detected Seatruck Speed Modules Mk1, Mk2 and Mk3");
                VehicleUpgrader.AddSpeedModifier(speedMk1, 1f, 0f);
                VehicleUpgrader.AddSpeedModifier(speedMk2, 2f, 0f);
                VehicleUpgrader.AddSpeedModifier(speedMk3, 3f, 0f);
            }

            IQMod seatruckArmour = QModServices.Main.FindModById("SeaTruckArmorUpgrades");
            if (seatruckSpeed != null &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckArmorMK1", out TechType armour1) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckArmorMK2", out TechType armour2) &&
                TechTypeHandler.TryGetModdedTechType("SeaTruckArmorMK3", out TechType armour3))
            {
                QuickLogger.Info("Detected Seatruck Armour Modules Mk1, Mk2 and Mk3");
                VehicleUpgrader.AddArmourModule(armour1, 1);
                VehicleUpgrader.AddArmourModule(armour2, 2);
                VehicleUpgrader.AddArmourModule(armour3, 3);
            }
#endif
        }
Beispiel #3
0
        [HarmonyPrefix]      // Harmony Prefix
        public static void Prefix()
        {
            // Determine if SeaglideMapControls mod is present to apply fix for light switching via SeaglideMapControlLightFix
            IQMod modSeaglideMapControls = QModServices.Main.FindModById("SeaglideMapControls");

            if (modSeaglideMapControls != null && modSeaglideMapControls.IsLoaded)
            {
                OtherModsInfo.SeaglideMapControls = true;
            }
        }
Beispiel #4
0
 void Awake()
 {
     if (QModPluginGenerator.QModsToLoadById.TryGetValue(Info.Metadata.GUID, out var mod))
     {
         QMod = mod;
     }
     else
     {
         Logger.LogError($"Could not find QMod with ID: {Info.Metadata.GUID}");
         DestroyImmediate(this);
     }
 }
        public static void CrossModUpdates()
        {
            IQMod moreSeamothDepth = QModServices.Main.FindModById("MoreSeamothDepth");

            if (moreSeamothDepth != null &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule4", out TechType vehicleHullModule4) &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule5", out TechType vehicleHullModule5))
            {
                VehicleUpgrader.SeamothDepthModules.Add(vehicleHullModule4, 4);
                VehicleUpgrader.SeamothDepthModules.Add(vehicleHullModule5, 5);
                VehicleUpgrader.CommonUpgradeModules.Add(vehicleHullModule4);
                VehicleUpgrader.CommonUpgradeModules.Add(vehicleHullModule5);
            }
        }
        public static void CrossModUpdates()
        {
            QuickLogger.Info("Checking if MoreSeamothDepth mod is present");

            IQMod moreSeamothDepth = QModServices.Main.FindModById("MoreSeamothDepth");

            if (moreSeamothDepth != null &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule4", out TechType vehicleHullModule4) &&
                TechTypeHandler.TryGetModdedTechType("SeamothHullModule5", out TechType vehicleHullModule5))
            {
                QuickLogger.Info("Detected Seamoth Depth Modules Mk4 & Mk5");
                VehicleUpgrader.SeamothDepthModules.Add(vehicleHullModule4, 4);
                VehicleUpgrader.SeamothDepthModules.Add(vehicleHullModule5, 5);
                VehicleUpgrader.CommonUpgradeModules.Add(vehicleHullModule4);
                VehicleUpgrader.CommonUpgradeModules.Add(vehicleHullModule5);
                VehicleUpgrader.DepthUpgradeModules.Add(vehicleHullModule4);
                VehicleUpgrader.DepthUpgradeModules.Add(vehicleHullModule5);
            }
        }
Beispiel #7
0
        /// <summary>This wil enforce loading process when AutoLoad mod is present.</summary>
        public static void FixAutoLoadMod()
        {
            if (_fixedAutoLoadMod)
            {
                return;
            }

            IQMod autoLoadMod = QModServices.Main.FindModById("Straitjacket.Subnautica.Mods.AutoLoad");

            if (autoLoadMod != null && autoLoadMod.Enable)
            {
#if DEBUG_HARMONY_PATCHING
                Logger.Log("DEBUG: Fixing for AutoLoad mod...");
#endif
                var beginAsyncSceneLoadMethod = typeof(uGUI_SceneLoading).GetMethod("BeginAsyncSceneLoad", BindingFlags.Public | BindingFlags.Instance);
                var beginAsyncSceneLoadPrefix = typeof(AutoLoadModFixer).GetMethod("BeginAsyncSceneLoad_Prefix", BindingFlags.Public | BindingFlags.Static);
                HarmonyInstance.Patch(beginAsyncSceneLoadMethod, new HarmonyMethod(beginAsyncSceneLoadPrefix), null);
            }
            _fixedAutoLoadMod = true;
        }
Beispiel #8
0
        [HarmonyPrefix]      // Harmony Postfix
        public static void Postfix()
        {
            IQMod modOxygenTank = QModServices.Main.FindModById("OxygenTank");

            if (modOxygenTank != null && modOxygenTank.IsLoaded)
            {
                OtherModsInfo.RefillableOxygenTankPresent = true;
            }

            IQMod modPrawnSuitTorpedoDisplay = QModServices.Main.FindModById("PrawnSuitTorpedoDisplay");

            if (modPrawnSuitTorpedoDisplay != null && modPrawnSuitTorpedoDisplay.IsLoaded)
            {
                OtherModsInfo.PrawnSuitTorpedoDisplayPresent = true;
            }

            IQMod modRm_VehicleLightsImproved = QModServices.Main.FindModById("Rm_VehicleLightsImproved");

            if (modRm_VehicleLightsImproved != null && modRm_VehicleLightsImproved.IsLoaded)
            {
                OtherModsInfo.Rm_VehicleLightsImprovedPresent = true;
            }
        } // end public static void Postfix()