using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using KinematicCharacterController;
using R2API;
using RoR2;
using RoR2.Networking;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
[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 = "")]
[assembly: AssemblyCompany("MagicalWizard")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MagicalWizard")]
[assembly: AssemblyTitle("MagicalWizard")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace MagicalWizard;
[BepInPlugin("com.rob.MagicalWizardThatTeleportsYouToMithrix", "MagicalWizardThatTeleportsYouToMithrix", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
public const string MODUID = "com.rob.MagicalWizardThatTeleportsYouToMithrix";
public static AssetBundle mainAssetBundle;
public static GameObject wizardPrefab;
public static Vector3 moonSpawnPoint = new Vector3(2607.263f, 204.15f, 732.7989f);
public static Vector3 moon2SpawnPoint = new Vector3(1072f, -283.95f, 1150f);
public static Vector3 moonWarpPoint = new Vector3(128.1882f, 497.2452f, 160.3198f);
public static Vector3 moon2WarpPoint = new Vector3(128.1882f, 497.2452f, 160.3198f);
private void Awake()
{
//IL_00a5: 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)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: 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)
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MagicalWizard.robwizard"))
{
mainAssetBundle = AssetBundle.LoadFromStream(stream);
}
using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("MagicalWizard.wizard_bank.bnk"))
{
byte[] array = new byte[stream2.Length];
stream2.Read(array, 0, array.Length);
SoundBanks.Add(array);
}
GameObject val = mainAssetBundle.LoadAsset<GameObject>("mdlWizard");
SkinnedMeshRenderer componentInChildren = val.GetComponentInChildren<SkinnedMeshRenderer>();
((Renderer)componentInChildren).material.shader = Resources.Load<Shader>("Shaders/Deferred/HGStandard");
wizardPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Barrel1/Barrel1.prefab").WaitForCompletion(), "MagicalWizard", true);
wizardPrefab.GetComponent<Highlight>().targetRenderer.enabled = false;
((Component)wizardPrefab.GetComponent<Highlight>().targetRenderer).GetComponent<SkinnedMeshRenderer>().sharedMesh = null;
Object.Destroy((Object)(object)wizardPrefab.GetComponent<BarrelInteraction>());
Object.Destroy((Object)(object)wizardPrefab.GetComponent<GenericDisplayNameProvider>());
wizardPrefab.GetComponent<SfxLocator>().openSound = "";
Transform modelTransform = wizardPrefab.GetComponent<ModelLocator>().modelTransform;
wizardPrefab.AddComponent<WizardInteraction>().animator = val.GetComponentInChildren<Animator>();
((Behaviour)((Component)modelTransform).GetComponent<Animator>()).enabled = false;
((Renderer)((Component)modelTransform.Find("BarrelMesh")).GetComponent<SkinnedMeshRenderer>()).enabled = false;
val.transform.parent = ((Component)wizardPrefab.GetComponent<Highlight>().targetRenderer).transform;
val.transform.localPosition = new Vector3(0f, 0f, 0f);
val.transform.localRotation = Quaternion.Euler(new Vector3(90f, 0f, 0f));
wizardPrefab.GetComponent<Highlight>().targetRenderer = (Renderer)(object)componentInChildren;
((Component)componentInChildren).gameObject.AddComponent<EntityLocator>().entity = wizardPrefab;
Object.Destroy((Object)(object)wizardPrefab.transform.Find("HologramPivot"));
SceneManager.sceneLoaded += SceneManager_sceneLoaded;
}
private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "moon")
{
GameObject val = Object.Instantiate<GameObject>(wizardPrefab);
val.transform.position = moonSpawnPoint;
val.transform.rotation = Quaternion.Euler(new Vector3(0f, 130f, 0f));
return;
}
activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "moon2")
{
GameObject val2 = Object.Instantiate<GameObject>(wizardPrefab);
val2.transform.position = moon2SpawnPoint;
val2.transform.rotation = Quaternion.Euler(new Vector3(0f, 90f, 0f));
}
}
}
public class DelayedWarp : MonoBehaviour
{
private void Awake()
{
((MonoBehaviour)this).Invoke("Sound", 1.4f);
((MonoBehaviour)this).Invoke("Warp", 1.5f);
}
private void Sound()
{
Util.PlaySound("sfx_wizard_teleport", ((Component)this).gameObject);
}
private void Warp()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: 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)
Vector3 val = Plugin.moonWarpPoint;
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "moon2")
{
val = Plugin.moon2WarpPoint;
}
CharacterMotor component = ((Component)this).GetComponent<CharacterMotor>();
if (Object.op_Implicit((Object)(object)component))
{
((BaseCharacterController)component).Motor.SetPosition(val, true);
}
Object.Destroy((Object)(object)this);
}
}
public class WizardInteraction : NetworkBehaviour, IInteractable, IDisplayNameProvider
{
public string displayNameToken = "Raphael";
public string contextToken = "Ask for the wizard's help";
public Animator animator;
[SyncVar]
private bool opened;
private float stopwatch;
private uint playID;
public bool Networkopened
{
get
{
return opened;
}
[param: In]
set
{
((NetworkBehaviour)this).SetSyncVar<bool>(value, ref opened, 1u);
}
}
bool IInteractable.ShouldProximityHighlight()
{
return true;
}
public string GetContextString(Interactor activator)
{
return Language.GetString(contextToken);
}
public override int GetNetworkChannel()
{
return QosChannelIndex.defaultReliable.intVal;
}
public Interactability GetInteractability(Interactor activator)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
if (opened)
{
return (Interactability)0;
}
return (Interactability)2;
}
private void Update()
{
stopwatch -= Time.deltaTime;
if (stopwatch <= 0f)
{
opened = false;
Networkopened = false;
}
}
[Server]
public void OnInteractionBegin(Interactor activator)
{
if (!NetworkServer.active || opened)
{
return;
}
Networkopened = true;
if (Object.op_Implicit((Object)(object)animator))
{
animator.PlayInFixedTime("CastSpell");
}
Util.PlaySound("sfx_wizard_laugh2", ((Component)this).gameObject);
stopwatch = 1.55f;
if (Object.op_Implicit((Object)(object)activator))
{
((Component)activator).gameObject.AddComponent<DelayedWarp>();
CharacterBody component = ((Component)activator).GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)component))
{
component.AddTimedBuff(Buffs.Immune, 1.5f);
}
}
}
public string GetDisplayName()
{
return Language.GetString(displayNameToken);
}
public bool ShouldIgnoreSpherecastForInteractibility(Interactor activator)
{
return false;
}
public void OnEnable()
{
playID = Util.PlaySound("sfx_wizard_bgm", ((Component)this).gameObject);
InstanceTracker.Add<WizardInteraction>(this);
}
public void OnDisable()
{
AkSoundEngine.StopPlayingID(playID);
InstanceTracker.Remove<WizardInteraction>(this);
}
public bool ShouldShowOnScanner()
{
return !opened;
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.Write(opened);
return true;
}
bool flag = false;
if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
flag = true;
}
writer.Write(opened);
}
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
opened = reader.ReadBoolean();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
opened = reader.ReadBoolean();
}
}
public override void PreStartClient()
{
}
}