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.LunarTeleporter;
using EntityStates.Missions.BrotherEncounter;
using InLobbyConfig;
using InLobbyConfig.Fields;
using MonoMod.RuntimeDetour;
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.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("PowerfullySlow")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+dc3c63f8043ea2277dec5f28ddcc3914ebce0876")]
[assembly: AssemblyProduct("PowerfullySlow")]
[assembly: AssemblyTitle("PowerfullySlow")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace PowerfullySlow;
[BepInPlugin("xyz.yekoc.PowerfullySlow", "Powerfully Slow Moon", "1.3.0")]
[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 hook_OnEnter <>9__8_3;
internal void <Awake>b__8_3(orig_OnEnter orig, EncounterFinished self)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: 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_005c: 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_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Expected O, but got Unknown
orig.Invoke(self);
if (froggy)
{
Transform val = ((BrotherEncounterBaseState)self).childLocator.FindChild("CenterOrbEffect");
GameObject val2 = Object.Instantiate<GameObject>(frogPrefab, val.position, Quaternion.identity);
PickupIndex pickupIndex = PickupCatalog.FindPickupIndex((ItemTier)3);
Highlight[] componentsInChildren = val2.GetComponentsInChildren<Highlight>();
foreach (Highlight val3 in componentsInChildren)
{
val3.pickupIndex = pickupIndex;
val3.highlightColor = (HighlightColor)2;
val3.isOn = true;
}
val2.AddComponent<Light>().color = ((PickupIndex)(ref pickupIndex)).GetPickupColor();
if (NetworkServer.active)
{
NetworkServer.Spawn(val2);
}
EffectManager.SpawnEffect(AssetReferences.fragileDamageBonusBreakEffectPrefab, new EffectData
{
origin = val.position
}, 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_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00a1: Expected O, but got Unknown
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Expected O, but got Unknown
//IL_0108: 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_00d3: 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();
}
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_3;
if (obj == null)
{
hook_OnEnter val = delegate(orig_OnEnter orig, EncounterFinished self)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: 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_005c: 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_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Expected O, but got Unknown
orig.Invoke(self);
if (froggy)
{
Transform val2 = ((BrotherEncounterBaseState)self).childLocator.FindChild("CenterOrbEffect");
GameObject val3 = Object.Instantiate<GameObject>(frogPrefab, val2.position, Quaternion.identity);
PickupIndex pickupIndex = PickupCatalog.FindPickupIndex((ItemTier)3);
Highlight[] componentsInChildren = val3.GetComponentsInChildren<Highlight>();
foreach (Highlight val4 in componentsInChildren)
{
val4.pickupIndex = pickupIndex;
val4.highlightColor = (HighlightColor)2;
val4.isOn = true;
}
val3.AddComponent<Light>().color = ((PickupIndex)(ref pickupIndex)).GetPickupColor();
if (NetworkServer.active)
{
NetworkServer.Spawn(val3);
}
EffectManager.SpawnEffect(AssetReferences.fragileDamageBonusBreakEffectPrefab, new EffectData
{
origin = val2.position
}, false);
}
};
<>c.<>9__8_3 = val;
obj = (object)val;
}
EncounterFinished.OnEnter += (hook_OnEnter)obj;
new Hook((MethodBase)typeof(BrotherEncounterBaseState).GetProperty("shouldEnableArenaWalls", (BindingFlags)(-1)).GetMethod, typeof(PowerfullySlowPlugin).GetMethod("UnImprison", (BindingFlags)(-1)));
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;
froggy = false;
}
}
internal static bool UnImprison(Func<BrotherEncounterBaseState, bool> orig, BrotherEncounterBaseState self)
{
return !(((object)self).GetType() == typeof(EncounterFinished)) && orig(self);
}
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);
}
}