Beispiel #1
0
        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;
        }
Beispiel #2
0
            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);
            }
Beispiel #3
0
        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);
        }