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 }
[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; } }
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); } }
/// <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; }
[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()