using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Sirenix.Utilities;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Video;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("EmptyChildMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EmptyChildMod")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("eb22faed-b405-4d38-9eb8-cae6b316dbed")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace TARDISMod;
[BepInPlugin("com.you.tardisroom", "TARDIS Room Loader", "1.0.0")]
public static class PaintingGroups
{
public static readonly Dictionary<string, string> MaterialToGroup = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Painting_H_Landscape", "TARGET_LANDSCAPE" },
{ "Painting_V_Furman", "TARGET_FURMAN" },
{ "Painting_H_crow", "GROUP_H_CROW" },
{ "Painting_H_crow_0", "GROUP_H_CROW_0" },
{ "PaintingMedium", "GROUP_MEDIUM" },
{ "Painting_Danish_Flag", "GROUP_DANISH" },
{ "Painting_Board", "GROUP_BOARD" },
{ "Painting Danish Flag", "GROUP_DANISH_FLAG" },
{ "Painting Board", "GROUP_PAINTING_BOARD" },
{ "Shop Outside Billboard Ad", "GROUP_BILLBOARD" },
{ "Museum Sign", "GROUP_MUSEUM_SIGN" },
{ "Museum Painting H 01", "GROUP_MUSEUM_H_01" },
{ "Museum Painting H 02", "GROUP_MUSEUM_H_02" },
{ "Museum Painting H 03", "GROUP_MUSEUM_H_03" },
{ "Museum Painting H 04", "GROUP_MUSEUM_H_04" },
{ "Museum Painting H 05", "GROUP_MUSEUM_H_05" },
{ "Museum Painting H 06", "GROUP_MUSEUM_H_06" },
{ "Museum Painting H 07", "GROUP_MUSEUM_H_07" },
{ "Museum Painting H 08", "GROUP_MUSEUM_H_08" },
{ "Museum Painting H 09", "GROUP_MUSEUM_H_09" },
{ "Museum Painting H 10", "GROUP_MUSEUM_H_10" },
{ "Museum Painting H 11", "GROUP_MUSEUM_H_11" },
{ "Museum Painting H 12", "GROUP_MUSEUM_H_12" },
{ "Museum Painting H 13", "GROUP_MUSEUM_H_13" },
{ "Museum Painting H 14", "GROUP_MUSEUM_H_14" },
{ "Museum Painting H 15", "GROUP_MUSEUM_H_15" },
{ "Museum Painting H 16", "GROUP_MUSEUM_H_16" },
{ "Museum Painting H 17", "GROUP_MUSEUM_H_17" },
{ "Museum Painting H 18", "GROUP_MUSEUM_H_18" },
{ "Museum Painting H 19", "GROUP_MUSEUM_H_19" },
{ "Museum Painting H 20", "GROUP_MUSEUM_H_20" },
{ "Museum Painting H 21", "GROUP_MUSEUM_H_21" },
{ "Museum Painting H 22", "GROUP_MUSEUM_H_22" },
{ "Museum Painting H 23", "GROUP_MUSEUM_H_23" },
{ "Museum Painting H 24", "GROUP_MUSEUM_H_24" },
{ "Museum Painting H 25", "GROUP_MUSEUM_H_25" },
{ "Museum Painting H 26", "GROUP_MUSEUM_H_26" },
{ "Museum Painting H 27", "GROUP_MUSEUM_H_27" },
{ "Museum Painting H 28", "GROUP_MUSEUM_H_28" },
{ "Museum Painting H 29", "GROUP_MUSEUM_H_29" },
{ "Museum Painting H 30", "GROUP_MUSEUM_H_30" },
{ "Museum Painting H 31", "GROUP_MUSEUM_H_31" },
{ "Museum Painting H 32", "GROUP_MUSEUM_H_32" },
{ "Museum Painting H 33", "GROUP_MUSEUM_H_33" },
{ "Museum Painting H 35", "GROUP_MUSEUM_H_35" },
{ "Museum Painting H 37", "GROUP_MUSEUM_H_37" },
{ "Museum Painting H 38", "GROUP_MUSEUM_H_38" },
{ "Museum Painting H 39", "GROUP_MUSEUM_H_39" },
{ "Museum Painting H 40", "GROUP_MUSEUM_H_40" },
{ "Museum Painting H 42", "GROUP_MUSEUM_H_42" },
{ "Museum Painting H 45", "GROUP_MUSEUM_H_45" },
{ "Painting_S_Creep", "GROUP_S_CREEP" },
{ "Painting_S_Creep 2_0", "GROUP_S_CREEP_2_0" },
{ "Painting_S_Creep 2", "GROUP_S_CREEP_2" },
{ "Painting Wizard Class", "GROUP_WIZARD" },
{ "Picture Frame - Picture 01", "GROUP_FRAME" },
{ "Painting_Aurora", "GROUP_AURORA" },
{ "Painting_McJannek", "GROUP_MCJANNEK" },
{ "Painting Aurora", "GROUP_AURORA_2" },
{ "Painting McJannek", "GROUP_MCJANNEK_2" },
{ "Museum Painting S 01", "GROUP_MUSEUM_S_01" },
{ "Museum Painting S 02", "GROUP_MUSEUM_S_02" },
{ "Museum Painting S 03", "GROUP_MUSEUM_S_03" },
{ "Museum Painting S 04", "GROUP_MUSEUM_S_04" },
{ "Museum Painting S 05", "GROUP_MUSEUM_S_05" },
{ "Museum Painting S 06", "GROUP_MUSEUM_S_06" },
{ "Museum Painting S 07", "GROUP_MUSEUM_S_07" },
{ "Museum Painting S 08", "GROUP_MUSEUM_S_08" },
{ "Museum Painting S 09", "GROUP_MUSEUM_S_09" },
{ "Museum Painting S 10", "GROUP_MUSEUM_S_10" },
{ "Museum Painting S 11", "GROUP_MUSEUM_S_11" },
{ "Museum Painting S 12", "GROUP_MUSEUM_S_12" },
{ "Museum Painting S 13", "GROUP_MUSEUM_S_13" },
{ "Museum Painting S 15", "GROUP_MUSEUM_S_15" },
{ "Painting_V_jannk", "GROUP_V_JANNK" },
{ "Painting_V_surrealistic", "GROUP_V_SURREAL" },
{ "Painting_V_surrealistic_0", "GROUP_V_SURREAL_0" },
{ "painting teacher01", "GROUP_TEACHER_01" },
{ "painting teacher02", "GROUP_TEACHER_02" },
{ "painting teacher03", "GROUP_TEACHER_03" },
{ "painting teacher04", "GROUP_TEACHER_04" },
{ "Painting_S_Tree", "GROUP_S_TREE" },
{ "Painting Calendar", "GROUP_CALENDAR" },
{ "Magazine01", "GROUP_MAG_01" },
{ "Magazine02", "GROUP_MAG_02" },
{ "Magazine03", "GROUP_MAG_03" },
{ "Magazine04", "GROUP_MAG_04" },
{ "Magazine05", "GROUP_MAG_05" },
{ "Valuable_Painting", "GROUP_VALUABLE" },
{ "Museum Painting V 01", "GROUP_MUSEUM_V_01" },
{ "Museum Painting V 02", "GROUP_MUSEUM_V_02" },
{ "Museum Painting V 03", "GROUP_MUSEUM_V_03" },
{ "Museum Painting V 05", "GROUP_MUSEUM_V_05" },
{ "Museum Painting V 07", "GROUP_MUSEUM_V_07" },
{ "Museum Painting V 09", "GROUP_MUSEUM_V_09" },
{ "Museum Painting V 15", "GROUP_MUSEUM_V_15" },
{ "Museum Painting V 16", "GROUP_MUSEUM_V_16" },
{ "Museum Painting V 17", "GROUP_MUSEUM_V_17" },
{ "Museum Painting V 18", "GROUP_MUSEUM_V_18" },
{ "Museum Painting V 19", "GROUP_MUSEUM_V_19" },
{ "Museum Painting V 20", "GROUP_MUSEUM_V_20" },
{ "Museum Painting V 21", "GROUP_MUSEUM_V_21" },
{ "Museum Painting V 22", "GROUP_MUSEUM_V_22" },
{ "Museum Painting V 23", "GROUP_MUSEUM_V_23" },
{ "Museum Painting V 24", "GROUP_MUSEUM_V_24" },
{ "Museum Painting V 25", "GROUP_MUSEUM_V_25" },
{ "Museum Painting V 26", "GROUP_MUSEUM_V_26" },
{ "Museum Painting V 27", "GROUP_MUSEUM_V_27" },
{ "Museum Painting V 28", "GROUP_MUSEUM_V_28" },
{ "Museum Painting V 29", "GROUP_MUSEUM_V_29" },
{ "Museum Painting V 30", "GROUP_MUSEUM_V_30" },
{ "Museum Painting V 31", "GROUP_MUSEUM_V_31" },
{ "Museum Painting V 32", "GROUP_MUSEUM_V_32" },
{ "Museum Painting V 34", "GROUP_MUSEUM_V_34" },
{ "Museum Painting V 35", "GROUP_MUSEUM_V_35" },
{ "Museum Painting V 36", "GROUP_MUSEUM_V_36" }
};
}
[HarmonyPatch(typeof(PlayerAvatar), "LoadingLevelAnimationCompletedRPC")]
public class LevelLoadedPaintingPatch
{
public static void Postfix()
{
((MonoBehaviour)Plugin.Instance).StartCoroutine(Plugin.Instance.GlobalPaintingSweep());
}
}
[BepInPlugin("com.you.tardisroom", "TARDIS Room Loader", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
public class PlaySoundOnPhysGrab : MonoBehaviour
{
private PhysGrabObject physGrab;
private AudioSource audioSource;
private bool wasGrabbedLastFrame = false;
private void Awake()
{
physGrab = ((Component)this).GetComponent<PhysGrabObject>();
audioSource = ((Component)this).gameObject.GetComponent<AudioSource>() ?? ((Component)this).gameObject.AddComponent<AudioSource>();
audioSource.playOnAwake = false;
audioSource.spatialBlend = 1f;
audioSource.minDistance = 1f;
audioSource.maxDistance = 10f;
if ((Object)(object)TARDISGrabSound != (Object)null)
{
audioSource.clip = TARDISGrabSound;
}
}
private void Update()
{
if (!((Object)(object)physGrab == (Object)null))
{
bool flag = physGrab.playerGrabbing != null && physGrab.playerGrabbing.Count > 0;
if (flag && !wasGrabbedLastFrame && (Object)(object)audioSource.clip != (Object)null)
{
audioSource.PlayOneShot(audioSource.clip);
}
wasGrabbedLastFrame = flag;
}
}
}
public static class NightMusicPatch
{
public static void Postfix(ConstantMusic __instance, ref bool ___setup)
{
if (!(((Object)((Component)__instance).gameObject).name != "Outside Night Music") && ___setup && !((Object)(object)TARDISNightSound == (Object)null))
{
AudioSource component = ((Component)__instance).GetComponent<AudioSource>();
if (!((Object)(object)component == (Object)null) && !((Object)(object)component.clip == (Object)(object)TARDISNightSound))
{
component.Stop();
component.clip = TARDISNightSound;
component.loop = true;
component.Play();
component.volume = 1f;
Log.LogInfo((object)"TARDIS: 'Outside Night Music' found and swapped to TARDIS Night Sound.");
}
}
}
}
public class ProximityLookAwayDisappear : MonoBehaviour
{
[CompilerGenerated]
private sealed class <Dematerialise>d__17 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public ProximityLookAwayDisappear <>4__this;
private float <timer>5__1;
private List<Renderer>.Enumerator <>s__2;
private Renderer <r>5__3;
private Material[] <>s__4;
private int <>s__5;
private Material <m>5__6;
private float <progress>5__7;
private float <pulse>5__8;
private float <alpha>5__9;
private List<Renderer>.Enumerator <>s__10;
private Renderer <r>5__11;
private Material[] <>s__12;
private int <>s__13;
private Material <m>5__14;
private Color <c>5__15;
private List<Renderer>.Enumerator <>s__16;
private Renderer <r>5__17;
private Collider[] <>s__18;
private int <>s__19;
private Collider <col>5__20;
private Light[] <>s__21;
private int <>s__22;
private Light <lit>5__23;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <Dematerialise>d__17(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>s__2 = default(List<Renderer>.Enumerator);
<r>5__3 = null;
<>s__4 = null;
<m>5__6 = null;
<>s__10 = default(List<Renderer>.Enumerator);
<r>5__11 = null;
<>s__12 = null;
<m>5__14 = null;
<>s__16 = default(List<Renderer>.Enumerator);
<r>5__17 = null;
<>s__18 = null;
<col>5__20 = null;
<>s__21 = null;
<lit>5__23 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0322: Unknown result type (might be due to invalid IL or missing references)
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(<>4__this.audioDelay);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
if ((Object)(object)<>4__this.audioSource != (Object)null)
{
((Component)<>4__this.audioSource).transform.SetParent((Transform)null);
}
<>s__2 = <>4__this.renderers.GetEnumerator();
try
{
while (<>s__2.MoveNext())
{
<r>5__3 = <>s__2.Current;
<>s__4 = <r>5__3.materials;
for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++)
{
<m>5__6 = <>s__4[<>s__5];
<>4__this.SetMaterialTransparent(<m>5__6);
<m>5__6 = null;
}
<>s__4 = null;
<r>5__3 = null;
}
}
finally
{
((IDisposable)<>s__2).Dispose();
}
<>s__2 = default(List<Renderer>.Enumerator);
<timer>5__1 = 0f;
break;
case 2:
<>1__state = -1;
break;
}
if (<timer>5__1 < <>4__this.dematDuration)
{
<timer>5__1 += Time.deltaTime;
<progress>5__7 = <timer>5__1 / <>4__this.dematDuration;
<pulse>5__8 = Mathf.Sin(<timer>5__1 * <>4__this.pulseSpeed * (float)Math.PI * 2f) * <>4__this.pulseStrength * (1f - <progress>5__7);
<alpha>5__9 = Mathf.Clamp01(1f - <progress>5__7 + <pulse>5__8);
<>s__10 = <>4__this.renderers.GetEnumerator();
try
{
while (<>s__10.MoveNext())
{
<r>5__11 = <>s__10.Current;
<>s__12 = <r>5__11.materials;
for (<>s__13 = 0; <>s__13 < <>s__12.Length; <>s__13++)
{
<m>5__14 = <>s__12[<>s__13];
if (<>4__this.originalColors.TryGetValue(<m>5__14, out <c>5__15))
{
if (((Object)<m>5__14).name.Contains("New Material2"))
{
<m>5__14.EnableKeyword("_EMISSION");
<m>5__14.SetColor("_EmissionColor", Color.white * 2f);
}
<c>5__15.a = <alpha>5__9;
if (<m>5__14.HasProperty("_BaseColor"))
{
<m>5__14.SetColor("_BaseColor", <c>5__15);
}
else if (<m>5__14.HasProperty("_Color"))
{
<m>5__14.SetColor("_Color", <c>5__15);
}
<m>5__14 = null;
}
}
<>s__12 = null;
<r>5__11 = null;
}
}
finally
{
((IDisposable)<>s__10).Dispose();
}
<>s__10 = default(List<Renderer>.Enumerator);
<>2__current = null;
<>1__state = 2;
return true;
}
<>s__16 = <>4__this.renderers.GetEnumerator();
try
{
while (<>s__16.MoveNext())
{
<r>5__17 = <>s__16.Current;
<r>5__17.enabled = false;
<r>5__17 = null;
}
}
finally
{
((IDisposable)<>s__16).Dispose();
}
<>s__16 = default(List<Renderer>.Enumerator);
<>s__18 = <>4__this.targetObject.GetComponentsInChildren<Collider>(true);
for (<>s__19 = 0; <>s__19 < <>s__18.Length; <>s__19++)
{
<col>5__20 = <>s__18[<>s__19];
<col>5__20.enabled = false;
<col>5__20 = null;
}
<>s__18 = null;
<>s__21 = <>4__this.targetObject.GetComponentsInChildren<Light>(true);
for (<>s__22 = 0; <>s__22 < <>s__21.Length; <>s__22++)
{
<lit>5__23 = <>s__21[<>s__22];
((Behaviour)<lit>5__23).enabled = false;
<lit>5__23 = null;
}
<>s__21 = null;
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[Header("Target")]
public GameObject targetObject;
[Header("Activation Anchor")]
public Transform activationAnchor;
[Header("Distances")]
public float activationDistance = 2.5f;
public float disappearDistance = 6f;
[Header("Audio")]
public AudioSource audioSource;
public AudioClip disappearClip;
[Header("Dematerialisation")]
public float audioDelay = 1.5f;
public float dematDuration = 16.5f;
public float pulseStrength = 0.6f;
public float pulseSpeed = 0.6f;
private bool activated = false;
private bool triggered = false;
private List<Renderer> renderers = new List<Renderer>();
private Dictionary<Material, Color> originalColors = new Dictionary<Material, Color>();
private void Start()
{
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)targetObject == (Object)null)
{
targetObject = ((Component)this).gameObject;
}
if ((Object)(object)activationAnchor == (Object)null)
{
activationAnchor = targetObject.transform;
}
renderers.AddRange(targetObject.GetComponentsInChildren<Renderer>(true));
foreach (Renderer renderer in renderers)
{
Material[] materials = renderer.materials;
foreach (Material val in materials)
{
if (!originalColors.ContainsKey(val))
{
if (val.HasProperty("_BaseColor"))
{
originalColors[val] = val.GetColor("_BaseColor");
}
else if (val.HasProperty("_Color"))
{
originalColors[val] = val.GetColor("_Color");
}
}
}
}
}
private void Update()
{
//IL_0027: 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)
if (triggered || (Object)(object)Camera.main == (Object)null)
{
return;
}
float num = Vector3.Distance(((Component)Camera.main).transform.position, activationAnchor.position);
if (!activated)
{
if (num <= activationDistance)
{
activated = true;
}
}
else if (num >= disappearDistance)
{
TriggerDisappear();
}
}
private void TriggerDisappear()
{
triggered = true;
if ((Object)(object)audioSource != (Object)null && (Object)(object)disappearClip != (Object)null)
{
audioSource.PlayOneShot(disappearClip);
}
((MonoBehaviour)this).StartCoroutine(Dematerialise());
}
[IteratorStateMachine(typeof(<Dematerialise>d__17))]
private IEnumerator Dematerialise()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <Dematerialise>d__17(0)
{
<>4__this = this
};
}
private void SetMaterialTransparent(Material mat)
{
if (mat.HasProperty("_Surface"))
{
mat.SetFloat("_Surface", 1f);
mat.SetFloat("_ZWrite", 0f);
mat.EnableKeyword("_SURFACE_TYPE_TRANSPARENT");
mat.renderQueue = 3000;
}
else
{
mat.SetFloat("_Mode", 3f);
mat.SetInt("_SrcBlend", 5);
mat.SetInt("_DstBlend", 10);
mat.SetInt("_ZWrite", 0);
mat.EnableKeyword("_ALPHABLEND_ON");
mat.renderQueue = 3000;
}
}
}
public static class PrefabSwapPatch
{
public static void Postfix(string name, Type type, ref Object __result)
{
if (!((Object)(object)TARDISPrefab == (Object)null) && !string.IsNullOrEmpty(name) && name.Contains("Treasure Trove"))
{
Log.LogInfo((object)("TARDIS: Swapping asset load -> " + name));
__result = (Object)(object)TARDISPrefab;
}
}
}
public class VideoFacePlayer : MonoBehaviour
{
private void Update()
{
if ((Object)(object)Camera.main != (Object)null)
{
((Component)this).transform.LookAt(((Component)Camera.main).transform);
((Component)this).transform.Rotate(0f, 180f, 0f);
}
}
}
public static class MenuMusicPatch
{
public static void Postfix(ConstantMusic __instance, ref bool ___setup)
{
if (___setup && !((Object)(object)TARDISMenuTheme == (Object)null))
{
AudioSource component = ((Component)__instance).GetComponent<AudioSource>();
if (!((Object)(object)component == (Object)null) && !((Object)(object)component.clip == (Object)(object)TARDISMenuTheme))
{
component.Stop();
component.clip = TARDISMenuTheme;
component.loop = true;
component.Play();
Log.LogInfo((object)"TARDIS: Menu music successfully swapped via manual patch.");
}
}
}
}
public static class ComponentInjectorPatch
{
private static HashSet<int> loggedIds = new HashSet<int>();
public static void Postfix(Object original, ref Object __result)
{
//IL_0427: Unknown result type (might be due to invalid IL or missing references)
//IL_0439: Unknown result type (might be due to invalid IL or missing references)
//IL_05a8: Unknown result type (might be due to invalid IL or missing references)
//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
//IL_0ab9: Unknown result type (might be due to invalid IL or missing references)
//IL_0acb: Unknown result type (might be due to invalid IL or missing references)
Object obj = __result;
GameObject val = (GameObject)(object)((obj is GameObject) ? obj : null);
if (val == null)
{
return;
}
int instanceID = ((Object)val).GetInstanceID();
if (!loggedIds.Contains(instanceID))
{
AudioSource[] componentsInChildren = val.GetComponentsInChildren<AudioSource>(true);
if (componentsInChildren.Length != 0)
{
Log.LogInfo((object)$"[TARDIS MONITOR] {((Object)val).name} | Sounds: {componentsInChildren.Length}");
AudioSource[] array = componentsInChildren;
foreach (AudioSource val2 in array)
{
Log.LogWarning((object)(" -> " + ((Object)((Component)val2).gameObject).name + " | Clip: " + (((Object)(object)val2.clip != (Object)null) ? ((Object)val2.clip).name : "NULL")));
}
}
loggedIds.Add(instanceID);
}
if (((Object)val).name.Contains("OutTardis"))
{
Log.LogInfo((object)"TARDIS: configuring OutTardis Audio...");
Transform val3 = val.transform.FindRecursive("Audio Loop Distance");
if (!((Object)(object)val3 != (Object)null))
{
Log.LogWarning((object)"TARDIS: Could not find 'Audio Loop Distance' to disable wind.");
}
AudioSource[] componentsInChildren2 = val.GetComponentsInChildren<AudioSource>(true);
AudioSource[] array2 = componentsInChildren2;
foreach (AudioSource val4 in array2)
{
if (((Object)((Component)val4).gameObject).name == "Audio Loop Distance")
{
continue;
}
if ((Object)(object)val4.clip == (Object)null && (Object)(object)OutTardisClip != (Object)null)
{
val4.clip = OutTardisClip;
}
if ((Object)(object)val4.clip != (Object)null && ((Object)val4.clip).name.Contains("outtardis"))
{
AudioSource val5 = ((val3 != null) ? ((Component)val3).GetComponent<AudioSource>() : null);
if ((Object)(object)val5 != (Object)null && (Object)(object)val5.outputAudioMixerGroup != (Object)null)
{
val4.outputAudioMixerGroup = val5.outputAudioMixerGroup;
}
((Component)val4).gameObject.SetActive(true);
((Behaviour)val4).enabled = true;
val4.mute = false;
val4.volume = 1f;
val4.spatialBlend = 0f;
val4.dopplerLevel = 0.1f;
val4.rolloffMode = (AudioRolloffMode)0;
val4.minDistance = 5f;
val4.maxDistance = 60f;
val4.loop = true;
if (!val4.isPlaying)
{
val4.Play();
Log.LogInfo((object)("TARDIS: Playing TARDIS sound on " + ((Object)((Component)val4).gameObject).name));
}
}
}
}
if (((Object)val).name.Contains("Treasure Trove") && (Object)(object)val.transform.Find("TARDIS_Model") == (Object)null)
{
((BaseUnityPlugin)Instance).Logger.LogInfo((object)"TARDIS: Ghosting Treasure Trove (Logic stays, visuals/physics go).");
if ((Object)(object)TARDISPrefab != (Object)null)
{
Renderer[] componentsInChildren3 = val.GetComponentsInChildren<Renderer>(true);
foreach (Renderer val6 in componentsInChildren3)
{
val6.enabled = false;
}
Collider[] componentsInChildren4 = val.GetComponentsInChildren<Collider>(true);
foreach (Collider val7 in componentsInChildren4)
{
val7.enabled = false;
}
Renderer[] componentsInParent = val.GetComponentsInParent<Renderer>(true);
foreach (Renderer val8 in componentsInParent)
{
val8.enabled = false;
}
Collider[] componentsInParent2 = val.GetComponentsInParent<Collider>(true);
foreach (Collider val9 in componentsInParent2)
{
val9.enabled = false;
}
GameObject val10 = Object.Instantiate<GameObject>(TARDISPrefab, val.transform);
val10.transform.localPosition = Vector3.zero;
val10.transform.localRotation = Quaternion.identity;
Instance.SetupTARDISComponents(val10);
__result = (Object)(object)val10;
}
else
{
((BaseUnityPlugin)Instance).Logger.LogError((object)"TARDIS: Prefab is null, cannot replace!");
}
}
else if (((Object)val).name.Contains("Tardis") || (Object)(object)val.transform.Find("TARDIS_Model") != (Object)null)
{
Instance.SetupTARDISComponents(val);
}
bool flag = ((Object)val).name.Contains("Module - Manor - DE - 2 - Outside Dead End");
if (((Object)val).name.Contains("Module - Manor - DE - 2 - Outside Dead End"))
{
if ((Object)(object)val.transform.Find("OutTardis_Marker") != (Object)null)
{
return;
}
((BaseUnityPlugin)Instance).Logger.LogInfo((object)"TARDIS: Dead End detected. Replacing visuals and updating audio...");
Renderer[] componentsInChildren5 = val.GetComponentsInChildren<Renderer>(true);
foreach (Renderer val11 in componentsInChildren5)
{
val11.enabled = false;
}
Collider[] componentsInChildren6 = val.GetComponentsInChildren<Collider>(true);
foreach (Collider val12 in componentsInChildren6)
{
val12.enabled = false;
}
if ((Object)(object)OutTardisPrefab != (Object)null)
{
GameObject val13 = Object.Instantiate<GameObject>(OutTardisPrefab, val.transform);
((Object)val13).name = "OutTardis_Marker";
val13.transform.localPosition = Vector3.zero;
val13.transform.localRotation = Quaternion.identity;
bool flag2 = false;
if (((Object)val).name.Contains("doctorwhoShip") || ((Object)val).name.Contains("doctorwhoShip Variant") || ((Object)val).name.Contains("Cylinder001"))
{
Log.LogInfo((object)("TARDIS: Dalek/Ship detected (" + ((Object)val).name + "). Injecting Audio..."));
Transform val14 = val.transform.FindRecursive("sound");
GameObject val15 = (((Object)(object)val14 != (Object)null) ? ((Component)val14).gameObject : val);
AudioSource val16 = val15.GetComponent<AudioSource>() ?? val15.AddComponent<AudioSource>();
AudioSource componentInChildren = val.GetComponentInChildren<AudioSource>(true);
SetupTardisAudioSource(val16);
((Behaviour)val16).enabled = true;
val16.mute = false;
val16.volume = 1f;
Log.LogInfo((object)("TARDIS: AudioSource active on " + ((Object)val15).name));
}
if (((Object)val).name.Contains("OutTardis"))
{
Transform val17 = val.transform.FindRecursive("Audio Loop Distance");
if ((Object)(object)val17 != (Object)null)
{
((Component)val17).gameObject.SetActive(false);
}
AudioSource[] componentsInChildren7 = val.GetComponentsInChildren<AudioSource>(true);
AudioSource[] array3 = componentsInChildren7;
foreach (AudioSource val18 in array3)
{
if ((Object)(object)val18.clip != (Object)null && ((Object)val18.clip).name.Contains("outtardis"))
{
val18.spatialBlend = 1f;
val18.rolloffMode = (AudioRolloffMode)1;
val18.minDistance = 1f;
val18.maxDistance = 25f;
val18.loop = true;
val18.volume = 0.8f;
if (!val18.isPlaying)
{
val18.Play();
}
Log.LogInfo((object)("TARDIS: Successfully tuned " + ((Object)((Component)val18).gameObject).name));
}
}
}
AudioSource[] componentsInChildren8 = val.GetComponentsInChildren<AudioSource>(true);
Log.LogInfo((object)$"TARDIS DEBUG: {((Object)val).name} spawned with {componentsInChildren8.Length} AudioSources.");
AudioSource[] array4 = componentsInChildren8;
foreach (AudioSource val19 in array4)
{
string text = (((Object)(object)val19.clip != (Object)null) ? ((Object)val19.clip).name : "NULL");
Log.LogInfo((object)(" -> Found Source on [" + ((Object)((Component)val19).gameObject).name + "] playing clip: [" + text + "]"));
}
if (!flag2)
{
Transform val20 = val13.transform.FindRecursive("sound");
if ((Object)(object)val20 != (Object)null)
{
Log.LogInfo((object)"TARDIS: No existing source found. Creating new AudioSource on 'sound' object.");
AudioSource source = ((Component)val20).gameObject.GetComponent<AudioSource>() ?? ((Component)val20).gameObject.AddComponent<AudioSource>();
SetupTardisAudioSource(source);
}
}
}
}
if (((Object)val).name.Contains("doctorwhoShip Variant") || ((Object)val).name.Contains("OutTardis"))
{
AudioSource componentInChildren2 = val.GetComponentInChildren<AudioSource>();
if ((Object)(object)componentInChildren2 != (Object)null)
{
componentInChildren2.mute = false;
componentInChildren2.volume = 0.5f;
if (!componentInChildren2.isPlaying)
{
componentInChildren2.Play();
}
Log.LogInfo((object)("TARDIS: Successfully started baked-in sound on " + ((Object)val).name));
}
}
if (((Object)val).name.Contains("Start Room - Manor - Kitchen Dining Room") && !((Object)(object)val.transform.Find("ShadowRoom_Marker") != (Object)null) && (Object)(object)ShadowRoomPrefab != (Object)null)
{
Renderer[] componentsInChildren9 = val.GetComponentsInChildren<Renderer>(true);
foreach (Renderer val21 in componentsInChildren9)
{
val21.enabled = false;
}
Collider[] componentsInChildren10 = val.GetComponentsInChildren<Collider>(true);
foreach (Collider val22 in componentsInChildren10)
{
val22.enabled = false;
}
Renderer[] componentsInParent3 = val.GetComponentsInParent<Renderer>(true);
foreach (Renderer val23 in componentsInParent3)
{
val23.enabled = false;
}
Collider[] componentsInParent4 = val.GetComponentsInParent<Collider>(true);
foreach (Collider val24 in componentsInParent4)
{
val24.enabled = false;
}
GameObject val25 = Object.Instantiate<GameObject>(ShadowRoomPrefab, val.transform);
((Object)val25).name = "ShadowRoom_Marker";
val25.transform.localPosition = Vector3.zero;
val25.transform.localRotation = Quaternion.identity;
AudioSource[] componentsInChildren11 = val.GetComponentsInChildren<AudioSource>(true);
Log.LogInfo((object)$"TARDIS DEBUG: {((Object)val).name} spawned with {componentsInChildren11.Length} AudioSources.");
AudioSource[] array5 = componentsInChildren11;
foreach (AudioSource val26 in array5)
{
string text2 = (((Object)(object)val26.clip != (Object)null) ? ((Object)val26.clip).name : "NULL");
Log.LogInfo((object)(" -> Found Source on [" + ((Object)((Component)val26).gameObject).name + "] playing clip: [" + text2 + "]"));
}
Instance.SetupShadowScare(val25);
}
}
}
public class SurrealPaintingLogic : MonoBehaviour
{
[CompilerGenerated]
private sealed class <FlickerLights>d__12 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public SurrealPaintingLogic <>4__this;
private Light[] <allLights>5__1;
private Light[] <nearby>5__2;
private int <i>5__3;
private Light[] <>s__4;
private int <>s__5;
private Light <l>5__6;
private Light[] <>s__7;
private int <>s__8;
private Light <l>5__9;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <FlickerLights>d__12(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<allLights>5__1 = null;
<nearby>5__2 = null;
<>s__4 = null;
<l>5__6 = null;
<>s__7 = null;
<l>5__9 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015f: Expected O, but got Unknown
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<allLights>5__1 = Object.FindObjectsOfType<Light>();
<nearby>5__2 = Array.FindAll(<allLights>5__1, (Light l) => Vector3.Distance(((Component)l).transform.position, ((Component)<>4__this).transform.position) <= <>4__this.flickerRadius);
<i>5__3 = 0;
break;
case 1:
<>1__state = -1;
<>s__7 = <nearby>5__2;
for (<>s__8 = 0; <>s__8 < <>s__7.Length; <>s__8++)
{
<l>5__9 = <>s__7[<>s__8];
((Behaviour)<l>5__9).enabled = true;
<l>5__9 = null;
}
<>s__7 = null;
<>2__current = (object)new WaitForSeconds(0.2f);
<>1__state = 2;
return true;
case 2:
<>1__state = -1;
<i>5__3++;
break;
}
if (<i>5__3 < 4)
{
<>s__4 = <nearby>5__2;
for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++)
{
<l>5__6 = <>s__4[<>s__5];
((Behaviour)<l>5__6).enabled = false;
<l>5__6 = null;
}
<>s__4 = null;
<>2__current = (object)new WaitForSeconds(0.08f);
<>1__state = 1;
return true;
}
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public Texture2D scareTexture;
public float flickerRadius = 15f;
private bool hasBeenClose = false;
private bool isLookingAt = false;
private bool hasSwapped = false;
private bool hasFinished = false;
private Renderer rend;
private AudioSource audio;
private void Start()
{
rend = ((Component)this).GetComponent<Renderer>();
audio = ((Component)this).gameObject.GetComponent<AudioSource>() ?? ((Component)this).gameObject.AddComponent<AudioSource>();
audio.spatialBlend = 1f;
}
private void Update()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
if (hasFinished || (Object)(object)Camera.main == (Object)null)
{
return;
}
Vector3 val = ((Component)this).transform.position - ((Component)Camera.main).transform.position;
float magnitude = ((Vector3)(ref val)).magnitude;
if (magnitude <= 3.5f)
{
hasBeenClose = true;
}
bool flag = false;
if (magnitude <= 10f)
{
float num = Vector3.Angle(((Component)Camera.main).transform.forward, val);
if (num <= 35f)
{
flag = true;
}
}
if (flag && !isLookingAt)
{
isLookingAt = true;
if (hasSwapped && !hasFinished)
{
TriggerSoundEffect();
}
}
else if (!flag && isLookingAt)
{
isLookingAt = false;
if (hasBeenClose && !hasSwapped)
{
TriggerVisualScare();
}
}
}
private void TriggerVisualScare()
{
hasSwapped = true;
if ((Object)(object)rend != (Object)null && (Object)(object)scareTexture != (Object)null)
{
rend.material.mainTexture = (Texture)(object)scareTexture;
}
((MonoBehaviour)this).StartCoroutine(FlickerLights());
}
private void TriggerSoundEffect()
{
hasFinished = true;
if ((Object)(object)OutTardisClip != (Object)null)
{
audio.PlayOneShot(TARDISscare);
}
}
[IteratorStateMachine(typeof(<FlickerLights>d__12))]
private IEnumerator FlickerLights()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <FlickerLights>d__12(0)
{
<>4__this = this
};
}
}
public class TARDISFlightScroller : MonoBehaviour
{
public class SurrealPaintingLogic : MonoBehaviour
{
[CompilerGenerated]
private sealed class <LocalFlicker>d__8 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public SurrealPaintingLogic <>4__this;
private Light[] <lights>5__1;
private Light[] <nearby>5__2;
private int <i>5__3;
private Light[] <>s__4;
private int <>s__5;
private Light <l>5__6;
private Light[] <>s__7;
private int <>s__8;
private Light <l>5__9;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <LocalFlicker>d__8(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<lights>5__1 = null;
<nearby>5__2 = null;
<>s__4 = null;
<l>5__6 = null;
<>s__7 = null;
<l>5__9 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015f: Expected O, but got Unknown
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<lights>5__1 = Object.FindObjectsOfType<Light>();
<nearby>5__2 = Array.FindAll(<lights>5__1, (Light l) => Vector3.Distance(((Component)l).transform.position, ((Component)<>4__this).transform.position) <= 15f);
<i>5__3 = 0;
break;
case 1:
<>1__state = -1;
<>s__7 = <nearby>5__2;
for (<>s__8 = 0; <>s__8 < <>s__7.Length; <>s__8++)
{
<l>5__9 = <>s__7[<>s__8];
((Behaviour)<l>5__9).enabled = true;
<l>5__9 = null;
}
<>s__7 = null;
<>2__current = (object)new WaitForSeconds(0.2f);
<>1__state = 2;
return true;
case 2:
<>1__state = -1;
<i>5__3++;
break;
}
if (<i>5__3 < 4)
{
<>s__4 = <nearby>5__2;
for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++)
{
<l>5__6 = <>s__4[<>s__5];
((Behaviour)<l>5__6).enabled = false;
<l>5__6 = null;
}
<>s__4 = null;
<>2__current = (object)new WaitForSeconds(0.08f);
<>1__state = 1;
return true;
}
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private Renderer rend;
private AudioSource audioSource;
private bool isPrimed = false;
private bool isLooking = false;
private bool hasSwapped = false;
private bool sfxPlayed = false;
private void Start()
{
rend = ((Component)this).GetComponent<Renderer>();
audioSource = ((Component)this).gameObject.GetComponent<AudioSource>() ?? ((Component)this).gameObject.AddComponent<AudioSource>();
audioSource.spatialBlend = 1f;
}
private void Update()
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: 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_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
if (sfxPlayed || (Object)(object)Camera.main == (Object)null)
{
return;
}
Vector3 val = ((Component)this).transform.position - ((Component)Camera.main).transform.position;
float magnitude = ((Vector3)(ref val)).magnitude;
if (magnitude <= 3.5f)
{
isPrimed = true;
}
float num = Vector3.Angle(((Component)Camera.main).transform.forward, val);
bool flag = magnitude <= 10f && num <= 35f;
if (flag && !isLooking)
{
isLooking = true;
if (hasSwapped && !sfxPlayed && (Object)(object)OutTardisClip != (Object)null)
{
audioSource.PlayOneShot(OutTardisClip);
sfxPlayed = true;
}
}
else
{
if (flag || !isLooking)
{
return;
}
isLooking = false;
if (isPrimed && !hasSwapped)
{
hasSwapped = true;
if ((Object)(object)rend != (Object)null && (Object)(object)ScareTexture != (Object)null)
{
rend.material.mainTexture = (Texture)(object)ScareTexture;
}
((MonoBehaviour)this).StartCoroutine(LocalFlicker());
}
}
}
[IteratorStateMachine(typeof(<LocalFlicker>d__8))]
private IEnumerator LocalFlicker()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <LocalFlicker>d__8(0)
{
<>4__this = this
};
}
}
public float scrollSpeed = 11000f;
public float maxDistanceX = 250f;
private float offsetX = -150f;
public float rotationSpeed = 460f;
public float forwardTilt = 0f;
public float sideLean = -20f;
private float currentYRotation = 0f;
private void Start()
{
TruckLandscapeScroller componentInParent = ((Component)this).GetComponentInParent<TruckLandscapeScroller>();
if ((Object)(object)componentInParent != (Object)null)
{
scrollSpeed = componentInParent.truckSpeed * 15f;
}
}
private void Update()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: 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_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: 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_00d5: 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_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
Transform transform = ((Component)this).transform;
transform.localPosition += Vector3.right * scrollSpeed * Time.deltaTime;
if (((Component)this).transform.localPosition.x > maxDistanceX)
{
((Component)this).transform.localPosition = new Vector3(offsetX, ((Component)this).transform.localPosition.y, ((Component)this).transform.localPosition.z);
}
currentYRotation += rotationSpeed * Time.deltaTime;
Quaternion val = Quaternion.Euler(0f, currentYRotation, 0f);
Quaternion val2 = Quaternion.Euler(forwardTilt, 0f, sideLean);
((Component)this).transform.localRotation = val2 * val;
}
}
public class EmptyChildShadowScare : MonoBehaviour
{
[CompilerGenerated]
private sealed class <FlickerSequence>d__10 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public EmptyChildShadowScare <>4__this;
private float[] <waits>5__1;
private bool <state>5__2;
private int <i>5__3;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <FlickerSequence>d__10(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<waits>5__1 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<waits>5__1 = new float[11]
{
0.1f, 0.1f, 0.8f, 0.05f, 0.6f, 0.2f, 0.1f, 0.2f, 0.1f, 0.2f,
0.1f
};
<state>5__2 = false;
<i>5__3 = 0;
break;
case 1:
<>1__state = -1;
<state>5__2 = !<state>5__2;
<i>5__3++;
break;
}
if (<i>5__3 < <waits>5__1.Length)
{
if (Object.op_Implicit((Object)(object)<>4__this.scareLight))
{
((Behaviour)<>4__this.scareLight).enabled = <state>5__2;
}
if (Object.op_Implicit((Object)(object)<>4__this.shadowObject))
{
<>4__this.shadowObject.SetActive(<state>5__2);
}
<>2__current = (object)new WaitForSeconds(<waits>5__1[<i>5__3]);
<>1__state = 1;
return true;
}
if (Object.op_Implicit((Object)(object)<>4__this.scareLight))
{
((Behaviour)<>4__this.scareLight).enabled = true;
}
if (Object.op_Implicit((Object)(object)<>4__this.shadowObject))
{
<>4__this.shadowObject.SetActive(false);
}
<>4__this.shadowGoneForever = true;
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public Light scareLight;
public GameObject shadowObject;
public LayerMask playerLayer;
public AudioSource audioSource;
private bool audioTriggered = false;
private bool scareTriggered = false;
private bool shadowGoneForever = false;
private float rangeTimer = 0f;
private void Start()
{
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)scareLight != (Object)null)
{
((Behaviour)scareLight).enabled = true;
}
if ((Object)(object)shadowObject != (Object)null)
{
shadowObject.SetActive(true);
}
playerLayer = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "Player" }));
}
private void Update()
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
if (scareTriggered || shadowGoneForever)
{
return;
}
if (!audioTriggered && Physics.CheckSphere(((Component)this).transform.position, 6f, LayerMask.op_Implicit(playerLayer)))
{
if ((Object)(object)audioSource != (Object)null && (Object)(object)GlassKnockClip != (Object)null)
{
audioSource.clip = GlassKnockClip;
audioSource.Play();
}
audioTriggered = true;
}
if (Physics.CheckSphere(((Component)this).transform.position, 5f, LayerMask.op_Implicit(playerLayer)))
{
rangeTimer += Time.deltaTime;
if (rangeTimer >= 2f)
{
scareTriggered = true;
((MonoBehaviour)this).StartCoroutine(FlickerSequence());
}
}
else
{
rangeTimer = 0f;
}
}
[IteratorStateMachine(typeof(<FlickerSequence>d__10))]
private IEnumerator FlickerSequence()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <FlickerSequence>d__10(0)
{
<>4__this = this
};
}
}
[CompilerGenerated]
private sealed class <ArenaMusicMonitor>d__39 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Plugin <>4__this;
private bool <isArena>5__1;
private GameObject <levelObj>5__2;
private AudioSource[] <allSources>5__3;
private AudioSource[] <>s__4;
private int <>s__5;
private AudioSource <source>5__6;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <ArenaMusicMonitor>d__39(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<levelObj>5__2 = null;
<allSources>5__3 = null;
<>s__4 = null;
<source>5__6 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Expected O, but got Unknown
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0268: Unknown result type (might be due to invalid IL or missing references)
//IL_0272: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
Log.LogInfo((object)"TARDIS: Arena Monitor active.");
<>2__current = (object)new WaitForSeconds(2f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
break;
case 2:
<>1__state = -1;
<levelObj>5__2 = null;
break;
}
<isArena>5__1 = false;
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name.Contains("Arena"))
{
<isArena>5__1 = true;
}
<levelObj>5__2 = GameObject.Find("Level Generator");
if ((Object)(object)<levelObj>5__2 != (Object)null && <levelObj>5__2.transform.childCount > 0 && ((Object)<levelObj>5__2.transform.GetChild(0)).name.Contains("Arena"))
{
<isArena>5__1 = true;
}
if (<isArena>5__1)
{
<allSources>5__3 = Object.FindObjectsOfType<AudioSource>();
<>s__4 = <allSources>5__3;
for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++)
{
<source>5__6 = <>s__4[<>s__5];
if (!((Object)(object)<source>5__6 == (Object)null) && !((Object)(object)<source>5__6.clip == (Object)null))
{
if (((Object)<source>5__6.clip).name == "arena_music_temp" && (Object)(object)<source>5__6.clip != (Object)(object)TARDISArenaTheme)
{
Log.LogInfo((object)"TARDIS: Swapping Arena Music...");
<source>5__6.Stop();
<source>5__6.clip = TARDISArenaTheme;
<source>5__6.bypassEffects = true;
<source>5__6.bypassListenerEffects = true;
<source>5__6.spatialBlend = 0f;
<source>5__6.volume = 1f;
<source>5__6.loop = true;
<source>5__6.Play();
}
<source>5__6 = null;
}
}
<>s__4 = null;
<allSources>5__3 = null;
}
<>2__current = (object)new WaitForSeconds(2f);
<>1__state = 2;
return true;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <GlobalMusicMonitor>d__43 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Plugin <>4__this;
private string <lastLevelName>5__1;
private bool <tardisPrepared>5__2;
private bool <musicStarted>5__3;
private GameObject <tardisMusicObj>5__4;
private AudioSource <tardisSource>5__5;
private FieldInfo <stateField>5__6;
private string <sceneName>5__7;
private States <currentState>5__8;
private States <currentState>5__9;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <GlobalMusicMonitor>d__43(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<lastLevelName>5__1 = null;
<tardisMusicObj>5__4 = null;
<tardisSource>5__5 = null;
<stateField>5__6 = null;
<sceneName>5__7 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_009d: 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_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Expected O, but got Unknown
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Expected O, but got Unknown
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d5: Expected O, but got Unknown
//IL_0274: Unknown result type (might be due to invalid IL or missing references)
//IL_0279: 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_0285: Invalid comparison between Unknown and I4
//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
//IL_02e2: Invalid comparison between Unknown and I4
//IL_036d: Unknown result type (might be due to invalid IL or missing references)
//IL_0377: Expected O, but got Unknown
Scene activeScene;
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
Log.LogInfo((object)"TARDIS: Arena Monitor Hooked. Standing by for Hatch trigger...");
<lastLevelName>5__1 = "";
<tardisPrepared>5__2 = false;
<musicStarted>5__3 = false;
<tardisMusicObj>5__4 = null;
<tardisSource>5__5 = null;
<stateField>5__6 = typeof(Arena).GetField("currentState", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
goto IL_038f;
case 1:
<>1__state = -1;
break;
case 2:
<>1__state = -1;
goto IL_038f;
case 3:
<>1__state = -1;
goto IL_0387;
case 4:
{
<>1__state = -1;
goto IL_0387;
}
IL_0387:
<sceneName>5__7 = null;
goto IL_038f;
IL_038f:
activeScene = SceneManager.GetActiveScene();
<sceneName>5__7 = ((Scene)(ref activeScene)).name.ToLower();
if (<sceneName>5__7 != <lastLevelName>5__1)
{
<lastLevelName>5__1 = <sceneName>5__7;
<tardisPrepared>5__2 = false;
<musicStarted>5__3 = false;
if ((Object)(object)<tardisMusicObj>5__4 != (Object)null)
{
Object.Destroy((Object)(object)<tardisMusicObj>5__4);
}
<>2__current = (object)new WaitForSeconds(0.5f);
<>1__state = 1;
return true;
}
break;
}
if ((Object)(object)Arena.instance == (Object)null)
{
<>2__current = (object)new WaitForSeconds(0.1f);
<>1__state = 2;
return true;
}
if (!<tardisPrepared>5__2)
{
if ((Object)(object)Arena.instance.musicSource != (Object)null)
{
Arena.instance.musicSource.Stop();
Arena.instance.musicSource.clip = null;
((Behaviour)Arena.instance.musicSource).enabled = false;
Log.LogInfo((object)"TARDIS: Vanilla arena music deleted.");
}
<tardisMusicObj>5__4 = new GameObject("TARDIS_Arena_Controller");
<tardisSource>5__5 = <tardisMusicObj>5__4.AddComponent<AudioSource>();
<tardisSource>5__5.clip = TARDISArenaTheme;
<tardisSource>5__5.volume = 0.5f;
<tardisSource>5__5.loop = true;
<tardisSource>5__5.spatialBlend = 0f;
<tardisSource>5__5.bypassEffects = true;
<tardisSource>5__5.playOnAwake = false;
<tardisPrepared>5__2 = true;
}
if (<tardisPrepared>5__2 && !<musicStarted>5__3)
{
<currentState>5__8 = (States)<stateField>5__6.GetValue(Arena.instance);
if ((int)<currentState>5__8 == 4)
{
<tardisSource>5__5.Play();
<musicStarted>5__3 = true;
Log.LogInfo((object)"TARDIS: Arena Hatch Detected. Playing theme NOW.");
}
}
if (<musicStarted>5__3)
{
<currentState>5__9 = (States)<stateField>5__6.GetValue(Arena.instance);
if ((int)<currentState>5__9 == 8)
{
if ((Object)(object)<tardisSource>5__5 != (Object)null && <tardisSource>5__5.isPlaying)
{
<tardisSource>5__5.Stop();
Log.LogInfo((object)"TARDIS: Arena ended. Music stopped.");
}
<musicStarted>5__3 = false;
}
}
if (<tardisPrepared>5__2 && !<musicStarted>5__3)
{
<>2__current = null;
<>1__state = 3;
return true;
}
<>2__current = (object)new WaitForSeconds(0.1f);
<>1__state = 4;
return true;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <GlobalPaintingSweep>d__31 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Plugin <>4__this;
private int <replacedCount>5__1;
private GameObject[] <rootObjects>5__2;
private GameObject[] <>s__3;
private int <>s__4;
private GameObject <root>5__5;
private Renderer[] <allRenderers>5__6;
private Renderer[] <>s__7;
private int <>s__8;
private Renderer <rend>5__9;
private Material[] <currentMats>5__10;
private bool <changed>5__11;
private int <i>5__12;
private string <matName>5__13;
private Texture2D <strikeTexture>5__14;
private SurrealPaintingLogic <logic>5__15;
private BoxCollider <col>5__16;
private SurrealPaintingLogic <logic>5__17;
private BoxCollider <col>5__18;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <GlobalPaintingSweep>d__31(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<rootObjects>5__2 = null;
<>s__3 = null;
<root>5__5 = null;
<allRenderers>5__6 = null;
<>s__7 = null;
<rend>5__9 = null;
<currentMats>5__10 = null;
<matName>5__13 = null;
<strikeTexture>5__14 = null;
<logic>5__15 = null;
<col>5__16 = null;
<logic>5__17 = null;
<col>5__18 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(2f);
<>1__state = 1;
return true;
case 1:
{
<>1__state = -1;
Log.LogInfo((object)"TARDIS: Starting Texture-Strike Sweep...");
if ((Object)(object)ReplacementTexture == (Object)null || (Object)(object)LandscapeTexture == (Object)null || (Object)(object)RaphTexture == (Object)null)
{
Log.LogWarning((object)"TARDIS: Some custom textures are missing. Attempting sweep with what we have...");
}
<replacedCount>5__1 = 0;
Scene activeScene = SceneManager.GetActiveScene();
<rootObjects>5__2 = ((Scene)(ref activeScene)).GetRootGameObjects();
<>s__3 = <rootObjects>5__2;
for (<>s__4 = 0; <>s__4 < <>s__3.Length; <>s__4++)
{
<root>5__5 = <>s__3[<>s__4];
<allRenderers>5__6 = <root>5__5.GetComponentsInChildren<Renderer>(true);
<>s__7 = <allRenderers>5__6;
for (<>s__8 = 0; <>s__8 < <>s__7.Length; <>s__8++)
{
<rend>5__9 = <>s__7[<>s__8];
<currentMats>5__10 = <rend>5__9.materials;
<changed>5__11 = false;
<i>5__12 = 0;
while (<i>5__12 < <currentMats>5__10.Length)
{
if (!((Object)(object)<currentMats>5__10[<i>5__12] == (Object)null))
{
<matName>5__13 = ((Object)<currentMats>5__10[<i>5__12]).name;
<strikeTexture>5__14 = null;
if (StringExtensions.Contains(<matName>5__13, "Painting_V_Furman", StringComparison.OrdinalIgnoreCase))
{
<strikeTexture>5__14 = ReplacementTexture;
}
else if (StringExtensions.Contains(<matName>5__13, "Painting_H_Landscape", StringComparison.OrdinalIgnoreCase))
{
<strikeTexture>5__14 = LandscapeTexture;
}
else if (StringExtensions.Contains(<matName>5__13, "Painting_V_surrealistic", StringComparison.OrdinalIgnoreCase))
{
<strikeTexture>5__14 = RaphTexture;
<logic>5__15 = ((Component)<rend>5__9).gameObject.GetComponent<SurrealPaintingLogic>() ?? ((Component)<rend>5__9).gameObject.AddComponent<SurrealPaintingLogic>();
<logic>5__15.scareTexture = ScareTexture;
if ((Object)(object)((Component)<rend>5__9).gameObject.GetComponent<Collider>() == (Object)null)
{
<col>5__16 = ((Component)<rend>5__9).gameObject.AddComponent<BoxCollider>();
((Collider)<col>5__16).isTrigger = true;
<col>5__16 = null;
}
<logic>5__15 = null;
}
else if (StringExtensions.Contains(<matName>5__13, "Painting_V_surrealistic_0", StringComparison.OrdinalIgnoreCase))
{
<strikeTexture>5__14 = RaphTexture;
<>4__this.surrealPaintingObj = ((Component)<rend>5__9).gameObject;
if ((Object)(object)((Component)<rend>5__9).gameObject.GetComponent<SurrealPaintingLogic>() == (Object)null)
{
<logic>5__17 = ((Component)<rend>5__9).gameObject.AddComponent<SurrealPaintingLogic>();
<logic>5__17.scareTexture = ScareTexture;
<logic>5__17.flickerRadius = 15f;
<logic>5__17 = null;
}
if ((Object)(object)<>4__this.surrealPaintingObj.GetComponent<Collider>() == (Object)null)
{
<col>5__18 = <>4__this.surrealPaintingObj.AddComponent<BoxCollider>();
((Collider)<col>5__18).isTrigger = true;
<col>5__18 = null;
}
}
if ((Object)(object)<strikeTexture>5__14 != (Object)null)
{
Log.LogInfo((object)("TARDIS STRIKE: Applying texture to " + <matName>5__13));
<currentMats>5__10[<i>5__12].mainTexture = (Texture)(object)<strikeTexture>5__14;
<changed>5__11 = true;
<replacedCount>5__1++;
}
<matName>5__13 = null;
<strikeTexture>5__14 = null;
}
<i>5__12++;
}
if (<changed>5__11)
{
<rend>5__9.materials = <currentMats>5__10;
}
<currentMats>5__10 = null;
<rend>5__9 = null;
}
<>s__7 = null;
<allRenderers>5__6 = null;
<root>5__5 = null;
}
<>s__3 = null;
Log.LogInfo((object)$"TARDIS: Sweep complete. Total Replaced: {<replacedCount>5__1}");
return false;
}
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <MenuSpawnMonitor>d__48 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Plugin <>4__this;
private GameObject <anchor>5__1;
private TruckLandscapeScroller <scroller>5__2;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <MenuSpawnMonitor>d__48(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<anchor>5__1 = null;
<scroller>5__2 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
break;
case 1:
<>1__state = -1;
<anchor>5__1 = null;
break;
}
<anchor>5__1 = GameObject.Find("Sign - Closed Road (1)");
if ((Object)(object)<anchor>5__1 != (Object)null && (Object)(object)GameObject.Find("TARDIS_Menu_Flyby") == (Object)null)
{
<scroller>5__2 = Object.FindObjectOfType<TruckLandscapeScroller>();
if ((Object)(object)<scroller>5__2 != (Object)null)
{
<>4__this.SpawnMenuTardis(<scroller>5__2, <anchor>5__1);
}
<scroller>5__2 = null;
}
<>2__current = (object)new WaitForSeconds(1f);
<>1__state = 1;
return true;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <ShopMusicMonitor>d__44 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public Plugin <>4__this;
private bool <shopFound>5__1;
private GameObject <levelContainer>5__2;
private IEnumerator <>s__3;
private Transform <room>5__4;
private AudioSource[] <allSources>5__5;
private AudioSource[] <>s__6;
private int <>s__7;
private AudioSource <source>5__8;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <ShopMusicMonitor>d__44(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<levelContainer>5__2 = null;
<>s__3 = null;
<room>5__4 = null;
<allSources>5__5 = null;
<>s__6 = null;
<source>5__8 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Expected O, but got Unknown
//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
//IL_02ab: Expected O, but got Unknown
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
Log.LogInfo((object)"TARDIS: Shop Monitor starting...");
<>2__current = (object)new WaitForSeconds(5f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
break;
case 2:
<>1__state = -1;
<levelContainer>5__2 = null;
break;
}
<shopFound>5__1 = false;
<levelContainer>5__2 = GameObject.Find("Level Generator/Level");
if ((Object)(object)<levelContainer>5__2 != (Object)null)
{
<>s__3 = <levelContainer>5__2.transform.GetEnumerator();
try
{
while (<>s__3.MoveNext())
{
<room>5__4 = (Transform)<>s__3.Current;
if (((Object)<room>5__4).name.Contains("Shop"))
{
<shopFound>5__1 = true;
break;
}
<room>5__4 = null;
}
}
finally
{
if (<>s__3 is IDisposable disposable)
{
disposable.Dispose();
}
}
<>s__3 = null;
}
if (<shopFound>5__1)
{
<allSources>5__5 = Object.FindObjectsOfType<AudioSource>();
<>s__6 = <allSources>5__5;
for (<>s__7 = 0; <>s__7 < <>s__6.Length; <>s__7++)
{
<source>5__8 = <>s__6[<>s__7];
if (!((Object)(object)<source>5__8 == (Object)null) && !((Object)(object)<source>5__8.clip == (Object)null))
{
if (((Object)((Component)<source>5__8).gameObject).name.Contains("Ambience Loop"))
{
Log.LogInfo((object)"TARDIS: Skipping Ambience Loop to keep environment sounds.");
}
else
{
if (((Object)<source>5__8.clip).name.ToLower().Contains("shop") && (Object)(object)<source>5__8.clip != (Object)(object)TARDISMenuTheme)
{
Log.LogInfo((object)("TARDIS: Swapping Shop Music on " + ((Object)((Component)<source>5__8).gameObject).name));
<source>5__8.Stop();
<source>5__8.clip = TARDISMenuTheme;
<source>5__8.spatialBlend = 1f;
<source>5__8.Play();
}
<source>5__8 = null;
}
}
}
<>s__6 = null;
<allSources>5__5 = null;
}
<>2__current = (object)new WaitForSeconds(3f);
<>1__state = 2;
return true;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public static Plugin Instance;
public static GameObject TARDISPrefab;
public static GameObject TARDISMenuPrefab;
public static AudioClip TARDISSound;
public static AudioClip TARDISGrabSound;
public static GameObject ShadowRoomPrefab;
public static AudioClip TARDISNightSound;
public static AudioClip TARDISMenuTheme;
public static AudioClip TARDISscare;
public static AudioClip TARDISArenaTheme;
private GameObject currentVideoPlane;
public static GameObject WeepPrefab;
public static GameObject OutTardisPrefab;
public static AudioClip GlassKnockClip;
public static AudioClip LetMeInClip;
public static AudioClip OutTardisClip;
public static Texture2D ScareTexture;
public static Texture2D ReplacementTexture;
public static Texture2D LandscapeTexture;
public static VideoClip TARDISVideo;
public static Texture2D RaphTexture;
private bool hasBeenClose = false;
public static ManualLogSource Log;
private bool hasScared = false;
private GameObject surrealPaintingObj;
private bool isLookingAtSurreal = false;
private void Awake()
{
//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
//IL_03d4: Expected O, but got Unknown
//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0409: Expected O, but got Unknown
//IL_0432: Unknown result type (might be due to invalid IL or missing references)
//IL_043f: Expected O, but got Unknown
//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
//IL_04af: Expected O, but got Unknown
//IL_04dc: Unknown result type (might be due to invalid IL or missing references)
//IL_04e9: Expected O, but got Unknown
//IL_0512: Unknown result type (might be due to invalid IL or missing references)
//IL_051f: Expected O, but got Unknown
//IL_0548: Unknown result type (might be due to invalid IL or missing references)
//IL_0555: Expected O, but got Unknown
Log = ((BaseUnityPlugin)this).Logger;
Instance = this;
string text = "tardisroom";
string text2 = "";
try
{
string[] files = Directory.GetFiles(Paths.PluginPath, text, SearchOption.AllDirectories);
if (files.Length != 0)
{
text2 = files[0];
Log.LogInfo((object)("TARDIS: Found bundle at " + text2));
}
else
{
Log.LogError((object)("TARDIS: Could not find '" + text + "' anywhere in " + Paths.PluginPath + "!"));
}
}
catch (Exception ex)
{
Log.LogError((object)("TARDIS: Error searching for assets: " + ex.Message));
}
AssetBundle val = ((!string.IsNullOrEmpty(text2)) ? AssetBundle.LoadFromFile(text2) : null);
if ((Object)(object)val != (Object)null)
{
Material val2 = val.LoadAsset<Material>("raph");
RaphTexture = val.LoadAsset<Texture2D>("raph");
if ((Object)(object)RaphTexture != (Object)null)
{
Log.LogInfo((object)"TARDIS: Texture 'raph.jpg' successfully loaded.");
}
else
{
Log.LogError((object)"TARDIS ERROR: Could not find 'raph' JPG in AssetBundle! Check the name in Unity.");
}
Log.LogInfo((object)"--- TARDIS ASSET BUNDLE CONTENTS ---");
string[] allAssetNames = val.GetAllAssetNames();
foreach (string text3 in allAssetNames)
{
Log.LogInfo((object)("Bundle contains: " + text3));
}
Log.LogInfo((object)"-------------------------------------");
ShadowRoomPrefab = val.LoadAsset<GameObject>("Start Room - Manor - Shadow");
if ((Object)(object)ShadowRoomPrefab == (Object)null)
{
Log.LogError((object)"TARDIS: Shadow Room prefab failed to load! Check the name in Unity.");
}
TARDISMenuPrefab = val.LoadAsset<GameObject>("tardis");
TARDISPrefab = val.LoadAsset<GameObject>("Module - Manor - N - 3 - Tardis");
ScareTexture = val.LoadAsset<Texture2D>("1201");
if ((Object)(object)ScareTexture == (Object)null)
{
Log.LogError((object)"TARDIS: 1201.jpg failed to load!");
}
TARDISSound = LoadAudio(val, "tardis");
WeepPrefab = val.LoadAsset<GameObject>("Weep");
if ((Object)(object)WeepPrefab == (Object)null)
{
Log.LogError((object)"TARDIS: Weep prefab failed to load!");
}
TARDISGrabSound = LoadAudio(val, "tardis_grab");
TARDISNightSound = LoadAudio(val, "tardis_night");
TARDISMenuTheme = LoadAudio(val, "tardis_menu_loop");
TARDISscare = LoadAudio(val, "scare");
TARDISArenaTheme = LoadAudio(val, "Dr_who_death");
ReplacementTexture = val.LoadAsset<Texture2D>("302854");
LandscapeTexture = val.LoadAsset<Texture2D>("images");
OutTardisPrefab = val.LoadAsset<GameObject>("Module - Manor - DE - 2 - OutTardis");
OutTardisClip = LoadAudio(val, "outtardis");
ShadowRoomPrefab = val.LoadAsset<GameObject>("Start Room - Manor - Shadow");
GlassKnockClip = val.LoadAsset<AudioClip>("glass_knocking");
LetMeInClip = val.LoadAsset<AudioClip>("please_let_me_in");
((BaseUnityPlugin)this).Logger.LogInfo((object)"TARDIS: Shadow Scare assets loaded successfully.");
if ((Object)(object)OutTardisPrefab == (Object)null)
{
((BaseUnityPlugin)this).Logger.LogError((object)"TARDIS: Failed to load OutTardisPrefab from bundle!");
}
if ((Object)(object)ReplacementTexture == (Object)null)
{
Log.LogError((object)"TARDIS: 302854.jpg failed to load!");
}
TARDISVideo = val.LoadAsset<VideoClip>("Dr_who_video");
Log.LogInfo((object)"TARDIS: All assets loaded.");
}
else
{
((BaseUnityPlugin)this).Logger.LogError((object)("TARDIS: Failed to load AssetBundle! Check file path: " + text2));
}
((MonoBehaviour)this).StartCoroutine(MenuSpawnMonitor());
SceneManager.sceneLoaded += OnSceneLoaded;
Harmony val3 = new Harmony("com.you.tardisroom");
val3.Patch((MethodBase)AccessTools.Method(typeof(ConstantMusic), "Update", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(typeof(MenuMusicPatch), "Postfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
val3.Patch((MethodBase)AccessTools.Method(typeof(ConstantMusic), "Update", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(typeof(NightMusicPatch), "Postfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
MethodInfo methodInfo = AccessTools.Method(typeof(Object), "Instantiate", new Type[3]
{
typeof(Object),
typeof(Vector3),
typeof(Quaternion)
}, (Type[])null);
MethodInfo methodInfo2 = AccessTools.Method(typeof(ComponentInjectorPatch), "Postfix", (Type[])null, (Type[])null);
val3.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
MethodInfo methodInfo3 = AccessTools.Method(typeof(PlayerAvatar), "LoadingLevelAnimationCompletedRPC", (Type[])null, (Type[])null);
val3.Patch((MethodBase)methodInfo3, (HarmonyMethod)null, new HarmonyMethod(typeof(LevelLoadedPaintingPatch), "Postfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
val3.Patch((MethodBase)AccessTools.Method(typeof(ConstantMusic), "Update", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(typeof(MenuMusicPatch), "Postfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
val3.Patch((MethodBase)AccessTools.Method(typeof(ConstantMusic), "Update", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(typeof(NightMusicPatch), "Postfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
((BaseUnityPlugin)this).Logger.LogInfo((object)"TARDIS: Patches applied.");
}
private AudioClip LoadAudio(AssetBundle bundle, string name)
{
return bundle.LoadAsset<AudioClip>(name) ?? bundle.LoadAsset<AudioClip>("assets/" + name + ".wav") ?? bundle.LoadAsset<AudioClip>("assets/" + name + ".mp3");
}
private void Update()
{
TriggerArenaVideo();
}
private void ExecuteShadowReset()
{
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
GameObject[] array = Object.FindObjectsOfType<GameObject>();
int num = 0;
GameObject[] array2 = array;
foreach (GameObject val in array2)
{
if (((Object)val).name.IndexOf("Start Room", StringComparison.OrdinalIgnoreCase) >= 0)
{
Object.Destroy((Object)(object)val);
num++;
}
}
GameObject[] array3 = array;
foreach (GameObject val2 in array3)
{
if (((Object)val2).name.IndexOf("Module", StringComparison.OrdinalIgnoreCase) >= 0)
{
Object.Destroy((Object)(object)val2);
num++;
}
}
Log.LogInfo((object)$"TARDIS: Purged {num} modules.");
if ((Object)(object)ShadowRoomPrefab != (Object)null)
{
GameObject val3 = Object.Instantiate<GameObject>(ShadowRoomPrefab, Vector3.zero, Quaternion.identity);
((Object)val3).name = "Start Room - Manor - Shadow (Forced)";
SetupShadowScare(val3);
Log.LogInfo((object)"TARDIS: Shadow Room spawned at origin.");
}
else
{
Log.LogError((object)"TARDIS: Cannot spawn Shadow Room - Prefab is null!");
}
}
private void ExecuteotherReset()
{
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
GameObject[] array = Object.FindObjectsOfType<GameObject>();
int num = 0;
GameObject[] array2 = array;
foreach (GameObject val in array2)
{
if (((Object)val).name.IndexOf("Start Room", StringComparison.OrdinalIgnoreCase) >= 0)
{
Object.Destroy((Object)(object)val);
num++;
}
}
GameObject[] array3 = array;
foreach (GameObject val2 in array3)
{
if (((Object)val2).name.IndexOf("Start Room - Manor - Shadow", StringComparison.OrdinalIgnoreCase) >= 0)
{
Object.Destroy((Object)(object)val2);
num++;
}
}
GameObject[] array4 = array;
foreach (GameObject val3 in array4)
{
if (((Object)val3).name.IndexOf("Module", StringComparison.OrdinalIgnoreCase) >= 0)
{
Object.Destroy((Object)(object)val3);
num++;
}
}
Log.LogInfo((object)$"TARDIS: Purged {num} modules.");
if ((Object)(object)OutTardisPrefab != (Object)null)
{
GameObject val4 = Object.Instantiate<GameObject>(OutTardisPrefab, Vector3.zero, Quaternion.identity);
((Object)val4).name = "Module - Manor - DE - 2 - OutTardis (Forced)";
Log.LogInfo((object)"TARDIS: Dalek Room spawned at origin.");
}
else
{
Log.LogError((object)"TARDIS: Cannot spawn Shadow Room - Prefab is null!");
}
}
[IteratorStateMachine(typeof(<GlobalPaintingSweep>d__31))]
public IEnumerator GlobalPaintingSweep()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <GlobalPaintingSweep>d__31(0)
{
<>4__this = this
};
}
public void SetupShadowScare(GameObject room)
{
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
EmptyChildShadowScare emptyChildShadowScare = room.AddComponent<EmptyChildShadowScare>();
if ((Object)(object)emptyChildShadowScare == (Object)null)
{
Log.LogError((object)"TARDIS: Failed to add EmptyChildShadowScare component!");
return;
}
Transform obj = room.transform.FindRecursive("light");
emptyChildShadowScare.scareLight = ((obj != null) ? ((Component)obj).GetComponent<Light>() : null);
Transform obj2 = room.transform.FindRecursive("shadow");
emptyChildShadowScare.shadowObject = ((obj2 != null) ? ((Component)obj2).gameObject : null);
Transform val = room.transform.FindRecursive("Plane");
if ((Object)(object)val != (Object)null)
{
AudioSource val2 = ((Component)val).gameObject.GetComponent<AudioSource>() ?? ((Component)val).gameObject.AddComponent<AudioSource>();
val2.spatialBlend = 1f;
val2.maxDistance = 15f;
val2.playOnAwake = false;
emptyChildShadowScare.audioSource = val2;
}
emptyChildShadowScare.playerLayer = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "Player" }));
Log.LogInfo((object)"TARDIS: Shadow Scare Components Linked successfully.");
}
public void SetupTARDISComponents(GameObject newRoom)
{
((Object)newRoom).name = "TARDIS_SUPER_SAVE";
Transform val = newRoom.transform.Find("TARDIS_Model") ?? newRoom.transform;
ProximityLookAwayDisappear proximityLookAwayDisappear = ((Component)val).gameObject.GetComponent<ProximityLookAwayDisappear>() ?? ((Component)val).gameObject.AddComponent<ProximityLookAwayDisappear>();
AudioSource val2 = ((Component)val).gameObject.GetComponent<AudioSource>() ?? ((Component)val).gameObject.AddComponent<AudioSource>();
val2.spatialBlend = 1f;
val2.maxDistance = 25f;
proximityLookAwayDisappear.targetObject = ((Component)val).gameObject;
proximityLookAwayDisappear.audioSource = val2;
proximityLookAwayDisappear.disappearClip = TARDISSound;
proximityLookAwayDisappear.activationAnchor = val;
((BaseUnityPlugin)this).Logger.LogInfo((object)"TARDIS: Components injected.");
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
currentVideoPlane = null;
Log.LogInfo((object)("TARDIS: Scene loaded - " + ((Scene)(ref scene)).name + "."));
((MonoBehaviour)this).StartCoroutine(GlobalPaintingSweep());
if (((Scene)(ref scene)).name == "Main")
{
((MonoBehaviour)this).StopAllCoroutines();
((MonoBehaviour)this).StartCoroutine(GlobalMusicMonitor());
((MonoBehaviour)this).StartCoroutine(MenuSpawnMonitor());
((MonoBehaviour)this).StartCoroutine(ShopMusicMonitor());
}
}
[IteratorStateMachine(typeof(<ArenaMusicMonitor>d__39))]
private IEnumerator ArenaMusicMonitor()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <ArenaMusicMonitor>d__39(0)
{
<>4__this = this
};
}
private void SpawnTARDISVideoPlane()
{
//IL_008d: 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_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Expected O, but got Unknown
if ((Object)(object)TARDISVideo == (Object)null)
{
Log.LogError((object)"TARDIS: VideoClip is null! Check your AssetBundle names.");
return;
}
Log.LogInfo((object)"TARDIS: Spawning Video Plane...");
currentVideoPlane = GameObject.CreatePrimitive((PrimitiveType)5);
((Object)currentVideoPlane).name = "TARDIS_Death_Video";
Collider component = currentVideoPlane.GetComponent<Collider>();
if ((Object)(object)component != (Object)null)
{
Object.Destroy((Object)(object)component);
}
currentVideoPlane.transform.position = new Vector3(0f, -32f, 0f);
currentVideoPlane.transform.localScale = new Vector3(100f, 100f, 100f);
currentVideoPlane.AddComponent<VideoFacePlayer>();
VideoPlayer val = currentVideoPlane.AddComponent<VideoPlayer>();
val.clip = TARDISVideo;
val.isLooping = true;
val.renderMode = (VideoRenderMode)3;
MeshRenderer component2 = currentVideoPlane.GetComponent<MeshRenderer>();
((Renderer)component2).material = new Material(Shader.Find("Unlit/Texture"));
val.targetMaterialRenderer = (Renderer)(object)component2;
val.targetMaterialProperty = "_MainTex";
val.Play();
}
public void TriggerArenaVideo()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)currentVideoPlane != (Object)null)
{
return;
}
Scene activeScene = SceneManager.GetActiveScene();
string name = ((Scene)(ref activeScene)).name;
bool flag = name.Contains("Arena");
if (!flag)
{
GameObject val = GameObject.Find("Level Generator");
if ((Object)(object)val != (Object)null && val.transform.childCount > 0 && ((Object)val.transform.GetChild(0)).name.Contains("Arena"))
{
flag = true;
}
}
if (flag)
{
Log.LogInfo((object)"TARDIS: Arena Level confirmed. Triggering Spawn...");
SpawnTARDISVideoPlane();
}
}
[IteratorStateMachine(typeof(<GlobalMusicMonitor>d__43))]
private IEnumerator GlobalMusicMonitor()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <GlobalMusicMonitor>d__43(0)
{
<>4__this = this
};
}
[IteratorStateMachine(typeof(<ShopMusicMonitor>d__44))]
private IEnumerator ShopMusicMonitor()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <ShopMusicMonitor>d__44(0)
{
<>4__this = this
};
}
private static void SetupTardisAudioSource(AudioSource source)
{
source.clip = OutTardisClip;
source.volume = 0.5f;
source.spatialBlend = 1f;
source.maxDistance = 25f;
source.rolloffMode = (AudioRolloffMode)0;
source.loop = true;
source.Play();
}
[IteratorStateMachine(typeof(<MenuSpawnMonitor>d__48))]
private IEnumerator MenuSpawnMonitor()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <MenuSpawnMonitor>d__48(0)
{
<>4__this = this
};
}
private void SpawnMenuTardis(TruckLandscapeScroller scroller, GameObject anchor)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)TARDISMenuPrefab == (Object)null))
{
GameObject val = Object.Instantiate<GameObject>(TARDISMenuPrefab, ((Component)scroller).transform);
((Object)val).name = "TARDIS_Menu_Flyby";
val.transform.position = anchor.transform.position + Vector3.up * 15f;
val.AddComponent<TARDISFlightScroller>();
Log.LogInfo((object)"TARDIS: Spawned at triple height (15m) above Sign.");
}
}
}
public static class TransformExtensions
{
public static Transform FindRecursive(this Transform parent, string name)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
foreach (Transform item in parent)
{
Transform val = item;
if (((Object)val).name == name)
{
return val;
}
Transform val2 = val.FindRecursive(name);
if ((Object)(object)val2 != (Object)null)
{
return val2;
}
}
return null;
}
}
public class TARDISFlightScroller : MonoBehaviour
{
public float scrollSpeed = 12f;
public float maxDistanceX = 80f;
private float offsetX = -22f;
public float heightOffset = 4.5f;
public float rotationSpeed = 50f;
public float forwardTilt = 15f;
private TruckLandscapeScroller truck;
private void Start()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: 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_0082: Unknown result type (might be due to invalid IL or missing references)
truck = ((Component)this).GetComponentInParent<TruckLandscapeScroller>();
if ((Object)(object)truck != (Object)null)
{
scrollSpeed *= truck.truckSpeed;
}
((Component)this).transform.localPosition = new Vector3(((Component)this).transform.localPosition.x, heightOffset, ((Component)this).transform.localPosition.z);
((Component)this).transform.localRotation = Quaternion.Euler(forwardTilt, 0f, 0f);
}
private void Update()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: 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_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: 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)
Transform transform = ((Component)this).transform;
transform.localPosition += Vector3.right * scrollSpeed * Time.deltaTime;
if (((Component)this).transform.localPosition.x > maxDistanceX + offsetX)
{
((Component)this).transform.localPosition = new Vector3(0f - maxDistanceX + offsetX, ((Component)this).transform.localPosition.y, ((Component)this).transform.localPosition.z);
}
((Component)this).transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime, (Space)1);
}
}
[HarmonyPatch(typeof(ConstantMusic), "Update")]
public static class MenuMusicPatch
{
private static void Postfix(ConstantMusic __instance, ref bool ___setup)
{
if (___setup && !((Object)(object)Plugin.TARDISMenuTheme == (Object)null))
{
AudioSource component = ((Component)__instance).GetComponent<AudioSource>();
if (!((Object)(object)component == (Object)null) && !((Object)(object)component.clip == (Object)(object)Plugin.TARDISMenuTheme))
{
component.Stop();
component.clip = Plugin.TARDISMenuTheme;
component.loop = true;
component.Play();
Plugin.Log.LogInfo((object)"TARDIS: Specific menu loop applied.");
}
}
}
}
[HarmonyPatch(typeof(TruckLandscapeScroller), "Start")]
public static class LobbyInjectionPatch
{
private static void Postfix(TruckLandscapeScroller __instance)
{
if ((Object)(object)Plugin.TARDISMenuPrefab == (Object)null)
{
Plugin.Log.LogError((object)"TARDIS: Menu prefab ('tardis') missing from bundle!");
}
else if (!((Object)(object)GameObject.Find("TARDIS_Menu_Flyby") != (Object)null))
{
GameObject val = Object.Instantiate<GameObject>(Plugin.TARDISMenuPrefab, ((Component)__instance).transform);
((Object)val).name = "TARDIS_Menu_Flyby";
val.AddComponent<TARDISFlightScroller>();
Plugin.ProximityLookAwayDisappear componentInChildren = val.GetComponentInChildren<Plugin.ProximityLookAwayDisappear>();
if ((Object)(object)componentInChildren != (Object)null)
{
Object.Destroy((Object)(object)componentInChildren);
}
Plugin.PlaySoundOnPhysGrab componentInChildren2 = val.GetComponentInChildren<Plugin.PlaySoundOnPhysGrab>();
if ((Object)(object)componentInChildren2 != (Object)null)
{
Object.Destroy((Object)(object)componentInChildren2);
}
Plugin.Log.LogInfo((object)"TARDIS: Menu flyby injected.");
}
}
}