using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using FRCSharp;
using HG;
using HG.Reflection;
using HarmonyLib;
using IL;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.UI;
using StageAesthetic.Variants;
using StageAesthetic.Variants.Stage5.SkyMeadow;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.AddressableAssets.ResourceLocators;
using UnityEngine.Networking;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;
using VariantConfig;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("StageAesthetic")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+6f1f45d3e7e409df41e848f9f6913e1a8b67dfd5")]
[assembly: AssemblyProduct("StageAesthetic")]
[assembly: AssemblyTitle("StageAesthetic")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace StageAesthetic
{
public class Assets
{
public class ReplaceInstance<T> where T : Component
{
public Func<T, bool> Condition;
public Action<T> Action;
public ReplaceInstance(Func<T, bool> condition, Action<T> action)
{
Condition = condition;
Action = action;
base..ctor();
}
public ReplaceInstance(string[] keys, Action<T> action)
: this((Func<T, bool>)((T x) => keys.Any(((Object)((Component)x).gameObject).name.Contains)), action)
{
}
}
public static Dictionary<KeyValuePair<string, Type>, object> Cache = new Dictionary<KeyValuePair<string, Type>, object>();
public static Dictionary<KeyValuePair<string, Color32>, Material> CacheRecolor = new Dictionary<KeyValuePair<string, Color32>, Material>();
public static Shader CloudRemap;
public static Shader SnowTopped;
public static PostProcessProfile GooLakeProfile;
public static Dictionary<Material, Material> CacheMaterial = new Dictionary<Material, Material>();
public static void Init()
{
foreach (IResourceLocator resourceLocator in Addressables.ResourceLocators)
{
foreach (object key in resourceLocator.Keys)
{
string text = key.ToString();
if (text.ToString().EndsWith(".mat"))
{
Load<Material>(text);
}
}
}
}
public static T Load<T>(string path)
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
KeyValuePair<string, Type> key = new KeyValuePair<string, Type>(path, typeof(T));
if (Cache.ContainsKey(key))
{
return (T)Cache[key];
}
T val = Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion();
Cache[key] = val;
return val;
}
public static Material LoadRecolor(string path, Color32 color)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
KeyValuePair<string, Color32> key = new KeyValuePair<string, Color32>(path, color);
if (CacheRecolor.ContainsKey(key))
{
return CacheRecolor[key];
}
Material val = Object.Instantiate<Material>(Load<Material>(path));
val.color = Color32.op_Implicit(color);
CacheRecolor[key] = val;
return val;
}
public static void TryDestroy(string path)
{
GameObject val = GameObject.Find(path);
if (Object.op_Implicit((Object)(object)val))
{
Object.Destroy((Object)(object)val);
}
}
public static void TryDestroy(Transform parent, string path)
{
Transform val = parent.Find(path);
if (Object.op_Implicit((Object)(object)val))
{
Object.Destroy((Object)(object)((Component)val).gameObject);
}
}
public static void MeshReplaceAll(params ReplaceInstance<MeshRenderer>[] actions)
{
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Expected O, but got Unknown
MeshRenderer[] array = Object.FindObjectsOfType(typeof(MeshRenderer)) as MeshRenderer[];
MeshRenderer[] array2 = array;
foreach (MeshRenderer val in array2)
{
if (!Object.op_Implicit((Object)(object)((Component)val).gameObject))
{
continue;
}
foreach (ReplaceInstance<MeshRenderer> replaceInstance in actions)
{
if (!replaceInstance.Condition(val))
{
continue;
}
for (int k = 0; k < ((Renderer)val).sharedMaterials.Length; k++)
{
Material val2 = ((Renderer)val).sharedMaterials[k];
Material val3 = null;
if (!Object.op_Implicit((Object)(object)val2))
{
val2 = new Material(new Shader());
}
val3 = ((!CacheMaterial.ContainsKey(val2)) ? Object.Instantiate<Material>(val2) : CacheMaterial[val2]);
((Renderer)val).sharedMaterials[k] = val3;
}
replaceInstance.Action(val);
}
}
}
public static void MeshReplaceAll(MeshRenderer mr, Material material)
{
Material[] sharedMaterials = ((Renderer)mr).sharedMaterials;
for (int i = 0; i < sharedMaterials.Length; i++)
{
sharedMaterials[i] = material;
}
((Renderer)mr).sharedMaterials = sharedMaterials;
}
public static void TryMeshReplace(MeshRenderer mr, Material material)
{
if (Object.op_Implicit((Object)(object)((mr != null) ? ((Renderer)mr).sharedMaterial : null)))
{
((Renderer)mr).sharedMaterial = material;
}
}
public static void ReplaceAll<T>(params ReplaceInstance<T>[] actions) where T : Component
{
T[] array = Object.FindObjectsOfType(typeof(T)) as T[];
T[] array2 = array;
foreach (T val in array2)
{
if (!Object.op_Implicit((Object)(object)((Component)val).gameObject))
{
continue;
}
foreach (ReplaceInstance<T> replaceInstance in actions)
{
if (replaceInstance.Condition(val))
{
replaceInstance.Action(val);
}
}
}
}
}
public class ConfigManager
{
public static ConfigFile Config;
public static ConfigFile BackupConfig;
public static ConfigEntry<bool> AutoUpdate;
public static void Init()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
Config = new ConfigFile(Path.Combine(Paths.ConfigPath, "HIFU.StageAesthetic.cfg"), true);
BackupConfig = new ConfigFile(Path.Combine(Paths.ConfigPath, "HIFU.StageAesthetic.Backup.cfg"), true);
AutoUpdate = Config.Bind<bool>("Config", "Enable Auto Config Sync", true, "disable this to keep all default value as is instead of auto updating to future versions (manually changed value will not change regardless)");
BackupConfig.Bind<string>(": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :");
Sprite val = Main.AssetBundle.LoadAsset<Sprite>("texModIcon.png");
ModSettingsManager.SetModIcon(val, "StageAesthetic.TabID", "Stage Aesthetics");
foreach (object value in Enum.GetValues(typeof(Stage)))
{
Stage stage = (Stage)value;
ModSettingsManager.SetModIcon(val, $"StageAesthetic.TabID.{(int)stage}", $"SA: {stage}");
}
}
public static ConfigEntry<T> Bind<T>(string category, string name, T def, string desc)
{
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: Expected O, but got Unknown
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Expected O, but got Unknown
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Expected O, but got Unknown
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Expected O, but got Unknown
//IL_0154: Unknown result type (might be due to invalid IL or missing references)
//IL_0159: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Expected O, but got Unknown
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Expected O, but got Unknown
ConfigEntry<T> val = Config.Bind<T>(Util.ConfigSafe(category), Util.ConfigSafe(name), def, desc);
ConfigEntry<T> val2 = BackupConfig.Bind<T>(Util.ConfigSafe(category), Util.ConfigSafe(name), def, desc);
if (AutoUpdate.Value && ((ConfigEntryBase)val2).BoxedValue == ((ConfigEntryBase)val).BoxedValue && ((ConfigEntryBase)val2).DefaultValue != ((ConfigEntryBase)val2).BoxedValue)
{
Main.Log.LogInfo((object)("Default Config Auto-Updated for " + (object)val));
((ConfigEntryBase)val).BoxedValue = ((ConfigEntryBase)val).DefaultValue;
((ConfigEntryBase)val2).BoxedValue = ((ConfigEntryBase)val2).DefaultValue;
}
int num = category.Occurance(':');
string text = "StageAesthetic.TabID";
string text2 = "Stage Aesthetics";
if (num != 0)
{
Stage stage = (Stage)num;
text = "StageAesthetic.TabID." + num;
text2 = "SA: " + stage;
}
BaseOption val3 = null;
if (!(val is ConfigEntry<bool> val4))
{
if (!(val is ConfigEntry<float> val5))
{
if (val is ConfigEntry<EnableConfig> val6)
{
val3 = (BaseOption)new ChoiceOption((ConfigEntryBase)(object)val6, new ChoiceConfig
{
restartRequired = false
});
}
else
{
Main.Log.LogWarning((object)("Undefined Config Type " + typeof(T).Name + ", not added to ROO"));
}
}
else
{
val3 = (BaseOption)new SliderOption(val5, new SliderConfig
{
min = 0f,
max = 10f,
restartRequired = false,
FormatString = "{0}"
});
}
}
else
{
val3 = (BaseOption)new CheckBoxOption(val4, new CheckBoxConfig
{
restartRequired = false
});
}
if (val3 != null)
{
ModSettingsManager.AddOption(val3, text, text2);
}
return val;
}
}
public class Hooks : NetworkBehaviour
{
public class HookClient : INetMessage, ISerializableObject
{
public string variant;
public HookClient(string variant)
{
this.variant = variant;
base..ctor();
}
public HookClient()
: this("")
{
}
public void Serialize(NetworkWriter writer)
{
writer.Write(variant);
}
public void Deserialize(NetworkReader reader)
{
variant = reader.ReadString();
}
public void OnReceived()
{
if (!string.IsNullOrWhiteSpace(variant) && !NetworkServer.active)
{
RollVariantInternal(SceneCatalog.currentSceneDef.cachedName, variant);
}
}
}
public static Dictionary<string, string> SceneNames = new Dictionary<string, string>();
public static Dictionary<string, Stage> SceneStage = new Dictionary<string, Stage>();
public static ConfigEntry<bool> DisplayVariantName;
public static ConfigEntry<bool> AvoidDuplicateVariants;
public static string currentVariantName = "";
public static void Init()
{
Main.Log.LogInfo((object)"init");
Assets.CloudRemap = Assets.Load<Shader>("RoR2/Base/Shaders/HGCloudRemap.shader");
Assets.SnowTopped = Assets.Load<Shader>("RoR2/Base/Shaders/HGSnowTopped.shader");
Assets.GooLakeProfile = Assets.Load<PostProcessProfile>("RoR2/Base/title/PostProcessing/ppSceneGoolake.asset");
TitleScreen.Init();
Weather.Init();
DisplayVariantName = ConfigManager.Bind("General", "Display Variant Name", def: true, "Display the variant name in the stage text.");
AvoidDuplicateVariants = ConfigManager.Bind("General", "Avoid Duplicate Variants", def: true, "Remove the variant from the pool once it is rolled until all variant for that stage is rolled.");
Common.AddHook();
foreach (Type item in Util.FindAllDerivedTypes<Variant>())
{
item.GetConstructor(Array.Empty<Type>()).Invoke(null);
}
NetworkingAPI.RegisterMessageType<HookClient>();
}
public static void PostInit()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
Main.Log.LogInfo((object)"Postinit");
Assets.Init();
for (int i = 1; i <= 5; i++)
{
SceneCollection val = Assets.Load<SceneCollection>("RoR2/Base/SceneGroups/sgStage" + i + ".asset");
Enumerator<SceneEntry> enumerator = val.sceneEntries.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
SceneEntry current = enumerator.Current;
SceneStage[current.sceneDef.cachedName] = (Stage)i;
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
}
string[] array = new string[6] { "moon", "moon2", "voidraid", "mysteryspace", "limbo", "BulwarksHaunt_GhostWave" };
foreach (string key in array)
{
SceneStage[key] = Stage.Ending;
}
Enumerator<SceneDef> enumerator2 = SceneCatalog.allStageSceneDefs.GetEnumerator();
try
{
while (enumerator2.MoveNext())
{
SceneDef current2 = enumerator2.Current;
SceneNames[current2.cachedName] = Language.GetString(current2.nameToken).Replace(": ", " - ");
if (!SceneStage.ContainsKey(current2.cachedName))
{
SceneStage[current2.cachedName] = Stage.Special;
}
}
}
finally
{
((IDisposable)enumerator2).Dispose();
}
foreach (Variant variant in Variant.Variants)
{
variant.InitConfig();
}
}
public static void RollVariant(orig_Start orig, SceneDirector self)
{
if (NetworkServer.active)
{
RollVariantInternal();
}
orig.Invoke(self);
}
public static Variant RollVariantInternal(string forceScene = "", string forceVariant = "")
{
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
currentVariantName = "";
Common.MaulingRockOverride = null;
Common.Rocks = new Dictionary<GameObject, GameObject>();
foreach (Material value in Assets.CacheMaterial.Values)
{
Object.Destroy((Object)(object)value);
}
Assets.CacheMaterial.Clear();
string text;
if (!string.IsNullOrWhiteSpace(forceScene))
{
text = forceScene;
}
else
{
Scene activeScene = SceneManager.GetActiveScene();
text = ((Scene)(ref activeScene)).name;
}
string text2 = text;
SceneInfo instance = SceneInfo.instance;
PostProcessVolume val = ((instance != null) ? ((Component)instance).GetComponent<PostProcessVolume>() : null);
string[] array = new string[4] { "PP + Amb", "PP, Global", "GlobalPostProcessVolume, Base", "PP+Amb" };
string[] array2 = array;
foreach (string name in array2)
{
val = TryAlternative(val, name);
}
PostProcessVolume volume = val;
GameObject obj = GameObject.Find("MapZones");
object alt;
if (obj == null)
{
alt = null;
}
else
{
Transform transform = obj.transform;
if (transform == null)
{
alt = null;
}
else
{
Transform obj2 = transform.Find("PostProcess Zones");
if (obj2 == null)
{
alt = null;
}
else
{
Transform obj3 = obj2.Find("SandOvercast");
alt = ((obj3 != null) ? ((Component)obj3).gameObject : null);
}
}
}
val = TryAlternative(volume, (GameObject)alt);
PostProcessVolume volume2 = val;
GameObject obj4 = GameObject.Find("MapZones");
object alt2;
if (obj4 == null)
{
alt2 = null;
}
else
{
Transform transform2 = obj4.transform;
if (transform2 == null)
{
alt2 = null;
}
else
{
Transform obj5 = transform2.Find("PostProcess Zones");
if (obj5 == null)
{
alt2 = null;
}
else
{
Transform obj6 = obj5.Find("Sandstorm");
alt2 = ((obj6 != null) ? ((Component)obj6).gameObject : null);
}
}
}
val = TryAlternative(volume2, (GameObject)alt2);
if (!Object.op_Implicit((Object)(object)val) && text2 == "moon2")
{
val = ((Component)instance).gameObject.AddComponent<PostProcessVolume>();
val.profile.AddSettings<RampFog>();
((Behaviour)val).enabled = true;
val.isGlobal = true;
val.priority = 9999f;
}
if (!Object.op_Implicit((Object)(object)val) || !((Behaviour)val).isActiveAndEnabled)
{
Main.Log.LogWarning((object)"PPV Not Found, skipping");
return Variant.Vanilla;
}
RampFog setting = val.profile.GetSetting<RampFog>();
ColorGrading cgrade = val.profile.GetSetting<ColorGrading>() ?? val.profile.AddSettings<ColorGrading>();
Run instance2 = Run.instance;
bool loop = ((instance2 != null && instance2.loopClearCount != 0) ? 1 : 0) > (false ? 1 : 0);
Variant variant = (string.IsNullOrWhiteSpace(forceVariant) ? Variant.GetVariant(text2, loop) : Variant.GetVariant(text2, forceVariant));
if (NetworkServer.active)
{
NetMessageExtensions.Send((INetMessage)(object)new HookClient(variant.Name), (NetworkDestination)1);
}
if (string.IsNullOrWhiteSpace(forceVariant))
{
currentVariantName = variant.Name;
((Object)val.profile).name = "SA Profile (" + variant.Name + ")";
}
try
{
variant.Apply(text2, setting, cgrade, val, loop);
}
catch (Exception ex)
{
Main.Log.LogError((object)ex);
Main.Log.LogWarning((object)"Variant application failed! some stuff may look weird...");
}
currentVariantName = ((variant == Variant.Vanilla) ? "" : variant.Name);
return variant;
}
public static void AppendStageToken(orig_Start orig, AssignStageToken self)
{
orig.Invoke(self);
if (DisplayVariantName.Value && currentVariantName != "")
{
TextMeshProUGUI titleText = self.titleText;
((TMP_Text)titleText).text = ((TMP_Text)titleText).text + " (" + currentVariantName + ")";
}
}
public static PostProcessVolume TryAlternative(PostProcessVolume volume, string name)
{
return TryAlternative(volume, GameObject.Find(name));
}
public static PostProcessVolume TryAlternative(PostProcessVolume volume, GameObject alt)
{
if (Object.op_Implicit((Object)(object)volume) && ((Behaviour)volume).isActiveAndEnabled)
{
return volume;
}
if (Object.op_Implicit((Object)(object)alt))
{
return alt.GetComponent<PostProcessVolume>();
}
return null;
}
}
[BepInPlugin("HIFU", "StageAesthetic", "1.1.11")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Main : BaseUnityPlugin
{
[CompilerGenerated]
private static class <>O
{
public static Action <0>__PostInit;
public static hook_Start <1>__RollVariant;
public static hook_Start <2>__AppendStageToken;
}
public const string PluginGUID = "HIFU.StageAesthetic";
public const string PluginAuthor = "HIFU";
public const string PluginName = "StageAesthetic";
public const string PluginVersion = "1.1.11";
public static ManualLogSource Log;
public static PluginInfo pluginInfo;
public static ConfigFile Config;
public static Harmony Harmony;
public static Main Instance;
private static AssetBundle _assetBundle;
public static AssetBundle AssetBundle
{
get
{
if ((Object)(object)_assetBundle == (Object)null)
{
_assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(pluginInfo.Location), "stageaesthetic"));
}
return _assetBundle;
}
}
public void Awake()
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Expected O, but got Unknown
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Expected O, but got Unknown
Instance = this;
pluginInfo = ((BaseUnityPlugin)this).Info;
Log = ((BaseUnityPlugin)this).Logger;
Harmony = new Harmony("HIFU.StageAesthetic");
ConfigManager.Init();
Hooks.Init();
RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(Hooks.PostInit));
object obj = <>O.<1>__RollVariant;
if (obj == null)
{
hook_Start val = Hooks.RollVariant;
<>O.<1>__RollVariant = val;
obj = (object)val;
}
SceneDirector.Start += (hook_Start)obj;
object obj2 = <>O.<2>__AppendStageToken;
if (obj2 == null)
{
hook_Start val2 = Hooks.AppendStageToken;
<>O.<2>__AppendStageToken = val2;
obj2 = (object)val2;
}
AssignStageToken.Start += (hook_Start)obj2;
}
}
public class Skybox
{
private static readonly PostProcessProfile ppHelminth = Addressables.LoadAssetAsync<PostProcessProfile>((object)"RoR2/DLC2/helminthroost/ppSceneHelminth.asset").WaitForCompletion();
private static readonly PostProcessProfile ppScorched = Addressables.LoadAssetAsync<PostProcessProfile>((object)"RoR2/Base/title/PostProcessing/ppSceneWispGraveyard.asset").WaitForCompletion();
private static readonly PostProcessProfile ppPlainsRoost = Object.Instantiate<PostProcessProfile>(Addressables.LoadAssetAsync<PostProcessProfile>((object)"RoR2/Base/title/PostProcessing/ppSceneGolemplainsFoggy.asset").WaitForCompletion());
private static readonly PostProcessProfile ppSunset = Addressables.LoadAssetAsync<PostProcessProfile>((object)"RoR2/Base/title/PostProcessing/ppSceneWispGraveyard.asset").WaitForCompletion();
private static readonly PostProcessProfile ppSick = Addressables.LoadAssetAsync<PostProcessProfile>((object)"RoR2/Base/title/PostProcessing/ppSceneMysterySpace.asset").WaitForCompletion();
public static readonly Material sunMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/ancientloft/matAncientLoft_Sun.mat").WaitForCompletion();
private static readonly Material sunsetSkyboxMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/bazaar/matSkybox4.mat").WaitForCompletion();
private static readonly Material spaceSkyboxMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/sulfurpools/matSkyboxSP.mat").WaitForCompletion();
private static readonly Material spaceStarsMat2 = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/eclipseworld/matEclipseStarsSpheres.mat").WaitForCompletion();
private static readonly GameObject eclipseSkybox = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/eclipseworld/Weather, Eclipse.prefab").WaitForCompletion(), "SAEclipseSkybox", false);
private static readonly GameObject noBullshitSkybox = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/eclipseworld/Weather, Eclipse.prefab").WaitForCompletion(), "SAEclipseSkybox", false);
private static readonly GameObject planetariumSkybox = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/voidraid/Weather, Void Raid Starry Night Variant.prefab").WaitForCompletion(), "SADaySkybox", false);
private static readonly GameObject voidStageSkybox = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/voidstage/Weather, Void Stage.prefab").WaitForCompletion(), "SAVoidSkybox", false);
public static readonly GameObject sun = PrefabAPI.InstantiateClone(((Component)Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/ancientloft/mdlAncientLoft_Terrain.fbx").WaitForCompletion().transform.GetChild(5).GetChild(0)).gameObject, "SASun", false);
public static void SunnyDistantRoostSky()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Expected O, but got Unknown
//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0201: Expected O, but got Unknown
GameObject val = Object.Instantiate<GameObject>(planetariumSkybox, Vector3.zero, Quaternion.identity);
PostProcessProfile val2 = Object.Instantiate<PostProcessProfile>(ppPlainsRoost);
RampFog setting = val2.GetSetting<RampFog>();
((ParameterOverride<Color>)(object)setting.fogColorStart).value = Color32.op_Implicit(new Color32((byte)53, (byte)66, (byte)82, (byte)18));
((ParameterOverride<Color>)(object)setting.fogColorMid).value = Color32.op_Implicit(new Color32((byte)103, (byte)67, (byte)64, (byte)154));
((ParameterOverride<Color>)(object)setting.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)146, (byte)176, byte.MaxValue, byte.MaxValue));
((ParameterOverride<float>)(object)setting.fogOne).value = 0.2f;
((ParameterOverride<float>)(object)setting.fogZero).value = -0.05f;
((Component)val.transform.GetChild(0)).GetComponent<PostProcessVolume>().profile = val2;
SetAmbientLight component = ((Component)val.transform.GetChild(0)).GetComponent<SetAmbientLight>();
component.skyboxMaterial = spaceSkyboxMat;
component.ambientIntensity = 0.75f;
component.ApplyLighting();
((Component)val.transform.GetChild(1)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(2)).gameObject.SetActive(false);
((Renderer)((Component)val.transform.GetChild(4).GetChild(0)).GetComponent<MeshRenderer>()).sharedMaterials = (Material[])(object)new Material[2] { spaceSkyboxMat, spaceStarsMat2 };
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(6)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(11)).gameObject.SetActive(false);
foreach (Transform item in ((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)).transform)
{
Transform val3 = item;
foreach (Transform item2 in val3)
{
Transform val4 = item2;
if (((Object)((Component)val4).gameObject).name.Contains("Opaque") || ((Object)((Component)val4).gameObject).name.Contains("Moon") || ((Object)((Component)val4).gameObject).name.Contains("Rings"))
{
((Component)val4).gameObject.SetActive(false);
}
}
}
}
public static void DaySky()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0275: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Expected O, but got Unknown
//IL_028e: Unknown result type (might be due to invalid IL or missing references)
//IL_0295: Expected O, but got Unknown
GameObject val = Object.Instantiate<GameObject>(planetariumSkybox, Vector3.zero, Quaternion.identity);
Scene activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "snowyforest"))
{
activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "foggyswamp"))
{
activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "frozenwall"))
{
activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "skymeadow"))
{
((Component)val.transform.GetChild(0)).GetComponent<PostProcessVolume>().profile = ppPlainsRoost;
goto IL_00ac;
}
}
}
}
Object.Destroy((Object)(object)((Component)val.transform.GetChild(0)).GetComponent<PostProcessVolume>());
goto IL_00ac;
IL_00ac:
RampFog setting = ppPlainsRoost.GetSetting<RampFog>();
((ParameterOverride<Color>)(object)setting.fogColorStart).value = Color32.op_Implicit(new Color32((byte)127, (byte)127, (byte)153, (byte)25));
((ParameterOverride<Color>)(object)setting.fogColorMid).value = Color32.op_Implicit(new Color32((byte)0, (byte)106, (byte)145, (byte)150));
((ParameterOverride<Color>)(object)setting.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)0, (byte)115, (byte)119, byte.MaxValue));
((ParameterOverride<float>)(object)setting.fogZero).value = -0.01f;
((ParameterOverride<float>)(object)setting.fogOne).value = 0.15f;
((ParameterOverride<float>)(object)setting.fogPower).value = 2f;
((ParameterOverride<float>)(object)setting.skyboxStrength).value = 0.1f;
SetAmbientLight component = ((Component)val.transform.GetChild(0)).GetComponent<SetAmbientLight>();
component.skyboxMaterial = spaceSkyboxMat;
component.ambientIntensity = 1f;
component.ApplyLighting();
((Component)val.transform.GetChild(1)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(2)).gameObject.SetActive(false);
((Renderer)((Component)val.transform.GetChild(4).GetChild(0)).GetComponent<MeshRenderer>()).sharedMaterials = (Material[])(object)new Material[2] { spaceSkyboxMat, spaceStarsMat2 };
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(6)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(11)).gameObject.SetActive(false);
foreach (Transform item in ((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)).transform)
{
Transform val2 = item;
foreach (Transform item2 in val2)
{
Transform val3 = item2;
if (((Object)((Component)val3).gameObject).name.Contains("Opaque") || ((Object)((Component)val3).gameObject).name.Contains("Moon") || ((Object)((Component)val3).gameObject).name.Contains("Rings"))
{
((Component)val3).gameObject.SetActive(false);
}
}
}
}
public static void SunsetSky()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
//IL_0457: Unknown result type (might be due to invalid IL or missing references)
//IL_0476: Unknown result type (might be due to invalid IL or missing references)
//IL_0495: Unknown result type (might be due to invalid IL or missing references)
//IL_03ef: Unknown result type (might be due to invalid IL or missing references)
//IL_040e: Unknown result type (might be due to invalid IL or missing references)
//IL_042d: Unknown result type (might be due to invalid IL or missing references)
//IL_04d0: Unknown result type (might be due to invalid IL or missing references)
//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
//IL_05bc: Unknown result type (might be due to invalid IL or missing references)
//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
//IL_061d: Unknown result type (might be due to invalid IL or missing references)
//IL_063c: Unknown result type (might be due to invalid IL or missing references)
//IL_0554: Unknown result type (might be due to invalid IL or missing references)
//IL_0573: Unknown result type (might be due to invalid IL or missing references)
//IL_0592: Unknown result type (might be due to invalid IL or missing references)
//IL_0351: Unknown result type (might be due to invalid IL or missing references)
//IL_0370: Unknown result type (might be due to invalid IL or missing references)
//IL_038f: Unknown result type (might be due to invalid IL or missing references)
//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
((Renderer)sun.GetComponent<MeshRenderer>()).sharedMaterial = sunMat;
GameObject val = Object.Instantiate<GameObject>(planetariumSkybox, Vector3.zero, Quaternion.identity);
GameObject val2 = null;
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name != "ancientloft")
{
val2 = Object.Instantiate<GameObject>(sun, val.transform);
}
((Component)val.transform.GetChild(0)).GetComponent<PostProcessVolume>().profile = ppScorched;
activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "ancientloft")
{
((Component)val.transform.GetChild(1)).GetComponent<Light>().color = new Color(0.75f, 0.25f, 0.25f);
}
else
{
activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "shipgraveyard")
{
((Component)val.transform.GetChild(1)).GetComponent<Light>().color = new Color(1f, 0.75f, 0.75f);
}
else
{
((Component)val.transform.GetChild(1)).GetComponent<Light>().color = new Color(1f, 0.5f, 0.5f);
}
}
((Component)val.transform.GetChild(1)).GetComponent<Light>().intensity = 2f;
activeScene = SceneManager.GetActiveScene();
switch (((Scene)(ref activeScene)).name)
{
case "snowyforest":
((Component)val.transform.GetChild(1)).gameObject.SetActive(false);
val2.transform.localPosition = new Vector3(-225f, 600f, -500f);
val2.transform.rotation = Quaternion.Euler(0f, 90f, 0f);
break;
case "golemplains":
((Component)val.transform.GetChild(1)).GetComponent<Light>().intensity = 3f;
((Component)val.transform.GetChild(1)).GetComponent<Light>().shadowStrength = 0.75f;
val.transform.GetChild(1).rotation = Quaternion.Euler(40f, 90f, 211f);
val2.transform.localPosition = new Vector3(-500f, 0f, -500f);
val2.transform.rotation = Quaternion.Euler(0f, 180f, 0f);
break;
case "golemplains2":
((Component)val.transform.GetChild(1)).GetComponent<Light>().intensity = 3f;
((Component)val.transform.GetChild(1)).GetComponent<Light>().shadowStrength = 0.75f;
val.transform.GetChild(1).rotation = Quaternion.Euler(40f, 180f, 211f);
val2.transform.localPosition = new Vector3(500f, 300f, 2000f);
val2.transform.rotation = Quaternion.Euler(0f, 270f, 0f);
break;
case "goolake":
val.transform.GetChild(1).rotation = Quaternion.Euler(40f, 330f, 211f);
val2.transform.localPosition = new Vector3(500f, 100f, -250f);
val2.transform.rotation = Quaternion.Euler(0f, 30f, 0f);
break;
case "foggyswamp":
((Component)val.transform.GetChild(1)).gameObject.SetActive(false);
val2.transform.localPosition = new Vector3(1000f, 0f, -1000f);
val2.transform.rotation = Quaternion.Euler(0f, 80f, 0f);
break;
case "wispgraveyard":
((Component)val.transform.GetChild(1)).GetComponent<Light>().intensity = 3f;
((Component)val.transform.GetChild(1)).GetComponent<Light>().shadowStrength = 0.75f;
break;
case "frozenwall":
val.transform.GetChild(1).rotation = Quaternion.Euler(40f, 90f, 211f);
val2.transform.localPosition = new Vector3(-3000f, 100f, -30f);
val2.transform.rotation = Quaternion.Euler(0f, 180f, 0f);
break;
case "ancientloft":
val.transform.GetChild(1).eulerAngles = new Vector3(60f, 90f, 0f);
((Component)val.transform.GetChild(1)).GetComponent<Light>().intensity = 3f;
break;
case "shipgraveyard":
val.transform.GetChild(1).rotation = Quaternion.Euler(30f, 0f, 0f);
val2.transform.localPosition = new Vector3(-1000f, 350f, -1000f);
val2.transform.rotation = Quaternion.Euler(0f, 80f, 0f);
break;
}
SetAmbientLight component = ((Component)val.transform.GetChild(0)).GetComponent<SetAmbientLight>();
component.skyboxMaterial = sunsetSkyboxMat;
component.ambientIntensity = 1f;
component.ApplyLighting();
((Component)val.transform.GetChild(4).GetChild(0).GetChild(2)).gameObject.SetActive(false);
((Renderer)((Component)val.transform.GetChild(4).GetChild(0)).GetComponent<MeshRenderer>()).sharedMaterials = (Material[])(object)new Material[1] { sunsetSkyboxMat };
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(6)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)
.GetChild(11)).gameObject.SetActive(false);
((Component)val.transform.GetChild(4).GetChild(0).GetChild(1)).gameObject.SetActive(false);
}
public static void NightSkyNoBullshit(bool moon = true)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
GameObject val = Object.Instantiate<GameObject>(noBullshitSkybox, Vector3.zero, Quaternion.identity);
Transform transform = val.transform;
((Component)transform.GetChild(0)).gameObject.SetActive(false);
((Component)transform.GetChild(1)).gameObject.SetActive(false);
((Component)transform.GetChild(2)).gameObject.SetActive(false);
((Component)transform.GetChild(3).Find("Sphere, Moon")).gameObject.SetActive(moon);
}
public static void NightSky(bool fuckOffPP = false, bool fuckOffLight = false, float sunLightIntensity = 100f)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
GameObject val = Object.Instantiate<GameObject>(eclipseSkybox, Vector3.zero, Quaternion.identity);
Light component = ((Component)val.transform.GetChild(1)).GetComponent<Light>();
if (fuckOffPP)
{
((Component)val.transform.GetChild(2)).GetComponent<PostProcessVolume>().weight = 0f;
}
if (fuckOffLight)
{
((Component)val.transform.GetChild(1)).gameObject.SetActive(false);
}
component.color = new Color(0.8f, 0.8f, 1f, 1f);
Scene activeScene = SceneManager.GetActiveScene();
string name = ((Scene)(ref activeScene)).name;
if (name == "dampcavesimple")
{
component.intensity = 1.25f;
}
else if (name == "moon2")
{
component.intensity = 0.25f;
}
else
{
component.intensity = 1f;
}
component.shadowStrength = 0.5f;
((Component)val.transform.GetChild(2)).GetComponent<PostProcessVolume>().profile = ppSick;
if (name == "moon2")
{
((Component)val.transform.GetChild(2)).GetComponent<PostProcessVolume>().priority = 9999f;
}
SetAmbientLight component2 = ((Component)val.transform.GetChild(2)).GetComponent<SetAmbientLight>();
if (name == "blackbeach" || name == "blackbeach2")
{
component2.ambientIntensity = 1.25f;
}
else
{
component2.ambientIntensity = 1f;
}
switch (name)
{
case "frozenwall":
case "snowyforest":
case "moon2":
component2.ambientIntensity = 0.5f;
break;
}
if (sunLightIntensity <= 5f)
{
component.intensity = sunLightIntensity;
}
component2.ApplyLighting();
((Component)val.transform.GetChild(0)).GetComponent<ReflectionProbe>().Reset();
((Component)val.transform.GetChild(3).GetChild(2)).gameObject.SetActive(true);
}
public static void VoidSky()
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
GameObject val = GameObject.Find("Directional Light (SUN)");
GameObject val2 = GameObject.Find("Reflection Probe");
if (Object.op_Implicit((Object)(object)val))
{
val.SetActive(false);
}
if (Object.op_Implicit((Object)(object)val2))
{
val2.SetActive(false);
}
Scene activeScene = SceneManager.GetActiveScene();
string name = ((Scene)(ref activeScene)).name;
GameObject val3 = Object.Instantiate<GameObject>(voidStageSkybox, Vector3.zero, Quaternion.identity);
switch (name)
{
case "lakes":
val3.transform.eulerAngles = new Vector3(45f, 180f, 180f);
break;
case "blackbeach":
val3.transform.eulerAngles = new Vector3(30f, 0f, 220f);
break;
case "snowyforest":
val3.transform.eulerAngles = new Vector3(0f, 100f, 140f);
break;
case "sulfurpools":
val3.transform.eulerAngles = new Vector3(0f, 180f, 140f);
break;
default:
val3.transform.Rotate(new Vector3(180f, 0f, 0f));
break;
}
if (name == "goolake")
{
((Component)val3.transform.GetChild(0).GetChild(1)).GetComponent<Light>().intensity = 3f;
}
else if (name == "sulfurpools")
{
((Component)val3.transform.GetChild(0).GetChild(1)).GetComponent<Light>().intensity = 1.5f;
}
else
{
((Component)val3.transform.GetChild(0).GetChild(1)).GetComponent<Light>().intensity = 1f;
}
SetAmbientLight component = ((Component)val3.transform.GetChild(0).GetChild(0)).GetComponent<SetAmbientLight>();
activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name != "frozenwall")
{
activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name != "snowyforest")
{
component.ambientIntensity = 0.75f;
goto IL_021f;
}
}
component.ambientIntensity = 1f;
goto IL_021f;
IL_021f:
component.ApplyLighting();
}
public static void SingularitySky()
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
GameObject val = GameObject.Find("Directional Light (SUN)");
GameObject val2 = GameObject.Find("Reflection Probe");
if (Object.op_Implicit((Object)(object)val))
{
val.SetActive(false);
}
if (Object.op_Implicit((Object)(object)val2))
{
val2.SetActive(false);
}
GameObject val3 = Object.Instantiate<GameObject>(voidStageSkybox, Vector3.zero, Quaternion.identity);
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name != "wispgraveyard")
{
val3.transform.Rotate(new Vector3(0f, 0f, 70f));
val3.transform.GetChild(0).GetChild(1).localRotation = Quaternion.Euler(0f, 280f, 180f);
}
else
{
val3.transform.Rotate(new Vector3(60f, 0f, 0f));
val3.transform.GetChild(0).GetChild(1).localRotation = Quaternion.Euler(60f, 0f, 0f);
}
((Component)val3.transform.GetChild(0).GetChild(1)).GetComponent<Light>().intensity = 2f;
SetAmbientLight component = ((Component)val3.transform.GetChild(0).GetChild(0)).GetComponent<SetAmbientLight>();
component.ambientIntensity = 1f;
component.ApplyLighting();
}
}
public class TitleScreen
{
public static ConfigEntry<bool> Enable;
public static void Init()
{
Enable = ConfigManager.Bind("General", "Alter title screen?", def: true, "Adds rain, patches of grass, particles and brings a Commando closer to focus.");
SceneManager.sceneLoaded += Hook;
}
public static void Hook(Scene scene, LoadSceneMode mode)
{
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
if (!(((Scene)(ref scene)).name != "title") && Enable.Value)
{
Transform transform = GameObject.Find("MainMenu").transform;
Transform transform2 = GameObject.Find("HOLDER: Title Background").transform;
((Component)transform2.Find("Terrain")).gameObject.SetActive(true);
((Component)transform2.Find("CamDust")).gameObject.SetActive(true);
ParticleSystem component = ((Component)transform.Find("MENU: Title").Find("World Position").Find("CameraPositionMarker")
.Find("Rain")).gameObject.GetComponent<ParticleSystem>();
EmissionModule emission = component.emission;
MinMaxCurve rateOverTime = ((EmissionModule)(ref emission)).rateOverTime;
MinMaxCurve rateOverTime2 = default(MinMaxCurve);
((MinMaxCurve)(ref rateOverTime2)).constant = 100f;
((MinMaxCurve)(ref rateOverTime2)).constantMax = 100f;
((MinMaxCurve)(ref rateOverTime2)).constantMin = 60f;
((MinMaxCurve)(ref rateOverTime2)).curve = ((MinMaxCurve)(ref rateOverTime)).curve;
((MinMaxCurve)(ref rateOverTime2)).curveMax = ((MinMaxCurve)(ref rateOverTime)).curveMax;
((MinMaxCurve)(ref rateOverTime2)).curveMin = ((MinMaxCurve)(ref rateOverTime)).curveMax;
((MinMaxCurve)(ref rateOverTime2)).curveMultiplier = ((MinMaxCurve)(ref rateOverTime)).curveMultiplier;
((MinMaxCurve)(ref rateOverTime2)).mode = ((MinMaxCurve)(ref rateOverTime)).mode;
((EmissionModule)(ref emission)).rateOverTime = rateOverTime2;
ColorOverLifetimeModule colorOverLifetime = component.colorOverLifetime;
((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled = false;
transform.Find("MENU: Title").Find("World Position").Find("CameraPositionMarker")
.Find("Rain")
.eulerAngles = new Vector3(80f, 90f, 0f);
WindZone component2 = ((Component)GameObject.Find("HOLDER: Title Background").transform.Find("FX").Find("WindZone")).gameObject.GetComponent<WindZone>();
component2.windMain = 0.5f;
component2.windTurbulence = 1f;
Weather.StopSounds();
Weather.PlaySound(SoundType.Wind);
}
}
}
public static class Util
{
public static T? TryFind<T>(this IEnumerable<T> arr, Predicate<T> match)
{
List<T> list = arr.ToList();
int num = list.FindIndex(match);
if (num == -1)
{
return default(T);
}
return list[num];
}
public static int Occurance(this string str, char c)
{
return str.Occurance(c.ToString());
}
public static int Occurance(this string str, string substr)
{
int num = 0;
int num2 = str.IndexOf(substr);
int num3 = 0;
while (num2 != -1)
{
num3 = num2 + 1;
num++;
num2 = str.IndexOf(substr, num3);
}
return num;
}
public static List<Type> FindAllDerivedTypes<T>()
{
return FindAllDerivedTypes<T>(Assembly.GetAssembly(typeof(T)));
}
public static List<Type> FindAllDerivedTypes<T>(Assembly assembly)
{
Type baseType = typeof(T);
return (from t in assembly.GetTypes()
where t != baseType && baseType.IsAssignableFrom(t)
select t).ToList();
}
public static Transform GetDescendant(this Transform parent, params int[] idx)
{
Transform val = parent;
foreach (int num in idx)
{
val = val.GetChild(num);
}
return val;
}
public static string ConfigSafe(string e)
{
return e.Replace("\n", " ").Replace("\t", " ").Replace("\n", "")
.Replace("\\", "/")
.Replace("\"", "``")
.Replace("'", "`")
.Replace("[", "(")
.Replace("]", ")");
}
}
public enum Stage
{
Stage1 = 1,
Stage2,
Stage3,
Stage4,
Stage5,
Special,
Ending
}
public class Weather
{
public struct WeatherData
{
public float magnitudeMin;
public float magnitudeMax;
public float speedMin;
public float speedMax;
public float angleMin;
public float angleMax;
public readonly float Magnitude => (Run.instance?.runRNG ?? RoR2Application.rng).RangeFloat(magnitudeMin, magnitudeMax);
public readonly float Speed => (Run.instance?.runRNG ?? RoR2Application.rng).RangeFloat(speedMin, speedMax);
public readonly float Angle => (Run.instance?.runRNG ?? RoR2Application.rng).RangeFloat(angleMin, angleMax);
public WeatherData(float magnitudeMin, float magnitudeMax, float speedMin, float speedMax, float angle)
{
this.magnitudeMin = magnitudeMin;
this.magnitudeMax = magnitudeMax;
this.speedMin = speedMin;
this.speedMax = speedMax;
angleMin = angle;
angleMax = angle;
}
}
public static GameObject Rain;
public static GameObject Snow;
public static GameObject Sand;
public static ConfigEntry<EnableConfig> WeatherEnable;
public static ConfigEntry<bool> WeatherSound;
public static void Init()
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
Rain = Main.AssetBundle.LoadAsset<GameObject>("Stage Aesthetic Rain.prefab");
Rain.transform.eulerAngles = new Vector3(90f, 0f, 0f);
Snow = Main.AssetBundle.LoadAsset<GameObject>("Stage Aesthetic Snow.prefab");
Snow.transform.eulerAngles = new Vector3(90f, 0f, 0f);
Sand = Main.AssetBundle.LoadAsset<GameObject>("Stage Aesthetic Sand.prefab");
WeatherEnable = ConfigManager.Bind("General", "Global Weather Enable", EnableConfig.Enable, "Adds/swaps rain/snow/sand for stages. Disabling this is recommended if performance is a big issue. Starstorm 2 compatibility coming soon.");
WeatherSound = ConfigManager.Bind("General", "Use weather sound effects?", def: true, "Adds sound effects for weather.");
}
public static void PlaySound(SoundType soundType)
{
if (WeatherSound.Value)
{
string text;
switch (soundType)
{
case SoundType.None:
return;
case SoundType.DayNature:
text = "Play_SA_birds";
break;
case SoundType.Rain:
text = "Play_SA_rain";
break;
case SoundType.Thunder:
text = "Play_SA_thunder";
break;
case SoundType.NightNature:
text = "Play_SA_night";
break;
case SoundType.WaterStream:
text = "Play_SA_water";
break;
case SoundType.Wind:
text = "Play_SA_wind";
break;
case SoundType.Void:
text = "Play_SA_void";
break;
default:
text = "Play_SA_wind";
break;
}
string text2 = text;
Util.PlaySound(text2, ((Component)RoR2Application.instance).gameObject);
}
}
public static void StopSounds()
{
Util.PlaySound("Stop_SA_birds", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_rain", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_thunder", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_night", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_water", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_wind", ((Component)RoR2Application.instance).gameObject);
Util.PlaySound("Stop_SA_void", ((Component)RoR2Application.instance).gameObject);
}
public static void AddRain(Intensity intensity, bool bloodRain = false)
{
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_0186: Unknown result type (might be due to invalid IL or missing references)
//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_0238: Unknown result type (might be due to invalid IL or missing references)
//IL_023d: Unknown result type (might be due to invalid IL or missing references)
//IL_0241: Unknown result type (might be due to invalid IL or missing references)
//IL_0246: Unknown result type (might be due to invalid IL or missing references)
//IL_026b: Unknown result type (might be due to invalid IL or missing references)
//IL_0270: Unknown result type (might be due to invalid IL or missing references)
//IL_0287: Unknown result type (might be due to invalid IL or missing references)
//IL_0296: Unknown result type (might be due to invalid IL or missing references)
//IL_029b: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Rain) && Object.op_Implicit((Object)(object)Run.instance))
{
if (!Object.op_Implicit((Object)(object)Rain.GetComponent<StageAestheticWeatherController>()))
{
Rain.AddComponent<StageAestheticWeatherController>();
}
GameObject gameObject = ((Component)Rain.transform.GetChild(0)).gameObject;
ParticleSystemRenderer component = gameObject.GetComponent<ParticleSystemRenderer>();
Material material = ((Renderer)component).material;
material.shader = Assets.CloudRemap;
material.EnableKeyword("DISABLEREMAP");
material.SetFloat("_DstBlend", 10f);
material.SetFloat("_SrcBlend", 5f);
material.SetColor("_TintColor", Color32.op_Implicit(bloodRain ? new Color32((byte)72, (byte)36, (byte)36, byte.MaxValue) : new Color32((byte)166, (byte)166, (byte)166, byte.MaxValue)));
WeatherData weatherData = intensity switch
{
Intensity.Mild => new WeatherData(270f, 300f, 110f, 120f, 6f),
Intensity.Medium => new WeatherData(310f, 340f, 130f, 140f, 10f),
Intensity.Heavy => new WeatherData(350f, 380f, 150f, 160f, 14f),
Intensity.Extreme => new WeatherData(390f, 420f, 170f, 180f, 19f),
_ => default(WeatherData),
};
float scalingValue = DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue;
float difficultyCoefficient = Run.instance.difficultyCoefficient;
float num = weatherData.Magnitude + Mathf.Sqrt(scalingValue * 2500f) + Mathf.Sqrt(difficultyCoefficient * 20f);
float num2 = weatherData.Speed + Mathf.Sqrt(scalingValue * 2500f) + Mathf.Sqrt(difficultyCoefficient * 20f);
ParticleSystem component2 = gameObject.GetComponent<ParticleSystem>();
MainModule main = component2.main;
((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(Mathf.Min(1000f, num2));
((MainModule)(ref main)).maxParticles = Mathf.Min(5000000, 100000 + (int)(num * 30f));
EmissionModule emission = component2.emission;
MinMaxCurve rateOverTime = ((EmissionModule)(ref emission)).rateOverTime;
((MinMaxCurve)(ref rateOverTime)).mode = (ParticleSystemCurveMode)0;
((MinMaxCurve)(ref rateOverTime)).constant = Mathf.Min(10000f, 800f + num);
ShapeModule shape = component2.shape;
((ShapeModule)(ref shape)).rotation = new Vector3(weatherData.Angle, 0f, weatherData.Angle);
Object.Instantiate<GameObject>(Rain, Vector3.zero, Quaternion.identity);
}
}
public static void AddSnow(Intensity intensity, float heightOverride = 150f)
{
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0220: Unknown result type (might be due to invalid IL or missing references)
//IL_0230: Unknown result type (might be due to invalid IL or missing references)
//IL_025c: Unknown result type (might be due to invalid IL or missing references)
//IL_0261: Unknown result type (might be due to invalid IL or missing references)
//IL_0265: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_028e: Unknown result type (might be due to invalid IL or missing references)
//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Snow) && Object.op_Implicit((Object)(object)Run.instance))
{
if (!Object.op_Implicit((Object)(object)Snow.GetComponent<StageAestheticWeatherController>()))
{
Snow.AddComponent<StageAestheticWeatherController>();
}
GameObject gameObject = ((Component)Snow.transform.GetChild(0)).gameObject;
gameObject.transform.localPosition = new Vector3(0f, heightOverride, 0f);
GameObject gameObject2 = ((Component)gameObject.transform.GetChild(0)).gameObject;
Material material = ((Renderer)gameObject.GetComponent<ParticleSystemRenderer>()).material;
material.shader = Assets.CloudRemap;
material.EnableKeyword("DISABLEREMAP");
material.SetFloat("_DstBlend", 10f);
material.SetFloat("_SrcBlend", 5f);
Material material2 = ((Renderer)gameObject2.GetComponent<ParticleSystemRenderer>()).material;
material2.shader = Assets.CloudRemap;
material2.EnableKeyword("DISABLEREMAP");
material2.SetFloat("_DstBlend", 10f);
material2.SetFloat("_SrcBlend", 5f);
WeatherData weatherData = intensity switch
{
Intensity.Mild => new WeatherData(600f, 800f, 12f, 16f, 7f),
Intensity.Medium => new WeatherData(1400f, 1700f, 17f, 21f, 12f),
Intensity.Heavy => new WeatherData(2300f, 2800f, 22f, 28f, 17f),
Intensity.Extreme => new WeatherData(3400f, 3800f, 29f, 33f, 25f),
_ => default(WeatherData),
};
float scalingValue = DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue;
float difficultyCoefficient = Run.instance.difficultyCoefficient;
float num = weatherData.Magnitude + Mathf.Sqrt(scalingValue * 2500f) + Mathf.Sqrt(difficultyCoefficient * 20f);
float num2 = weatherData.Speed + Mathf.Sqrt(scalingValue) + Mathf.Sqrt(difficultyCoefficient);
ParticleSystem component = gameObject.GetComponent<ParticleSystem>();
MainModule main = component.main;
((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(Mathf.Min(1000f, num2));
((MainModule)(ref main)).maxParticles = Mathf.Min(5000000, 100000 + (int)(num * 5f));
EmissionModule emission = component.emission;
MinMaxCurve rateOverTime = ((EmissionModule)(ref emission)).rateOverTime;
((MinMaxCurve)(ref rateOverTime)).mode = (ParticleSystemCurveMode)0;
((MinMaxCurve)(ref rateOverTime)).constant = Mathf.Min(10000f, num);
ShapeModule shape = component.shape;
((ShapeModule)(ref shape)).rotation = new Vector3(weatherData.Angle, 0f, weatherData.Angle);
Object.Instantiate<GameObject>(Snow, Vector3.zero, Quaternion.identity);
}
}
public static void AddSand(Intensity intensity)
{
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0203: Unknown result type (might be due to invalid IL or missing references)
//IL_0222: Unknown result type (might be due to invalid IL or missing references)
//IL_0227: Unknown result type (might be due to invalid IL or missing references)
//IL_023e: Unknown result type (might be due to invalid IL or missing references)
//IL_024d: Unknown result type (might be due to invalid IL or missing references)
//IL_0252: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Sand) && Object.op_Implicit((Object)(object)Run.instance))
{
if (!Object.op_Implicit((Object)(object)Sand.GetComponent<StageAestheticWeatherController>()))
{
Sand.AddComponent<StageAestheticWeatherController>();
}
GameObject gameObject = ((Component)Sand.transform.GetChild(0)).gameObject;
Material material = ((Renderer)gameObject.GetComponent<ParticleSystemRenderer>()).material;
material.shader = Assets.CloudRemap;
material.EnableKeyword("DISABLEREMAP");
material.SetFloat("_DstBlend", 10f);
material.SetFloat("_SrcBlend", 5f);
WeatherData weatherData = intensity switch
{
Intensity.Mild => new WeatherData(2500f, 3000f, 20f, 25f, 7f),
Intensity.Medium => new WeatherData(3000f, 3500f, 25f, 30f, 12f),
Intensity.Heavy => new WeatherData(3500f, 4000f, 25f, 30f, 17f),
Intensity.Extreme => new WeatherData(4500f, 5000f, 25f, 30f, 25f),
_ => default(WeatherData),
};
float scalingValue = DifficultyCatalog.GetDifficultyDef(Run.instance.selectedDifficulty).scalingValue;
float difficultyCoefficient = Run.instance.difficultyCoefficient;
float num = weatherData.Magnitude + Mathf.Sqrt(scalingValue * 2500f) + Mathf.Sqrt(difficultyCoefficient * 20f);
float num2 = weatherData.Speed + Mathf.Sqrt(scalingValue * 5f) + Mathf.Sqrt(difficultyCoefficient / 2f);
ParticleSystem component = gameObject.GetComponent<ParticleSystem>();
MainModule main = component.main;
((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(Mathf.Min(1100f, num2));
((MainModule)(ref main)).maxParticles = Mathf.Min(5000000, 100000 + (int)(num * 5f));
EmissionModule emission = component.emission;
MinMaxCurve rateOverTime = ((EmissionModule)(ref emission)).rateOverTime;
((MinMaxCurve)(ref rateOverTime)).mode = (ParticleSystemCurveMode)0;
((MinMaxCurve)(ref rateOverTime)).constant = Mathf.Min(10000f, num);
ShapeModule shape = component.shape;
((ShapeModule)(ref shape)).rotation = new Vector3(weatherData.Angle, 0f, weatherData.Angle);
Object.Instantiate<GameObject>(Sand, Vector3.zero, Quaternion.identity);
}
}
}
public enum SoundType
{
None,
DayNature,
Rain,
Thunder,
NightNature,
WaterStream,
Wind,
Void
}
public enum Intensity
{
None,
Mild,
Medium,
Heavy,
Extreme
}
public class StageAestheticWeatherController : MonoBehaviour
{
public GameObject particleSystem;
public bool disable;
public float timer;
public float interval = 0.1f;
public void Start()
{
particleSystem = ((Component)((Component)this).transform.GetChild(0)).gameObject;
}
public void FixedUpdate()
{
timer += Time.fixedDeltaTime;
if (timer >= interval)
{
if (disable)
{
particleSystem.SetActive(false);
}
else
{
particleSystem.SetActive(true);
}
timer = 0f;
}
}
}
}
namespace StageAesthetic.Variants
{
public class FRVariant : Variant
{
public override void Apply(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
base.Apply(scenename, fog, cgrade, volume, loop);
Apply(scenename, ((Component)volume).GetComponent<TheCoolerRampFog>(), fog, cgrade, volume, loop);
}
public virtual void Apply(string scenename, object fog, RampFog fog2, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
}
}
public abstract class Variant
{
public ConfigEntry<float> PreLoopWeight;
public ConfigEntry<float> LoopWeight;
public ConfigEntry<EnableConfig> WeatherCondition;
public static List<Variant> Variants = new List<Variant>();
public static Dictionary<string, List<Variant>> VariantsRolled = new Dictionary<string, List<Variant>>();
public virtual float PreLoopWeightDefault => 1f;
public virtual float LoopWeightDefault => 1f;
public virtual string[] Stages => Array.Empty<string>();
public virtual string Name => "";
public virtual string Description => "";
public virtual SoundType Ambience => SoundType.None;
public static Variant Vanilla => Variants.Find((Variant x) => x.Stages.Length == 0 && x.Name == "Vanilla");
public virtual void Init(string category)
{
}
public virtual void Apply(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
Main.Log.LogInfo((object)("Loading " + Hooks.SceneNames[scenename] + " (" + Name + ")"));
Weather.StopSounds();
Weather.PlaySound(Ambience);
if (WeatherCondition != null && WeatherCondition.Value switch
{
EnableConfig.Enable => true,
EnableConfig.PreLoopOnly => !loop,
EnableConfig.LoopOnly => loop,
EnableConfig.Disable => false,
_ => false,
})
{
DoWeather(scenename, fog, cgrade, volume, loop);
}
}
public virtual void DoWeather(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
}
public Variant()
{
Variants.Add(this);
}
public void InitConfig()
{
if (Stages.Length != 0 && Hooks.SceneNames.ContainsKey(Stages[0]))
{
string category = "Stages " + new string(':', (int)Hooks.SceneStage[Stages[0]]) + " " + Hooks.SceneNames[Stages[0]];
PreLoopWeight = ConfigManager.Bind(category, Name + " - Pre-Loop Weight", PreLoopWeightDefault, Description);
LoopWeight = ConfigManager.Bind(category, Name + " - Post-Loop Weight", LoopWeightDefault, Description);
WeatherCondition = ConfigManager.Bind(category, Name + " - Weather Effect", EnableConfig.Enable, "Enables weather effects for this variant.");
Init(category);
}
}
public static Variant GetVariant(string stage, bool loop = false)
{
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
WeightedSelection<Variant> val = new WeightedSelection<Variant>(8);
int num = 0;
foreach (Variant variant2 in Variants)
{
if (variant2.Stages.Contains(stage))
{
float num2 = (loop ? variant2.LoopWeight.Value : variant2.PreLoopWeight.Value);
if (!(num2 <= 0f))
{
num++;
val.AddChoice(variant2, num2);
}
}
}
if (LoopVariantEnabled() || num == 0)
{
return Vanilla;
}
if (!Hooks.AvoidDuplicateVariants.Value)
{
return val.Evaluate(Run.instance.stageRng.nextNormalizedFloat);
}
if (!VariantsRolled.ContainsKey(stage) || VariantsRolled[stage].Count >= num)
{
VariantsRolled[stage] = new List<Variant>();
}
WeightedSelection<Variant> val2 = new WeightedSelection<Variant>(8);
for (int i = 0; i < val.Count; i++)
{
if (!VariantsRolled[stage].Contains(val.choices[i].value))
{
val2.AddChoice(val.choices[i]);
}
}
Variant variant = val2.Evaluate(Run.instance.stageRng.nextNormalizedFloat);
VariantsRolled[stage].Add(variant);
return variant;
}
public static Variant GetVariant(string stage, string name)
{
return Variants.TryFind((Variant x) => x.Stages.Contains(stage) && x.Name.ToLower() == name.ToLower()) ?? Vanilla;
}
public static bool LoopVariantEnabled()
{
if (!Object.op_Implicit((Object)(object)Run.instance) || !Chainloader.PluginInfos.ContainsKey("Wolfo.LoopVariantConfig"))
{
return false;
}
string[] source = new string[3] { "lakesnight", "villagenight", "habitatfall" };
if (source.Contains(SceneCatalog.currentSceneDef.cachedName))
{
return false;
}
return LoopVariantEnabledInternal();
}
public static bool LoopVariantEnabledInternal()
{
return ((Component)Run.instance).GetComponent<SyncLoopWeather>().CurrentStage_LoopVariant;
}
}
public class Vanilla : Variant
{
public override string Name => "Vanilla";
public override string[] Stages => Array.Empty<string>();
public override void Apply(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
}
}
public enum EnableConfig
{
Enable,
PreLoopOnly,
LoopOnly,
Disable
}
}
namespace StageAesthetic.Variants.Stage5.SlumberingSatellite
{
public class Blue : FRVariant
{
public override string[] Stages => new string[1] { "slumberingsatellite" };
public override string Name => "Blue";
public override string Description => "BLUE!";
public override SoundType Ambience => SoundType.DayNature;
public override void Apply(string scenename, object _fog, RampFog fog2, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_0178: Unknown result type (might be due to invalid IL or missing references)
base.Apply(scenename, _fog, fog2, cgrade, volume, loop);
TheCoolerRampFog val = (TheCoolerRampFog)_fog;
Light component = GameObject.Find("Directional Light (SUN)").GetComponent<Light>();
component.color = Color32.op_Implicit(new Color32((byte)160, byte.MaxValue, (byte)208, byte.MaxValue));
component.intensity = 1f;
component.shadowStrength = 0.6f;
val.intensity = 1f;
val.power = 1f;
val.fogZero = -0.07f;
val.fogOne = 0.15f;
val.startColor = new Color32((byte)69, (byte)107, (byte)134, (byte)50);
val.middleColor = new Color32((byte)94, (byte)140, (byte)135, (byte)6);
val.endColor = new Color32((byte)66, (byte)84, (byte)87, byte.MaxValue);
val.skyboxPower = 0f;
((ParameterOverride<float>)(object)fog2.fogIntensity).value = 1f;
((ParameterOverride<float>)(object)fog2.fogPower).value = 1f;
((ParameterOverride<float>)(object)fog2.fogZero).value = -0.07f;
((ParameterOverride<float>)(object)fog2.fogOne).value = 0.15f;
((ParameterOverride<Color>)(object)fog2.fogColorStart).value = Color32.op_Implicit(new Color32((byte)69, (byte)107, (byte)134, (byte)50));
((ParameterOverride<Color>)(object)fog2.fogColorMid).value = Color32.op_Implicit(new Color32((byte)94, (byte)140, (byte)135, (byte)6));
((ParameterOverride<Color>)(object)fog2.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)66, (byte)84, (byte)87, byte.MaxValue));
((ParameterOverride<float>)(object)fog2.skyboxStrength).value = 0f;
Common.VanillaFoliage();
}
}
public static class Common
{
public static void VanillaFoliage()
{
Assets.MeshReplaceAll(new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "Edge Clouds" }, delegate(MeshRenderer mr)
{
((Component)mr).gameObject.SetActive(false);
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMGrass" }, delegate(MeshRenderer mr)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)236, (byte)161, (byte)182, byte.MaxValue));
if (((Renderer)mr).sharedMaterials.Length >= 2)
{
((Renderer)mr).sharedMaterials[1].color = Color32.op_Implicit(new Color32((byte)236, (byte)161, (byte)182, byte.MaxValue));
}
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "SMVineBody" }, delegate(MeshRenderer mr)
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)144, (byte)158, (byte)70, byte.MaxValue));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMHangingVinesCluster_LOD0" }, delegate(MeshRenderer mr)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)130, (byte)150, (byte)171, byte.MaxValue));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmBbDryBush_LOD0" }, delegate(MeshRenderer mr)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)125, (byte)125, (byte)128, byte.MaxValue));
if (((Renderer)mr).sharedMaterials.Length >= 2)
{
((Renderer)mr).sharedMaterials[1].color = Color32.op_Implicit(new Color32((byte)125, (byte)125, (byte)128, byte.MaxValue));
}
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMHangingVinesCluster_LOD0" }, delegate(MeshRenderer mr)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue));
}));
}
}
public class Morning : FRVariant
{
public override string[] Stages => new string[1] { "slumberingsatellite" };
public override string Name => "Morning";
public override string Description => "Blue and yellow.";
public override SoundType Ambience => SoundType.DayNature;
public override void Apply(string scenename, object _fog, RampFog fog2, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
base.Apply(scenename, _fog, fog2, cgrade, volume, loop);
TheCoolerRampFog val = (TheCoolerRampFog)_fog;
Light component = GameObject.Find("Directional Light (SUN)").GetComponent<Light>();
component.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)219, (byte)160, byte.MaxValue));
component.intensity = 2f;
component.shadowStrength = 0.85f;
Common.VanillaFoliage();
}
}
public class Overcast : FRVariant
{
public override string[] Stages => new string[1] { "slumberingsatellite" };
public override string Name => "Overcast";
public override string Description => "Rainy with more fog.";
public override SoundType Ambience => SoundType.Thunder;
public override void Apply(string scenename, object _fog, RampFog fog2, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
base.Apply(scenename, _fog, fog2, cgrade, volume, loop);
TheCoolerRampFog val = (TheCoolerRampFog)_fog;
Light component = GameObject.Find("Directional Light (SUN)").GetComponent<Light>();
component.color = Color32.op_Implicit(new Color32((byte)160, byte.MaxValue, (byte)208, byte.MaxValue));
component.intensity = 1f;
component.shadowStrength = 0.6f;
val.intensity = 1f;
val.power = 1f;
val.fogZero = -0.07f;
val.fogOne = 0.1f;
val.startColor = new Color32((byte)134, (byte)99, (byte)69, (byte)50);
val.middleColor = new Color32((byte)140, (byte)115, (byte)94, (byte)6);
val.endColor = new Color32((byte)87, (byte)74, (byte)66, byte.MaxValue);
val.skyboxPower = 0f;
((ParameterOverride<float>)(object)fog2.fogIntensity).value = 1f;
((ParameterOverride<float>)(object)fog2.fogPower).value = 1f;
((ParameterOverride<float>)(object)fog2.fogZero).value = -0.07f;
((ParameterOverride<float>)(object)fog2.fogOne).value = 0.1f;
((ParameterOverride<Color>)(object)fog2.fogColorStart).value = Color32.op_Implicit(new Color32((byte)134, (byte)99, (byte)69, (byte)50));
((ParameterOverride<Color>)(object)fog2.fogColorMid).value = Color32.op_Implicit(new Color32((byte)140, (byte)115, (byte)94, (byte)6));
((ParameterOverride<Color>)(object)fog2.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)87, (byte)74, (byte)66, byte.MaxValue));
((ParameterOverride<float>)(object)fog2.skyboxStrength).value = 0f;
Common.VanillaFoliage();
}
public override void DoWeather(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
Weather.AddRain(Intensity.Extreme);
}
}
public class Vanilla : FRVariant
{
public override string[] Stages => new string[1] { "slumberingsatellite" };
public override string Name => "Vanilla";
public override string Description => "Disabling removes vanilla from getting picked.";
public override SoundType Ambience => SoundType.NightNature;
public override void Apply(string scenename, object _fog, RampFog fog2, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
base.Apply(scenename, _fog, fog2, cgrade, volume, loop);
Common.VanillaFoliage();
}
}
}
namespace StageAesthetic.Variants.Stage5.SkyMeadow
{
public class Abandoned : Variant
{
public override string[] Stages => new string[1] { "skymeadow" };
public override string Name => "Abandoned";
public override string Description => "Texture swap to Yellow Abandoned Aqueduct.";
public override SoundType Ambience => SoundType.Wind;
public override void Apply(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
base.Apply(scenename, fog, cgrade, volume, loop);
((ParameterOverride<Color>)(object)fog.fogColorStart).value = Color32.op_Implicit(new Color32((byte)113, (byte)42, (byte)109, (byte)97));
((ParameterOverride<Color>)(object)fog.fogColorMid).value = Color32.op_Implicit(new Color32((byte)174, (byte)135, (byte)66, (byte)60));
((ParameterOverride<Color>)(object)fog.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)128, (byte)101, (byte)59, byte.MaxValue));
((ParameterOverride<float>)(object)fog.fogZero).value = -0.05f;
((ParameterOverride<float>)(object)fog.fogIntensity).value = 1f;
((ParameterOverride<float>)(object)fog.fogPower).value = 0.7f;
((ParameterOverride<float>)(object)fog.fogOne).value = 0.25f;
((ParameterOverride<float>)(object)fog.skyboxStrength).value = 0f;
Common.ReplaceMaterials(Assets.LoadRecolor("RoR2/Base/goolake/matGoolakeTerrain.mat", new Color32((byte)230, (byte)223, (byte)174, (byte)219)), Assets.LoadRecolor("RoR2/Base/goolake/matGoolakeStoneTrimLightSand.mat", new Color32(byte.MaxValue, (byte)188, (byte)160, (byte)223)), Assets.Load<Material>("RoR2/Base/goolake/matGoolakeStoneTrimSandy.mat"), Assets.Load<Material>("RoR2/Base/goolake/matGoolakeStoneTrimLightSand.mat"), Assets.LoadRecolor("RoR2/Base/Common/TrimSheets/matTrimSheetConstructionWild.mat", new Color32((byte)248, (byte)219, (byte)175, byte.MaxValue)), Assets.LoadRecolor("RoR2/Base/Common/TrimSheets/matTrimSheetSwampyRuinsProjectedLight.mat", new Color32((byte)217, (byte)191, (byte)168, byte.MaxValue)), Assets.Load<Material>("RoR2/DLC1/MajorAndMinorConstruct/matMajorConstructDefenseMatrixEdges.mat"));
Transform transform = GameObject.Find("Cloud Floor").transform;
((Renderer)((Component)transform.GetChild(0)).GetComponent<MeshRenderer>()).sharedMaterial = Assets.Load<Material>("RoR2/Base/Common/matClayGooDebuff.mat");
GameObject.Find("Hard Floor").SetActive(false);
transform.GetChild(0).localPosition = new Vector3(0f, 30f, 0f);
transform.GetChild(0).localScale = new Vector3(600f, 600f, 600f);
((Component)transform.GetChild(1)).gameObject.SetActive(false);
((Component)transform.GetChild(2)).gameObject.SetActive(false);
((Component)transform.GetChild(3)).gameObject.SetActive(false);
Assets.MeshReplaceAll(new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "BbRuinPillar" }, delegate(MeshRenderer mr)
{
Assets.TryMeshReplace(mr, Assets.Load<Material>("RoR2/Base/Common/TrimSheets/matTrimSheetClayPots.mat"));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "BbRuinArch" }, delegate(MeshRenderer mr)
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
Assets.TryMeshReplace(mr, Assets.LoadRecolor("RoR2/Base/goolake/matGoolakeTerrain.mat", new Color32((byte)230, (byte)223, (byte)174, (byte)219)));
}));
SandyFoliage();
}
public override void DoWeather(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
Weather.AddSand(Intensity.Extreme);
}
public static void SandyFoliage()
{
Assets.MeshReplaceAll(new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMGrass" }, delegate(MeshRenderer mr)
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)186, (byte)95, byte.MaxValue));
if (((Renderer)mr).sharedMaterials.Length >= 2)
{
((Renderer)mr).sharedMaterials[1].color = Color32.op_Implicit(new Color32((byte)216, (byte)171, (byte)88, byte.MaxValue));
}
}), new Assets.ReplaceInstance<MeshRenderer>(new string[2] { "SMVineBody", "spmSMHangingVinesCluster_LOD0" }, delegate(MeshRenderer mr)
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)213, (byte)158, (byte)70, byte.MaxValue));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmBbDryBush_LOD0" }, delegate(MeshRenderer mr)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)73, (byte)58, (byte)42, byte.MaxValue));
if (((Renderer)mr).sharedMaterials.Length >= 2)
{
((Renderer)mr).sharedMaterials[1].color = Color32.op_Implicit(new Color32((byte)84, (byte)68, (byte)49, byte.MaxValue));
}
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "SGMushroom" }, delegate(MeshRenderer mr)
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)90, (byte)0, byte.MaxValue));
}));
}
}
public class Abyssal : Variant
{
public override string[] Stages => new string[1] { "skymeadow" };
public override string Name => "Abyssal";
public override string Description => "Texture swap to Red Abyssal Depths.";
public override SoundType Ambience => SoundType.Rain;
public override void Apply(string scenename, RampFog fog, ColorGrading cgrade, PostProcessVolume volume, bool loop)
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
//IL_0254: Unknown result type (might be due to invalid IL or missing references)
//IL_026f: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
//IL_0303: Unknown result type (might be due to invalid IL or missing references)
base.Apply(scenename, fog, cgrade, volume, loop);
((PostProcessEffectSettings)cgrade).SetAllOverridesTo(true, true);
((ParameterOverride<Color>)(object)cgrade.colorFilter).value = Color32.op_Implicit(new Color32((byte)79, (byte)79, (byte)103, byte.MaxValue));
((ParameterOverride<float>)(object)cgrade.saturation).value = -8f;
((ParameterOverride<Color>)(object)fog.fogColorStart).value = Color32.op_Implicit(new Color32((byte)106, (byte)22, (byte)107, (byte)50));
((ParameterOverride<Color>)(object)fog.fogColorMid).value = Color32.op_Implicit(new Color32((byte)39, (byte)85, (byte)97, (byte)44));
((ParameterOverride<Color>)(object)fog.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)35, (byte)76, (byte)73, byte.MaxValue));
((ParameterOverride<float>)(object)fog.fogZero).value = -0.1f;
((ParameterOverride<float>)(object)fog.fogOne).value = 0.2f;
((ParameterOverride<float>)(object)fog.fogIntensity).value = 1f;
((ParameterOverride<float>)(object)fog.fogPower).value = 0.6f;
((ParameterOverride<float>)(object)fog.skyboxStrength).value = 0f;
Transform transform = GameObject.Find("HOLDER: Weather Set 1").transform;
Transform child = transform.GetChild(6);
((Component)child).gameObject.SetActive(false);
((Component)GameObject.Find("HOLDER: Terrain").transform.GetChild(1)).gameObject.SetActive(false);
Light component = ((Component)transform.GetChild(0)).GetComponent<Light>();
component.color = Color32.op_Implicit(new Color32((byte)118, (byte)222, (byte)225, byte.MaxValue));
component.intensity = 2f;
component.shadowStrength = 0.75f;
((Component)transform.Find("CameraRelative").Find("SmallStars")).gameObject.SetActive(true);
transform.GetChild(6).localScale = new Vector3(4000f, 4000f, 4000f);
((Renderer)((Component)transform.GetChild(6)).GetComponent<MeshRenderer>()).sharedMaterial = Assets.LoadRecolor("RoR2/Base/Cleanse/matWaterPack.mat", new Color32((byte)217, (byte)0, byte.MaxValue, byte.MaxValue));
((Component)GameObject.Find("SMSkyboxPrefab").transform.Find("MoonHolder").Find("ShatteredMoonMesh")).gameObject.SetActive(false);
((Component)GameObject.Find("SMSkyboxPrefab").transform.Find("MoonHolder").Find("MoonMesh")).gameObject.SetActive(true);
Common.ReplaceMaterials(Assets.LoadRecolor("RoR2/Base/dampcave/matDCTerrainFloor.mat", new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue)), Assets.LoadRecolor("RoR2/Base/dampcave/matDCTerrainFloor.mat", new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue)), Assets.Load<Material>("RoR2/Base/TitanGoldDuringTP/matGoldHeart.mat"), Assets.Load<Material>("RoR2/Base/dampcave/matDCTerrainWalls.mat"), Assets.LoadRecolor("RoR2/Base/Common/TrimSheets/matTrimSheetConstructionDestroyed.mat", new Color32(byte.MaxValue, (byte)136, (byte)103, byte.MaxValue)), Assets.Load<Material>("RoR2/Base/Common/TrimSheets/matTrimSheetMetalMilitaryEmission.mat"), Assets.LoadRecolor("RoR2/Base/dampcave/matDCCoralActive.mat", new Color32(byte.MaxValue, (byte)10, (byte)0, byte.MaxValue)));
((Renderer)((Component)GameObject.Find("HOLDER: Terrain").transform.GetChild(1)).GetComponent<MeshRenderer>()).sharedMaterial = Assets.LoadRecolor("RoR2/Base/dampcave/matDCTerrainFloor.mat", new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue));
AbyssalFoliage();
}
public static void AbyssalFoliage()
{
Assets.MeshReplaceAll(new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMGrass" }, delegate(MeshRenderer mr)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)165, (byte)0, byte.MaxValue));
if (((Renderer)mr).sharedMaterials.Length >= 2)
{
((Renderer)mr).sharedMaterials[1].color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)125, (byte)0, byte.MaxValue));
}
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "SMVineBody" }, delegate(MeshRenderer mr)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)166, (byte)120, (byte)37, byte.MaxValue));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmSMHangingVinesCluster_LOD0" }, delegate(MeshRenderer mr)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
((Renderer)mr).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)181, (byte)77, (byte)45, byte.MaxValue));
}), new Assets.ReplaceInstance<MeshRenderer>(new string[1] { "spmBbDryBush_LOD0" }, delegate(MeshRenderer mr)
{
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing