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;
}
}
}