using System;
using System.Collections.Generic;
using System.Diagnostics;
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 EntityStates;
using EntityStates.LunarTeleporter;
using EntityStates.Missions.BrotherEncounter;
using InLobbyConfig;
using InLobbyConfig.Fields;
using Microsoft.CodeAnalysis;
using On.EntityStates.LunarTeleporter;
using On.EntityStates.Missions.BrotherEncounter;
using On.RoR2.Achievements;
using RoR2;
using RoR2.Achievements;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("PowerfullySlowMoon")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("PowerfullySlowMoon")]
[assembly: AssemblyTitle("PowerfullySlowMoon")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
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.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
}
namespace PowerfullySlow
{
[BepInPlugin("xyz.yekoc.PowerfullySlow", "Powerfully Slow Moon", "1.3.4")]
[BepInIncompatibility("com.xoxfaby.UnlockAll")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class PowerfullySlowPlugin : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Action<Stage> <>9__8_0;
public static hook_OnExit <>9__8_4;
public static hook_OnEnter <>9__8_5;
internal void <Awake>b__8_0(Stage stage)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: 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)
GameObject val = GameObject.Find("ShrineRestack");
if (Object.op_Implicit((Object)(object)val))
{
val.transform.position = new Vector3(val.transform.position.x, 211.8f, val.transform.position.z);
}
}
internal void <Awake>b__8_4(orig_OnExit orig, PreEncounter self)
{
SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && sceneDefForCurrentScene.baseSceneName == "moon")
{
((Component)self.childLocator.FindChild("PreEncounter")).gameObject.SetActive(false);
}
else
{
orig.Invoke(self);
}
}
internal void <Awake>b__8_5(orig_OnEnter orig, EncounterFinished self)
{
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: 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_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: 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_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Expected O, but got Unknown
try
{
orig.Invoke(self);
}
catch (Exception)
{
}
SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
if (!Object.op_Implicit((Object)(object)sceneDefForCurrentScene) || !(sceneDefForCurrentScene.baseSceneName == "moon"))
{
return;
}
((BrotherEncounterBaseState)self).childLocator = ((EntityState)self).GetComponent<ChildLocator>();
if (Object.op_Implicit((Object)(object)((BrotherEncounterBaseState)self).childLocator))
{
Transform val = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaWalls");
Transform val2 = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaNodes");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
if (Object.op_Implicit((Object)(object)val2))
{
((Component)val2).gameObject.SetActive(false);
}
}
if (froggy)
{
Transform val3 = ((BrotherEncounterBaseState)self).childLocator.FindChild("CenterOrbEffect");
Vector3 val4 = default(Vector3);
((Vector3)(ref val4))..ctor(0f, 0f, 5f);
GameObject val5 = Object.Instantiate<GameObject>(frogPrefab, val3.position + val4, Quaternion.identity);
PickupIndex pickupIndex = PickupCatalog.FindPickupIndex((ItemTier)3);
Highlight[] componentsInChildren = val5.GetComponentsInChildren<Highlight>();
foreach (Highlight val6 in componentsInChildren)
{
val6.pickupIndex = pickupIndex;
val6.highlightColor = (HighlightColor)2;
val6.isOn = true;
}
val5.AddComponent<Light>().color = ((PickupIndex)(ref pickupIndex)).GetPickupColor();
if (NetworkServer.active)
{
NetworkServer.Spawn(val5);
}
EffectManager.SpawnEffect(AssetReferences.fragileDamageBonusBreakEffectPrefab, new EffectData
{
origin = val3.position + val4
}, false);
}
}
}
public static ConfigEntry<bool> frogger;
internal bool hookSet = false;
internal static bool froggy = false;
internal static GameObject frogPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/moon/FrogInteractable.prefab").WaitForCompletion();
public static ConfigEntry<int> repeatChance { get; set; }
private void Awake()
{
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Expected O, but got Unknown
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Expected O, but got Unknown
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Expected O, but got Unknown
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Expected O, but got Unknown
repeatChance = ((BaseUnityPlugin)this).Config.Bind<int>("Configuration", "Repeat Chance", 0, "Percent Chance of runs past first completion repeating old moon. Type:Int,Default:0,Max:100");
frogger = ((BaseUnityPlugin)this).Config.Bind<bool>("Configuration", "Frog, My Dudes", true, "Whether a glass frog is spawned in the boss area after fights on repeat runs of old moon. Does nothing on new moon or on the first, non-repeat, old moon run. Type:Bool,Default:True");
repeatChance.Value = Math.Min(Math.Max(repeatChance.Value, 0), 100);
if (Chainloader.PluginInfos.ContainsKey("com.KingEnderBrine.InLobbyConfig"))
{
HandleLobbyConfigCompat();
}
Stage.onStageStartGlobal += delegate
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: 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)
GameObject val9 = GameObject.Find("ShrineRestack");
if (Object.op_Implicit((Object)(object)val9))
{
val9.transform.position = new Vector3(val9.transform.position.x, 211.8f, val9.transform.position.z);
}
};
Run.onRunStartGlobal += delegate
{
//IL_000c: 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_004f: Expected O, but got Unknown
SceneCatalog.GetSceneDefFromSceneName("moon").sceneType = (SceneType)1;
if (!hookSet && NetworkServer.active && Util.CheckRoll((float)repeatChance.Value, 0f, (CharacterMaster)null))
{
Active.OnEnter += new hook_OnEnter(EmpowerMoon);
froggy = frogger.Value;
Run.onRunDestroyGlobal += Cleanup;
}
};
BaseEndingAchievement.OnInstall += (hook_OnInstall)delegate(orig_OnInstall orig, BaseEndingAchievement self)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
orig.Invoke(self);
if (((object)self).GetType() == typeof(CompleteMainEndingAchievement))
{
Active.OnEnter += new hook_OnEnter(EmpowerMoon);
hookSet = true;
}
};
BaseEndingAchievement.OnUninstall += (hook_OnUninstall)delegate(orig_OnUninstall orig, BaseEndingAchievement self)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
orig.Invoke(self);
if (((object)self).GetType() == typeof(CompleteMainEndingAchievement))
{
Active.OnEnter -= new hook_OnEnter(EmpowerMoon);
hookSet = false;
}
};
object obj = <>c.<>9__8_4;
if (obj == null)
{
hook_OnExit val = delegate(orig_OnExit orig, PreEncounter self)
{
SceneDef sceneDefForCurrentScene2 = SceneCatalog.GetSceneDefForCurrentScene();
if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene2) && sceneDefForCurrentScene2.baseSceneName == "moon")
{
((Component)self.childLocator.FindChild("PreEncounter")).gameObject.SetActive(false);
}
else
{
orig.Invoke(self);
}
};
<>c.<>9__8_4 = val;
obj = (object)val;
}
PreEncounter.OnExit += (hook_OnExit)obj;
object obj2 = <>c.<>9__8_5;
if (obj2 == null)
{
hook_OnEnter val2 = delegate(orig_OnEnter orig, EncounterFinished self)
{
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: 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_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: 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_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Expected O, but got Unknown
try
{
orig.Invoke(self);
}
catch (Exception)
{
}
SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && sceneDefForCurrentScene.baseSceneName == "moon")
{
((BrotherEncounterBaseState)self).childLocator = ((EntityState)self).GetComponent<ChildLocator>();
if (Object.op_Implicit((Object)(object)((BrotherEncounterBaseState)self).childLocator))
{
Transform val3 = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaWalls");
Transform val4 = ((BrotherEncounterBaseState)self).childLocator.FindChild("ArenaNodes");
if (Object.op_Implicit((Object)(object)val3))
{
((Component)val3).gameObject.SetActive(false);
}
if (Object.op_Implicit((Object)(object)val4))
{
((Component)val4).gameObject.SetActive(false);
}
}
if (froggy)
{
Transform val5 = ((BrotherEncounterBaseState)self).childLocator.FindChild("CenterOrbEffect");
Vector3 val6 = default(Vector3);
((Vector3)(ref val6))..ctor(0f, 0f, 5f);
GameObject val7 = Object.Instantiate<GameObject>(frogPrefab, val5.position + val6, Quaternion.identity);
PickupIndex pickupIndex = PickupCatalog.FindPickupIndex((ItemTier)3);
Highlight[] componentsInChildren = val7.GetComponentsInChildren<Highlight>();
foreach (Highlight val8 in componentsInChildren)
{
val8.pickupIndex = pickupIndex;
val8.highlightColor = (HighlightColor)2;
val8.isOn = true;
}
val7.AddComponent<Light>().color = ((PickupIndex)(ref pickupIndex)).GetPickupColor();
if (NetworkServer.active)
{
NetworkServer.Spawn(val7);
}
EffectManager.SpawnEffect(AssetReferences.fragileDamageBonusBreakEffectPrefab, new EffectData
{
origin = val5.position + val6
}, false);
}
}
};
<>c.<>9__8_5 = val2;
obj2 = (object)val2;
}
EncounterFinished.OnEnter += (hook_OnEnter)obj2;
void Cleanup(Run run2)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
Active.OnEnter -= new hook_OnEnter(EmpowerMoon);
Run.onRunDestroyGlobal -= Cleanup;
}
}
internal void EmpowerMoon(orig_OnEnter orig, Active self)
{
orig.Invoke(self);
if (NetworkServer.active)
{
((LunarTeleporterBaseState)self).teleporterInteraction.sceneExitController.destinationScene = SceneCatalog.GetSceneDefFromSceneName("moon");
}
}
internal void HandleLobbyConfigCompat()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ModConfigEntry val = new ModConfigEntry();
val.DisplayName = "Powerfully Slow";
val.SectionFields.Add("Old Moon", new List<IConfigField>
{
ConfigFieldUtilities.CreateFromBepInExConfigEntry<int>(repeatChance),
ConfigFieldUtilities.CreateFromBepInExConfigEntry<bool>(frogger)
});
ModConfigCatalog.Add(val);
}
}
}