public void Awake() { _instance = this; _loggingEnabled = Config.Bind("Logging", "Logging Enabled", false, "Enable logging"); var assetBundle = LoadAssetBundle("helheim"); Assets.HelheimTextPrefab = assetBundle.LoadAsset <GameObject>("HelheimText"); HelheimConfig = LoadJsonFile <HelheimConfig>("helheim.json"); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), PluginId); CreatureLevelControl.CreatureLevelControl.difficulty.Value = CreatureLevelControl.CreatureLevelControl.Difficulty.Custom; }
public static bool Prefix(EnvMan __instance, long sec, Heightmap.Biome biome) { if (HasEnvChanged(Helheim.HelheimLevel, biome, __instance.GetCurrentEnvironment().m_name)) { Helheim.Log($"Helheim: {Helheim.HelheimLevel}, Biome: {biome}, Current: {__instance.GetCurrentEnvironment().m_name}, Wet: {__instance.IsWet()}, Freezing: {__instance.IsFreezing()}"); } var allowBaseMethod = true; var forceSwitch = Helheim.HelheimLevel != PreviousHelheimLevel; __instance.m_firstEnv = forceSwitch; if (Helheim.HelheimLevel > 0) { var num = sec / __instance.m_environmentDuration; if (!forceSwitch && __instance.m_currentEnv.m_name.StartsWith("Helheim") && __instance.m_environmentPeriod == num && __instance.m_currentBiome == biome) { return(false); } __instance.m_environmentPeriod = num; __instance.m_currentBiome = biome; var state = Random.state; Random.InitState((int)num); var availableEnvironments = __instance.GetAvailableEnvironments(biome); if (availableEnvironments != null && availableEnvironments.Count > 0) { var biomeEnv = __instance.SelectWeightedEnvironment(availableEnvironments); var helheimEnv = GetHelheimEnvironment(__instance, biomeEnv, Helheim.HelheimLevel); __instance.QueueEnvironment(helheimEnv); Helheim.LogWarning($"Changing Environment: {helheimEnv.m_name}"); } Random.state = state; allowBaseMethod = false; } else { if (forceSwitch) { __instance.m_currentBiome = Heightmap.Biome.None; } } PreviousHelheimLevel = Helheim.HelheimLevel; PreviousBiome = biome; PreviousEnvName = __instance.GetCurrentEnvironment().m_name; return(allowBaseMethod); }
public static bool Prefix(Console __instance) { var input = __instance.m_input.text; var args = input.Split(' '); if (args.Length == 0) { return(true); } var player = Player.m_localPlayer; if (Command("helheim", args)) { var level = args.Length >= 2 ? int.Parse(args[1]) : 0; Helheim.SetLevel(level); } return(true); }