using System;
using System.Collections.Generic;
using System.Diagnostics;
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.Logging;
using Fusion;
using Helpers.Collections;
using Microsoft.CodeAnalysis;
using On;
using SneakyTP.Patchs;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("SneakyTP")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+c2aa5d0f95d7b37c753723a73557d872fd6ae7f6")]
[assembly: AssemblyProduct("SneakyTP")]
[assembly: AssemblyTitle("SneakyTP")]
[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.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace SneakyTP
{
internal static class Log
{
private static ManualLogSource _logSource;
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void Debug(object data)
{
_logSource.LogDebug(data);
}
internal static void Error(object data)
{
_logSource.LogError(data);
}
internal static void Fatal(object data)
{
_logSource.LogFatal(data);
}
internal static void Info(object data)
{
_logSource.LogInfo(data);
}
internal static void Message(object data)
{
_logSource.LogMessage(data);
}
internal static void Warning(object data)
{
_logSource.LogWarning(data);
}
}
[BepInPlugin("LloydHawkeye.SneakyTP", "SneakyTP", "1.0.0")]
[BepInProcess("Lycans.exe")]
public class SneakyTP : BaseUnityPlugin
{
public const string PLUGIN_GUID = "LloydHawkeye.SneakyTP";
public const string PLUGIN_AUTHOR = "LloydHawkeye";
public const string PLUGIN_NAME = "SneakyTP";
public const string PLUGIN_VERSION = "1.0.0";
private void Awake()
{
Log.Init(((BaseUnityPlugin)this).Logger);
PlayerEffectsManagerPatcher.Patch();
PortalPatcher.Patch();
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "SneakyTP";
public const string PLUGIN_NAME = "SneakyTP";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace SneakyTP.Patchs
{
internal class PlayerEffectsManagerPatcher
{
[CompilerGenerated]
private static class <>O
{
public static hook_CheckTeleportation <0>__PlayerEffectsManager_CheckTeleportation;
}
public static void Patch()
{
//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_001c: Expected O, but got Unknown
object obj = <>O.<0>__PlayerEffectsManager_CheckTeleportation;
if (obj == null)
{
hook_CheckTeleportation val = PlayerEffectsManager_CheckTeleportation;
<>O.<0>__PlayerEffectsManager_CheckTeleportation = val;
obj = (object)val;
}
PlayerEffectsManager.CheckTeleportation += (hook_CheckTeleportation)obj;
}
private static void PlayerEffectsManager_CheckTeleportation(orig_CheckTeleportation orig, PlayerEffectsManager self)
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: 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_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
//IL_02db: Unknown result type (might be due to invalid IL or missing references)
//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: 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_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: 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_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_017e: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: 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_019a: Unknown result type (might be due to invalid IL or missing references)
//IL_032e: Unknown result type (might be due to invalid IL or missing references)
//IL_027a: Unknown result type (might be due to invalid IL or missing references)
//IL_027f: Unknown result type (might be due to invalid IL or missing references)
//IL_0125: Unknown result type (might be due to invalid IL or missing references)
//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_0232: Unknown result type (might be due to invalid IL or missing references)
//IL_0234: Unknown result type (might be due to invalid IL or missing references)
//IL_0237: Unknown result type (might be due to invalid IL or missing references)
//IL_024e: Unknown result type (might be due to invalid IL or missing references)
//IL_01c4: 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_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: 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)
//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
if (!((SimulationBehaviour)self).HasStateAuthority)
{
return;
}
TickTimer teleportationTimer = self.TeleportationTimer;
if (!((TickTimer)(ref teleportationTimer)).Expired(((SimulationBehaviour)self).Runner) || NetworkBool.op_Implicit(self._playerController.IsDead))
{
return;
}
float num;
if (((IEnumerable<KeyValuePair<PlayerRef, Vector3>>)(object)self.PlayerPositions).Any())
{
Dictionary<PlayerController, Vector3> dictionary = new Dictionary<PlayerController, Vector3>();
Enumerator<PlayerRef, Vector3> enumerator = self.PlayerPositions.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
KeyValuePair<PlayerRef, Vector3> current = enumerator.Current;
PlayerController player = PlayerRegistry.GetPlayer(current.Key);
if ((Object)(object)player != (Object)null)
{
Vector3 position = ((Component)player).transform.position;
Vector3 oldPosition = current.Value;
if (!PlayerRegistry.Any((Predicate<PlayerController>)((PlayerController p) => Vector3.Distance(((Component)p).transform.position, oldPosition) < 0.5f)) && Vector3.Distance(position, oldPosition) >= 0.5f)
{
dictionary.Add(player, oldPosition);
}
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
if (dictionary.Any())
{
PlayerController val = CollectionsUtil.Grab<PlayerController>(dictionary.Keys.ToList(), 1).First();
Vector3 val2 = dictionary[val];
Quaternion val3 = ((Component)self._playerController).transform.rotation;
if ((Object)(object)val != (Object)null && (Object)(object)((Component)val).transform != (Object)null)
{
Vector3 val4 = ((Component)val).transform.position - val2;
val4.y = 0f;
val3 = Quaternion.LookRotation(val4);
}
GameManager.Rpc_BroadcastFollowSound(((SimulationBehaviour)self).Runner, NetworkString<_16>.op_Implicit("TELEPORT_START"), ((Component)self._playerController).transform.position, 20f, 1f);
self._playerController.CharacterMovementHandler.TeleportData = new NetworkTeleportData(val2, val3, true);
self._playerController.IsClimbing = NetworkBool.op_Implicit(false);
num = Random.Range(5f, 20f);
}
else
{
num = 0.5f;
}
self.PlayerPositions.Clear();
}
else
{
foreach (PlayerController item in PlayerRegistry.Where((Predicate<PlayerController>)((PlayerController p) => (Object)(object)p != (Object)(object)self._playerController && !NetworkBool.op_Implicit(p.IsDead) && !NetworkBool.op_Implicit(p.IsClimbing) && Vector3.Distance(((Component)self._playerController).transform.position, ((Component)p).transform.position) >= 35f)))
{
self.PlayerPositions.Add(item.Ref, ((Component)item).transform.position);
}
num = Random.Range(0.1f, 1f);
}
self.TeleportationTimer = TickTimer.CreateFromSeconds(((SimulationBehaviour)self).Runner, num);
}
}
internal class PortalPatcher
{
[CompilerGenerated]
private static class <>O
{
public static hook_OnTriggerEnter <0>__Portal_OnTriggerEnter;
}
public static void Patch()
{
//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_001c: Expected O, but got Unknown
object obj = <>O.<0>__Portal_OnTriggerEnter;
if (obj == null)
{
hook_OnTriggerEnter val = Portal_OnTriggerEnter;
<>O.<0>__Portal_OnTriggerEnter = val;
obj = (object)val;
}
Portal.OnTriggerEnter += (hook_OnTriggerEnter)obj;
}
private static void Portal_OnTriggerEnter(orig_OnTriggerEnter orig, Portal self, Collider other)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: 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_0104: 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_0128: 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)
if (!NetworkBool.op_Implicit(self.Active))
{
return;
}
PlayerController component = ((Component)other).gameObject.GetComponent<PlayerController>();
if ((Object)(object)component != (Object)null && !NetworkBool.op_Implicit(component.IsDead) && ((SimulationBehaviour)self).HasStateAuthority)
{
List<Portal> list = (from p in Object.FindObjectsOfType<Portal>().ToList()
where (Object)(object)p != (Object)(object)self
select p).ToList();
if (list.Any())
{
self.StartActivationTimer();
Portal val = CollectionsUtil.Grab<Portal>(list, 1).First();
val.StartActivationTimer();
Transform teleportPoint = val.teleportPoint;
Vector3 position = ((Component)val).transform.position;
self.Rpc_DisplayLight();
val.Rpc_DisplayLight();
GameManager.Rpc_BroadcastFollowSound(((SimulationBehaviour)self).Runner, NetworkString<_16>.op_Implicit("TELEPORT_START"), ((Component)self).transform.position, 30f, 1f);
component.CharacterMovementHandler.TeleportData = new NetworkTeleportData(teleportPoint.position, teleportPoint.rotation, true);
}
}
}
}
}