Decompiled source of Roblox OOBY Arena v1.0.0

EmpressArena2.dll

Decompiled 17 hours ago
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Empress_ArenaLoaderAPI;
using ExitGames.Client.Photon;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Omniscye")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+7caf00520587bc4705fdf22c05a4ce546279ff19")]
[assembly: AssemblyProduct("EmpressArena2")]
[assembly: AssemblyTitle("EmpressArena2")]
[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.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;
		}
	}
	[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;
		}
	}
}
public class OObyDooby : MonoBehaviourPun, IOnEventCallback
{
	private bool won;

	private const byte WIN_EVENT_CODE = 155;

	private void OnEnable()
	{
		PhotonNetwork.AddCallbackTarget((object)this);
	}

	private void OnDisable()
	{
		PhotonNetwork.RemoveCallbackTarget((object)this);
	}

	private void Awake()
	{
		Debug.Log((object)"[Obby] Script Awake. Waiting for players...");
		if ((Object)(object)((MonoBehaviourPun)this).photonView == (Object)null)
		{
			Debug.LogError((object)"[Obby] WARNING: No PhotonView component found on this object!");
		}
	}

	private void OnTriggerEnter(Collider other)
	{
		AttemptWin(((Component)other).gameObject);
	}

	private void OnTriggerStay(Collider other)
	{
		AttemptWin(((Component)other).gameObject);
	}

	private void OnCollisionEnter(Collision collision)
	{
		AttemptWin(collision.gameObject);
	}

	private void AttemptWin(GameObject hitObj)
	{
		//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_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Expected O, but got Unknown
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		if (!won)
		{
			PlayerAvatar val = hitObj.GetComponentInParent<PlayerAvatar>();
			if ((Object)(object)val == (Object)null && (Object)(object)hitObj.transform.root != (Object)null)
			{
				val = ((Component)hitObj.transform.root).GetComponent<PlayerAvatar>();
			}
			if ((Object)(object)val != (Object)null && (!SemiFunc.IsMultiplayer() || val.photonView.IsMine) && !val.isDisabled)
			{
				won = true;
				object[] array = new object[1] { val.photonView.ViewID };
				RaiseEventOptions val2 = new RaiseEventOptions
				{
					Receivers = (ReceiverGroup)1
				};
				SendOptions val3 = default(SendOptions);
				((SendOptions)(ref val3)).Reliability = true;
				SendOptions val4 = val3;
				PhotonNetwork.RaiseEvent((byte)155, (object)array, val2, val4);
			}
		}
	}

	public void OnEvent(EventData photonEvent)
	{
		if (photonEvent.Code != 155)
		{
			return;
		}
		PhotonView val = PhotonView.Find((int)((object[])photonEvent.CustomData)[0]);
		if (Object.op_Implicit((Object)(object)val))
		{
			PlayerAvatar component = ((Component)val).GetComponent<PlayerAvatar>();
			if (Object.op_Implicit((Object)(object)component))
			{
				ExecuteWinSequence(component);
			}
		}
	}

	private void ExecuteWinSequence(PlayerAvatar player)
	{
		//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
		won = true;
		Debug.Log((object)("[Obby] WINNER DETECTED VIA EVENT: " + ((Object)player).name));
		Arena.instance.winnerPlayer = player;
		SessionManager.instance.crownedPlayerSteamID = player.steamID;
		if (Object.op_Implicit((Object)(object)ArenaMessageWinUI.instance) && Object.op_Implicit((Object)(object)ArenaMessageWinUI.instance.kingObject))
		{
			MenuPlayerListed component = ArenaMessageWinUI.instance.kingObject.GetComponent<MenuPlayerListed>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.ForcePlayer(player);
			}
		}
		if (Object.op_Implicit((Object)(object)Arena.instance.crownExplosion))
		{
			Arena.instance.crownExplosion.SetActive(true);
		}
		if (Arena.instance.soundArenaMusicWinJingle != null)
		{
			Arena.instance.soundArenaMusicWinJingle.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f);
		}
		if (SemiFunc.IsMasterClientOrSingleplayer())
		{
			Arena.instance.StateSet((States)8);
		}
	}
}
namespace CustomArenaMod
{
	[BepInPlugin("com.Omniscye.OOBArena", "OOB Arena", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class MyArenaPlugin : BaseUnityPlugin
	{
		private void Awake()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			new Harmony("com.Omniscye.OOBArena").PatchAll();
			AssetBundle val = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "omniarena2"));
			if ((Object)(object)val != (Object)null)
			{
				GameObject val2 = val.LoadAsset<GameObject>("Start Room - OmniArena1");
				if ((Object)(object)val2 != (Object)null)
				{
					ArenaAPI.RegisterArena(val2, "Omniscye/OOBArena");
					((BaseUnityPlugin)this).Logger.LogInfo((object)"OOB Arena registered successfully via Empress ArenaAPI.");
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogError((object)"OOB Arena: Prefab 'Start Room - OmniArena2' not found in bundle!");
				}
			}
			else
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"OOB Arena: Failed to load AssetBundle 'omniarena2'!");
			}
		}
	}
	[HarmonyPatch(typeof(Arena), "StateFalling")]
	public static class Arena_StateFalling_Patch
	{
		private static Exception Finalizer(Exception __exception)
		{
			return null;
		}
	}
}