Decompiled source of MW19 Airstrike Binocular v1.0.3
MW19_Airstrike_Binocular.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using FistVR; using HarmonyLib; using OpenScripts2; using OtherLoader; using Sodalite; using Sodalite.Api; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; using theWNbotMods; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace theWNbotMods { public class RemoteFire : FVRPhysicalObject { [Header("Binding")] [Tooltip("The firearm to control. Can be assigned in Inspector or at runtime via BindFirearm().")] public FVRFireArm targetFirearm; [Tooltip("If true and targetFirearm is null, will try to auto-find a FVRFireArm on the same GameObject or its children in Start().")] public bool autoFindFirearm = true; [Header("Trigger Settings")] [Tooltip("If true, a single TriggerDown will attempt a single fire call.")] public bool fireOnTriggerDown = true; [Tooltip("If true, holding trigger will repeatedly call the fire method each frame while held (use with caution).")] public bool continuousWhileHeld = false; [Header("Debug")] [Tooltip("In Inspector, toggle to simulate a trigger press (auto-resets).")] public bool DebugTriggerOnce = false; private bool _wasTriggerHeld = false; private void Start() { if ((Object)(object)targetFirearm == (Object)null && autoFindFirearm) { targetFirearm = ((Component)this).GetComponentInChildren<FVRFireArm>(); } } private void OnValidate() { if (!Application.isPlaying && DebugTriggerOnce) { DebugTriggerOnce = false; } } private void Update() { if (DebugTriggerOnce) { DebugTriggerOnce = false; TryTriggerFire(); } if (!((Object)(object)((FVRInteractiveObject)this).m_hand != (Object)null)) { return; } if (fireOnTriggerDown && ((FVRInteractiveObject)this).m_hand.Input.TriggerDown) { TryTriggerFire(); } if (continuousWhileHeld) { bool triggerPressed = ((FVRInteractiveObject)this).m_hand.Input.TriggerPressed; if (triggerPressed && !_wasTriggerHeld) { TryTriggerFire(); } else if (triggerPressed && _wasTriggerHeld) { TryTriggerFire(); } _wasTriggerHeld = triggerPressed; } } public void BindFirearm(FVRFireArm firearm) { targetFirearm = firearm; } public void UnbindFirearm() { targetFirearm = null; } private void TryTriggerFire() { if ((Object)(object)targetFirearm == (Object)null) { return; } Type type = ((object)targetFirearm).GetType(); MethodInfo method = type.GetMethod("Fire", BindingFlags.Instance | BindingFlags.Public); if ((object)method != null) { try { method.Invoke(targetFirearm, null); return; } catch (Exception) { } } MethodInfo method2 = type.GetMethod("DropHammer", BindingFlags.Instance | BindingFlags.Public); if ((object)method2 != null) { try { method2.Invoke(targetFirearm, null); return; } catch (Exception) { } } MethodInfo method3 = type.GetMethod("CockHammer", BindingFlags.Instance | BindingFlags.Public); if ((object)method3 != null) { try { ParameterInfo[] parameters = method3.GetParameters(); if (parameters.Length == 1 && (object)parameters[0].ParameterType == typeof(bool)) { method3.Invoke(targetFirearm, new object[1] { true }); } else { method3.Invoke(targetFirearm, null); } method2?.Invoke(targetFirearm, null); return; } catch (Exception) { } } try { ((Component)targetFirearm).gameObject.SendMessage("Fire", (SendMessageOptions)1); } catch (Exception) { } } } public class AC130TabletLeftHand : FVRInteractiveObject { [Header("平板主控制器")] public AC130TabletRightHand tabletController; [Header("干扰弹 Prefab")] public GameObject countermeasurePrefab; [Header("Debug 模拟输入")] public bool SimTrigger = false; public bool SimStickLeft = false; public bool SimStickRight = false; public bool SimStickUp = false; public bool SimStickDown = false; private Vector2 _lAxes; public override void UpdateInteraction(FVRViveHand hand) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_0028: Invalid comparison between Unknown and I4 //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) ((FVRInteractiveObject)this).UpdateInteraction(hand); if ((int)hand.HandSource != 1) { return; } if ((int)hand.CMode == 3 || (int)hand.CMode == 1) { _lAxes = hand.Input.Secondary2AxisInputAxes; } else { _lAxes = hand.Input.TouchpadAxes; } if (SimStickLeft) { _lAxes.x = -1f; SimStickLeft = false; } if (SimStickRight) { _lAxes.x = 1f; SimStickRight = false; } if (SimStickUp) { _lAxes.y = 1f; SimStickUp = false; } if (SimStickDown) { _lAxes.y = -1f; SimStickDown = false; } if (_lAxes.x > 0.8f) { tabletController.CurrentIndex++; } else if (_lAxes.x < -0.8f) { tabletController.CurrentIndex--; } if (hand.Input.TriggerDown || SimTrigger) { if ((Object)(object)countermeasurePrefab != (Object)null) { countermeasurePrefab.SetActive(true); } SimTrigger = false; } } } public class AC130TabletRightHand : FVRPhysicalObject { [Header("炮艇控制器")] public OrbitalStrikeController[] strikeControllers; public GameObject[] cannonUIPrefabs; [Header("摄像头角度限制")] public Transform cameraPivot; public float yawLimit = 60f; public float pitchLimit = 30f; public float rotationSpeed = 2f; [Header("Debug 模拟输入")] public bool SimTrigger = false; public bool SimStickLeft = false; public bool SimStickRight = false; public bool SimStickUp = false; public bool SimStickDown = false; private Vector2 _rAxes; private int currentIndex = 0; public int CurrentIndex { get { return currentIndex; } set { currentIndex = Mathf.Clamp(value, 0, strikeControllers.Length - 1); UpdateUI(); } } public override void UpdateInteraction(FVRViveHand hand) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_0028: Invalid comparison between Unknown and I4 //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) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).UpdateInteraction(hand); if ((int)hand.HandSource != 2) { return; } if ((int)hand.CMode == 3 || (int)hand.CMode == 1) { _rAxes = hand.Input.Secondary2AxisInputAxes; } else { _rAxes = hand.Input.TouchpadAxes; } if (SimStickLeft) { _rAxes.x = -1f; SimStickLeft = false; } if (SimStickRight) { _rAxes.x = 1f; SimStickRight = false; } if (SimStickUp) { _rAxes.y = 1f; SimStickUp = false; } if (SimStickDown) { _rAxes.y = -1f; SimStickDown = false; } float num = Mathf.Clamp(cameraPivot.localEulerAngles.y + _rAxes.x * rotationSpeed, 0f - yawLimit, yawLimit); float num2 = Mathf.Clamp(cameraPivot.localEulerAngles.x - _rAxes.y * rotationSpeed, 0f - pitchLimit, pitchLimit); cameraPivot.localRotation = Quaternion.Euler(num2, num, 0f); if (!hand.Input.TriggerDown && !SimTrigger) { return; } if (strikeControllers != null && strikeControllers.Length > 0) { OrbitalStrikeController orbitalStrikeController = strikeControllers[currentIndex]; if ((Object)(object)orbitalStrikeController != (Object)null) { orbitalStrikeController.shouldFire = true; } } SimTrigger = false; } public void UpdateUI() { for (int i = 0; i < cannonUIPrefabs.Length; i++) { if ((Object)(object)cannonUIPrefabs[i] != (Object)null) { cannonUIPrefabs[i].SetActive(i == currentIndex); } } } public void SetCurrentIndex(int index) { CurrentIndex = index; } } public class AirstrikeBinocular : FVRPhysicalObject { [Header("望远镜镜头中心(Ray 起点)")] public Transform RayOrigin; [Header("默认空袭 Prefab")] public GameObject defaultAirstrikePrefab; [Header("最大射程")] public float MaxDistance = 500f; [Header("可命中的层(地面、环境等)")] public LayerMask HitLayers; [Header("菜单 UI Canvas")] public GameObject menuCanvas; [Header("音效播放")] public AudioSource audioSource; private GameObject currentAirstrikePrefab; private AudioClip[] currentAirstrikeClips; [Header("调试信息")] [SerializeField] private string currentTypeName = "None"; [Header("部署方向设置")] [SerializeField] private Vector3 rotationOffsetEuler = Vector3.zero; [Header("冷却时间设置")] [SerializeField] private float cooldownTime = 5f; private float lastDeployTime = -999f; [Header("调试开关")] [SerializeField] private bool debugTrigger = false; private void Start() { currentAirstrikePrefab = defaultAirstrikePrefab; currentTypeName = ((!((Object)(object)defaultAirstrikePrefab != (Object)null)) ? "None" : ((Object)defaultAirstrikePrefab).name); if ((Object)(object)menuCanvas != (Object)null) { menuCanvas.SetActive(false); } Debug.Log((object)("AirstrikeBinocular当前空袭类型: " + currentTypeName)); } private void Update() { if (debugTrigger) { Debug.Log((object)("调试Inspector触发空袭 → " + currentTypeName)); DeployAirstrike(null); debugTrigger = false; } } public void ToggleMenu(bool isOpen) { if ((Object)(object)menuCanvas != (Object)null) { menuCanvas.SetActive(isOpen); } } public void SetAirstrikeType(GameObject prefab, AudioClip[] clips) { currentAirstrikePrefab = prefab; currentAirstrikeClips = clips; currentTypeName = ((!((Object)(object)prefab != (Object)null)) ? "None" : ((Object)prefab).name); Debug.Log((object)("当前空袭类型切换为: " + currentTypeName)); } public override void UpdateInteraction(FVRViveHand hand) { ((FVRPhysicalObject)this).UpdateInteraction(hand); if (hand.Input.TriggerFloat > 0.8f) { DeployAirstrike(hand); } } public void DeployAirstrike(FVRViveHand hand) { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Time.time - lastDeployTime < cooldownTime) { Debug.Log((object)("冷却中,剩余时间: " + (cooldownTime - (Time.time - lastDeployTime)).ToString("F1") + " 秒")); } else if (Physics.Raycast(RayOrigin.position, RayOrigin.forward, ref val, MaxDistance, LayerMask.op_Implicit(HitLayers))) { Vector3 forward = RayOrigin.forward; forward.y = 0f; if (((Vector3)(ref forward)).sqrMagnitude < 0.001f) { forward = Vector3.forward; } Quaternion val2 = Quaternion.LookRotation(forward, Vector3.up); Quaternion val3 = val2 * Quaternion.Euler(rotationOffsetEuler); Object.Instantiate<GameObject>(currentAirstrikePrefab, ((RaycastHit)(ref val)).point, val3); Debug.Log((object)string.Concat("释放空袭: ", currentTypeName, " 于位置 ", ((RaycastHit)(ref val)).point, ",旋转: ", ((Quaternion)(ref val3)).eulerAngles)); lastDeployTime = Time.time; if ((Object)(object)audioSource != (Object)null && currentAirstrikeClips != null && currentAirstrikeClips.Length > 0) { AudioClip val4 = currentAirstrikeClips[Random.Range(0, currentAirstrikeClips.Length)]; audioSource.PlayOneShot(val4); } if ((Object)(object)hand != (Object)null) { hand.Buzz(hand.Buzzer.Buzz_OnHoverInteractive); } } } } public class AirstrikeDebugger : MonoBehaviour { [Header("移动速度")] public float moveSpeed = 5f; [Header("鼠标灵敏度")] public float mouseSensitivity = 2f; [Header("头部对象(联动 UILookAtPlayer)")] public Transform headTransform; private float rotationX = 0f; private float rotationY = 0f; private void Start() { Cursor.lockState = (CursorLockMode)1; Cursor.visible = false; } private void Update() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) float axis = Input.GetAxis("Horizontal"); float axis2 = Input.GetAxis("Vertical"); Vector3 val = (((Component)this).transform.right * axis + ((Component)this).transform.forward * axis2) * moveSpeed * Time.deltaTime; Transform transform = ((Component)this).transform; transform.position += val; float num = Input.GetAxis("Mouse X") * mouseSensitivity; float num2 = Input.GetAxis("Mouse Y") * mouseSensitivity; rotationY += num; rotationX -= num2; rotationX = Mathf.Clamp(rotationX, -80f, 80f); ((Component)this).transform.rotation = Quaternion.Euler(rotationX, rotationY, 0f); if ((Object)(object)headTransform != (Object)null) { headTransform.position = ((Component)this).transform.position + Vector3.up * 1.6f; headTransform.rotation = ((Component)this).transform.rotation; } } } public class ChangeTypeWhenAwake : MonoBehaviour { public GameObject airstrikePrefab; public AudioClip[] airstrikeClips; public AirstrikeBinocular binocular; private void OnEnable() { if ((Object)(object)binocular != (Object)null && (Object)(object)airstrikePrefab != (Object)null) { binocular.SetAirstrikeType(airstrikePrefab, airstrikeClips); } } } } public class ScopeScript : MonoBehaviour { [SerializeField] [Range(0f, 1f)] private float zoom; [SerializeField] private float minFOV; [SerializeField] private float maxFOV; [SerializeField] private Camera myCamera; [SerializeField] private Transform myCrossHair; [SerializeField] private float minCrossHairScale; [SerializeField] private float maxCrossHairScale; [SerializeField] private Material imageMat; [SerializeField] private float minDistortion; [SerializeField] private float maxDistortion; private void Start() { } private void Update() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) myCamera.fieldOfView = Mathf.Lerp(maxFOV, minFOV, zoom); float num = Mathf.Lerp(minCrossHairScale, maxCrossHairScale, zoom); myCrossHair.localScale = new Vector3(num, num, 1f); imageMat.SetFloat("_Constant", Mathf.Lerp(minDistortion, maxDistortion, zoom)); } } namespace theWNbotMods { public class scopeFocusScript : MonoBehaviour { [Header("眼睛位置(VR Head 或 Debug Head)")] [SerializeField] private Transform eye; [Header("瞄具参考点(通常是镜片中心)")] [SerializeField] private Transform eyeDistPos; [Header("聚焦参数")] [SerializeField] private float fadedDist = 0.2f; [SerializeField] private float maxAngle = 15f; [Header("材质控制")] [SerializeField] private Material focusMat; [SerializeField] private float minMult = 0f; [SerializeField] private float maxMult = 1f; private Vector2 posInput; private float circleCenterMovement; private void LateUpdate() { //IL_003f: 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_0077: 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) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)eye == (Object)null) && !((Object)(object)eyeDistPos == (Object)null) && !((Object)(object)focusMat == (Object)null)) { float num = Vector3.Distance(eyeDistPos.position, eye.position); float num2 = num / fadedDist; num2 = Mathf.Clamp(num2, minMult, maxMult); Vector3 val = ((Component)this).transform.position - eye.position; float num3 = Vector3.Angle(val, ((Component)this).transform.forward); circleCenterMovement = num3 / maxAngle; Vector3 val2 = ((Component)this).transform.InverseTransformDirection(val); Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(val2.x, val2.y); posInput = ((Vector2)(ref val3)).normalized * circleCenterMovement / 2f; focusMat.SetFloat("_Mult", num2); focusMat.SetFloat("_XPos", 0.5f + posInput.x); focusMat.SetFloat("_YPos", 0.5f + posInput.y); } } } } [HelpURL("https://geom.io/bakery/wiki/index.php?title=Manual#Bakery_Light_Filter")] [DisallowMultipleComponent] public class BakeryLightFilter : MonoBehaviour { public Texture2D texture; [HideInInspector] public int lmid = 0; } namespace theWNbotMods { public class CQCFists : MonoBehaviour { [Header("CQC Settings")] public float GrabRange = 1f; public float FollowStrength = 10f; public float ThrowForce = 10f; public float DownSwingThreshold = 1.2f; public float ReleaseDistance = 0.8f; [Header("Audio Settings")] public AudioClip CQC_GrabSFX; public AudioClip CQC_ThrowSFX; [Header("Effect Durations")] public float HostageConfuseDuration = 999f; public float UnconsciousDuration = 5f; private FVRViveHand hand; private bool isGrabbing = false; private bool readyToThrow = false; private SosigLink grabbedLink = null; private Vector3 grabOffset; private Vector3 initialGrabPos; private void Update() { if (!((Component)this).gameObject.activeSelf) { return; } hand = FindHand(); if (!((Object)(object)hand == (Object)null)) { float triggerFloat = hand.Input.TriggerFloat; if (triggerFloat > 0.75f && !isGrabbing) { TryGrabNearestLink(); } if (isGrabbing && (Object)(object)grabbedLink != (Object)null) { FollowHandMovement(); DetectDownSwing(); DetectPullRelease(); } if (isGrabbing && triggerFloat <= 0.75f) { PerformThrow(); } } } private FVRViveHand FindHand() { if ((Object)(object)((Component)this).transform.parent == (Object)(object)((Component)GM.CurrentPlayerBody.LeftHand).transform) { return GM.CurrentMovementManager.Hands[0]; } if ((Object)(object)((Component)this).transform.parent == (Object)(object)((Component)GM.CurrentPlayerBody.RightHand).transform) { return GM.CurrentMovementManager.Hands[1]; } return null; } private void TryGrabNearestLink() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) SosigLink[] array = Object.FindObjectsOfType<SosigLink>(); float num = float.PositiveInfinity; SosigLink val = null; SosigLink[] array2 = array; foreach (SosigLink val2 in array2) { float num2 = Vector3.Distance(((Component)val2).transform.position, ((Component)this).transform.position); if (num2 < GrabRange && num2 < num) { num = num2; val = val2; } } if (!((Object)(object)val != (Object)null)) { return; } grabbedLink = val; isGrabbing = true; grabOffset = ((Component)grabbedLink).transform.position - ((Component)this).transform.position; initialGrabPos = ((Component)grabbedLink).transform.position; Sosig s = val.S; if ((Object)(object)s != (Object)null) { s.m_isConfused = true; s.m_confusedTime = HostageConfuseDuration; s.SetBodyPose((SosigBodyPose)0); s.ObjectUsageFocus = (SosigObjectUsageFocus)0; if ((Object)(object)s.Agent != (Object)null) { ((Behaviour)s.Agent).enabled = false; } s.SetCurrentOrder((SosigOrder)0); s.FallbackOrder = (SosigOrder)0; } if ((Object)(object)CQC_GrabSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_GrabSFX, ((Component)val).transform.position); } } private void FollowHandMovement() { //IL_0007: 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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0033: 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) Vector3 val = ((Component)this).transform.position + grabOffset; ((Component)grabbedLink).transform.position = Vector3.Lerp(((Component)grabbedLink).transform.position, val, Time.deltaTime * FollowStrength); } private void DetectDownSwing() { //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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) Vector3 throwLinearVelWorld = hand.GetThrowLinearVelWorld(); if (Vector3.Dot(((Vector3)(ref throwLinearVelWorld)).normalized, Vector3.down) > 0.6f && ((Vector3)(ref throwLinearVelWorld)).magnitude > DownSwingThreshold) { readyToThrow = true; } } private void DetectPullRelease() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) float num = Vector3.Distance(((Component)grabbedLink).transform.position, ((Component)this).transform.position); if (!(num > ReleaseDistance)) { return; } Vector3 val = ((Component)grabbedLink).transform.position - initialGrabPos; Vector3 normalized = ((Vector3)(ref val)).normalized; Sosig s = grabbedLink.S; if ((Object)(object)s != (Object)null && (Object)(object)s.CoreRB != (Object)null) { s.CoreRB.AddForce(normalized * ThrowForce, (ForceMode)2); s.KnockUnconscious(UnconsciousDuration); if ((Object)(object)CQC_ThrowSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_ThrowSFX, ((Component)s).transform.position); } } ResetCQC(); } private void PerformThrow() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_00b5: Unknown result type (might be due to invalid IL or missing references) if (!readyToThrow || (Object)(object)grabbedLink == (Object)null) { ResetCQC(); return; } Sosig s = grabbedLink.S; if ((Object)(object)s == (Object)null) { ResetCQC(); return; } Vector3 throwLinearVelWorld = hand.GetThrowLinearVelWorld(); Vector3 normalized = ((Vector3)(ref throwLinearVelWorld)).normalized; if ((Object)(object)s.CoreRB != (Object)null) { s.CoreRB.AddForce(normalized * ThrowForce, (ForceMode)2); } s.KnockUnconscious(UnconsciousDuration); if ((Object)(object)CQC_ThrowSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_ThrowSFX, ((Component)s).transform.position); } ResetCQC(); } private void ResetCQC() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) isGrabbing = false; readyToThrow = false; if ((Object)(object)grabbedLink != (Object)null && (Object)(object)grabbedLink.S != (Object)null) { Sosig s = grabbedLink.S; s.m_isConfused = false; s.ObjectUsageFocus = (SosigObjectUsageFocus)1; if ((Object)(object)s.Agent != (Object)null) { ((Behaviour)s.Agent).enabled = true; } s.SetCurrentOrder((SosigOrder)9); s.FallbackOrder = (SosigOrder)9; } grabbedLink = null; } private void OnDrawGizmosSelected() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) Gizmos.color = Color.red; Gizmos.DrawWireSphere(((Component)this).transform.position, GrabRange); Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(((Component)this).transform.position, ReleaseDistance); } } public class CQCFistsSystem : MonoBehaviour { [Header("Prefabs")] public GameObject CQCHandLeftPrefab; public GameObject CQCHandRightPrefab; private GameObject leftHandObj; private GameObject rightHandObj; private void Update() { if ((Object)(object)GM.CurrentPlayerBody == (Object)null) { return; } if ((Object)(object)GM.CurrentMovementManager.Hands[0].m_currentInteractable == (Object)null && GM.CurrentMovementManager.Hands[0].Input.TriggerPressed) { if ((Object)(object)leftHandObj == (Object)null) { leftHandObj = Object.Instantiate<GameObject>(CQCHandLeftPrefab, ((Component)GM.CurrentPlayerBody.LeftHand).transform); } leftHandObj.SetActive(true); } else if ((Object)(object)leftHandObj != (Object)null) { leftHandObj.SetActive(false); } if ((Object)(object)GM.CurrentMovementManager.Hands[1].m_currentInteractable == (Object)null && GM.CurrentMovementManager.Hands[1].Input.TriggerPressed) { if ((Object)(object)rightHandObj == (Object)null) { rightHandObj = Object.Instantiate<GameObject>(CQCHandRightPrefab, ((Component)GM.CurrentPlayerBody.RightHand).transform); } rightHandObj.SetActive(true); } else if ((Object)(object)rightHandObj != (Object)null) { rightHandObj.SetActive(false); } } private void OnDestroy() { if ((Object)(object)leftHandObj != (Object)null) { Object.Destroy((Object)(object)leftHandObj); } if ((Object)(object)rightHandObj != (Object)null) { Object.Destroy((Object)(object)rightHandObj); } } } [BepInProcess("h3vr.exe")] [BepInPlugin("theWNbotMods.CQCFistsToggle", "CQCFistsToggle", "1.0.0")] public class CQCFistsToggle : BaseUnityPlugin { private static class CQCFistsPatch { [HarmonyPatch(typeof(FVRWristMenu2), "Awake")] [HarmonyPostfix] public static void MenuButton(FVRWristMenu2 __instance) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Expected O, but got Unknown if ((Object)(object)__instance == (Object)null) { Logger.LogMessage((object)"No FVRWristMenu2"); return; } bool flag = false; foreach (WristMenuButton button in WristMenuAPI.Buttons) { if (button.Text == "CQCFistsToggle") { flag = true; break; } } if (!flag) { WristMenuAPI.Buttons.Add(new WristMenuButton("CQCFistsToggle", new ButtonClickEvent(ToggleCQCFistsSystem))); Logger.LogMessage((object)"CQCFistsToggle button added to wrist menu!"); } } public static void ToggleCQCFistsSystem(object sender, ButtonClickEventArgs args) { GameObject val = GameObject.Find("CQCFistsSystem(Clone)"); if ((Object)(object)val != (Object)null) { Logger.LogMessage((object)"CQCFistsSystem found, destroying..."); Object.Destroy((Object)(object)val); return; } Logger.LogMessage((object)"Spawning CQCFistsSystem from Inspector reference..."); CQCFistsToggle component = Chainloader.ManagerObject.GetComponent<CQCFistsToggle>(); if ((Object)(object)component != (Object)null && (Object)(object)component.CQCFistsSystemPrefab != (Object)null) { GameObject val2 = Object.Instantiate<GameObject>(component.CQCFistsSystemPrefab); Object.DontDestroyOnLoad((Object)(object)val2); ((Object)val2).name = "CQCFistsSystem(Clone)"; } else { Logger.LogMessage((object)"CQCFistsSystem Prefab not assigned in Inspector!"); } } } public GameObject CQCFistsSystemPrefab; internal static ManualLogSource Logger { get; private set; } public void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Harmony.CreateAndPatchAll(typeof(CQCFistsPatch), (string)null); Logger.LogMessage((object)"CQCFistsToggle loaded!"); } } public class CQCMelee : MonoBehaviour { [Header("CQC Settings")] public float GrabRange = 1f; public float FollowStrength = 10f; public float ThrowForce = 10f; public float DownSwingThreshold = 1.2f; public float ReleaseDistance = 0.8f; [Header("Audio Settings")] public AudioClip CQC_GrabSFX; public AudioClip CQC_ThrowSFX; [Header("Effect Durations")] public float HostageConfuseDuration = 999f; public float UnconsciousDuration = 5f; [Header("Disable Prefabs on Grab")] public GameObject[] disableOnGrab; private FVRMeleeWeapon weapon; private FVRViveHand hand; private bool isGrabbing = false; private bool readyToThrow = false; private SosigLink grabbedLink = null; private Vector3 grabOffset; private Vector3 initialGrabPos; private void Start() { weapon = ((Component)this).GetComponent<FVRMeleeWeapon>(); } private void Update() { if ((Object)(object)weapon == (Object)null || !((FVRInteractiveObject)weapon).IsHeld) { return; } hand = ((FVRInteractiveObject)weapon).m_hand; if (!((Object)(object)hand == (Object)null)) { float triggerFloat = hand.Input.TriggerFloat; if (triggerFloat > 0.75f && !isGrabbing) { TryGrabNearestLink(); } if (isGrabbing && (Object)(object)grabbedLink != (Object)null) { FollowWeaponMovement(); DetectDownSwing(); DetectPullRelease(); } if (isGrabbing && triggerFloat <= 0.75f) { PerformThrow(); } } } private void TryGrabNearestLink() { //IL_0028: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) SosigLink[] array = Object.FindObjectsOfType<SosigLink>(); float num = float.PositiveInfinity; SosigLink val = null; SosigLink[] array2 = array; foreach (SosigLink val2 in array2) { float num2 = Vector3.Distance(((Component)val2).transform.position, ((Component)weapon).transform.position); if (num2 < GrabRange && num2 < num) { num = num2; val = val2; } } if (!((Object)(object)val != (Object)null)) { return; } grabbedLink = val; isGrabbing = true; grabOffset = ((Component)grabbedLink).transform.position - ((Component)weapon).transform.position; initialGrabPos = ((Component)grabbedLink).transform.position; Sosig s = val.S; if ((Object)(object)s != (Object)null) { s.m_isConfused = true; s.m_confusedTime = HostageConfuseDuration; s.SetBodyPose((SosigBodyPose)0); s.ObjectUsageFocus = (SosigObjectUsageFocus)0; if ((Object)(object)s.Agent != (Object)null) { ((Behaviour)s.Agent).enabled = false; } s.SetCurrentOrder((SosigOrder)0); s.FallbackOrder = (SosigOrder)0; } if ((Object)(object)CQC_GrabSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_GrabSFX, ((Component)val).transform.position); } if (disableOnGrab == null) { return; } GameObject[] array3 = disableOnGrab; foreach (GameObject val3 in array3) { if ((Object)(object)val3 != (Object)null) { val3.SetActive(false); } } } private void FollowWeaponMovement() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0045: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((Component)weapon).transform.position + grabOffset; ((Component)grabbedLink).transform.position = Vector3.Lerp(((Component)grabbedLink).transform.position, val, Time.deltaTime * FollowStrength); } private void DetectDownSwing() { //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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) Vector3 throwLinearVelWorld = hand.GetThrowLinearVelWorld(); if (Vector3.Dot(((Vector3)(ref throwLinearVelWorld)).normalized, Vector3.down) > 0.6f && ((Vector3)(ref throwLinearVelWorld)).magnitude > DownSwingThreshold) { readyToThrow = true; } } private void DetectPullRelease() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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_0045: 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) //IL_0052: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) float num = Vector3.Distance(((Component)grabbedLink).transform.position, ((Component)weapon).transform.position); if (!(num > ReleaseDistance)) { return; } Vector3 val = ((Component)grabbedLink).transform.position - initialGrabPos; Vector3 normalized = ((Vector3)(ref val)).normalized; Sosig s = grabbedLink.S; if ((Object)(object)s != (Object)null && (Object)(object)s.CoreRB != (Object)null) { s.CoreRB.AddForce(normalized * ThrowForce, (ForceMode)2); s.KnockUnconscious(UnconsciousDuration); if ((Object)(object)CQC_ThrowSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_ThrowSFX, ((Component)s).transform.position); } } ResetCQC(); } private void PerformThrow() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_00b5: Unknown result type (might be due to invalid IL or missing references) if (!readyToThrow || (Object)(object)grabbedLink == (Object)null) { ResetCQC(); return; } Sosig s = grabbedLink.S; if ((Object)(object)s == (Object)null) { ResetCQC(); return; } Vector3 throwLinearVelWorld = hand.GetThrowLinearVelWorld(); Vector3 normalized = ((Vector3)(ref throwLinearVelWorld)).normalized; if ((Object)(object)s.CoreRB != (Object)null) { s.CoreRB.AddForce(normalized * ThrowForce, (ForceMode)2); } s.KnockUnconscious(UnconsciousDuration); if ((Object)(object)CQC_ThrowSFX != (Object)null) { AudioSource.PlayClipAtPoint(CQC_ThrowSFX, ((Component)s).transform.position); } ResetCQC(); } private void ResetCQC() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) isGrabbing = false; readyToThrow = false; if ((Object)(object)grabbedLink != (Object)null && (Object)(object)grabbedLink.S != (Object)null) { Sosig s = grabbedLink.S; s.m_isConfused = false; s.ObjectUsageFocus = (SosigObjectUsageFocus)1; if ((Object)(object)s.Agent != (Object)null) { ((Behaviour)s.Agent).enabled = true; } s.SetCurrentOrder((SosigOrder)9); s.FallbackOrder = (SosigOrder)9; } grabbedLink = null; if (disableOnGrab == null) { return; } GameObject[] array = disableOnGrab; foreach (GameObject val in array) { if ((Object)(object)val != (Object)null) { val.SetActive(true); } } } private void OnDrawGizmosSelected() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) Gizmos.color = Color.red; Gizmos.DrawWireSphere(((Component)this).transform.position, GrabRange); Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(((Component)this).transform.position, ReleaseDistance); } } public class CigaretteAttach : MonoBehaviour { [Header("Attach Settings")] public float attachDistance = 0.2f; public Vector3 positionOffset = new Vector3(0f, -0.05f, 0.05f); public Vector3 rotationOffsetEuler = new Vector3(0f, 0f, 0f); [Header("Smoke Settings")] public GameObject PuffedSmokePrefab; public float puffDelay = 3f; public float puffCooldown = 2f; public Vector3 smokeOffset = new Vector3(0f, -0.1f, 0.1f); [Header("References")] public FVRCigarette cigarette; [Header("Attach Prefab Control")] public GameObject[] enableOnAttach; public GameObject[] disableOnAttach; [Header("Detach Prefab Control")] public GameObject[] enableOnDetach; public GameObject[] disableOnDetach; private bool isAttachedToHead = false; private Transform headTransform; private FVRPhysicalObject fvrObject; private Rigidbody rb; private float puffTimer = 0f; private bool inCooldown = false; private void Awake() { if ((Object)(object)GM.CurrentPlayerBody != (Object)null && (Object)(object)GM.CurrentPlayerBody.Head != (Object)null) { headTransform = GM.CurrentPlayerBody.Head; } fvrObject = ((Component)this).GetComponent<FVRPhysicalObject>(); rb = ((Component)this).GetComponent<Rigidbody>(); } 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) if ((Object)(object)headTransform == (Object)null) { return; } if (!isAttachedToHead) { float num = Vector3.Distance(((Component)this).transform.position, headTransform.position); if (num <= attachDistance) { AttachToHead(); } } if (isAttachedToHead) { if ((Object)(object)fvrObject != (Object)null && ((FVRInteractiveObject)fvrObject).m_isHeld) { DetachFromHead(); } else { HandleSmokeLogic(); } } } private void AttachToHead() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) isAttachedToHead = true; ((Component)this).transform.SetParent(headTransform); ((Component)this).transform.localPosition = positionOffset; ((Component)this).transform.localRotation = Quaternion.Euler(rotationOffsetEuler); if ((Object)(object)rb != (Object)null) { rb.isKinematic = true; rb.useGravity = false; } puffTimer = 0f; inCooldown = false; GameObject[] array = enableOnAttach; foreach (GameObject val in array) { if ((Object)(object)val != (Object)null) { val.SetActive(true); } } GameObject[] array2 = disableOnAttach; foreach (GameObject val2 in array2) { if ((Object)(object)val2 != (Object)null) { val2.SetActive(false); } } } private void DetachFromHead() { isAttachedToHead = false; ((Component)this).transform.SetParent((Transform)null); if ((Object)(object)rb != (Object)null) { rb.isKinematic = false; rb.useGravity = true; } puffTimer = 0f; inCooldown = false; GameObject[] array = enableOnDetach; foreach (GameObject val in array) { if ((Object)(object)val != (Object)null) { val.SetActive(true); } } GameObject[] array2 = disableOnDetach; foreach (GameObject val2 in array2) { if ((Object)(object)val2 != (Object)null) { val2.SetActive(false); } } } private void HandleSmokeLogic() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_0097: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)cigarette == (Object)null || !cigarette.IsBurning()) { return; } puffTimer += Time.deltaTime; if (!inCooldown && puffTimer >= puffDelay) { if ((Object)(object)PuffedSmokePrefab != (Object)null) { Vector3 val = headTransform.position + headTransform.TransformVector(smokeOffset); Object.Instantiate<GameObject>(PuffedSmokePrefab, val, headTransform.rotation); } inCooldown = true; puffTimer = 0f; } else if (inCooldown && puffTimer >= puffCooldown) { inCooldown = false; puffTimer = 0f; } } } public class CigaretteBox : FVRPhysicalObject { private bool triggerPressedLastFrame = false; private bool isOpen = false; private bool isTouching = false; private Vector2 initTouch = Vector2.zero; private Vector2 LastTouchPoint = Vector2.zero; public Transform CaseLid; public float openRotationX = 90f; public float openRotationY = 0f; public float openRotationZ = 0f; public float closeRotationX = 0f; public float closeRotationY = 0f; public float closeRotationZ = 0f; public float rotationSpeed = 5f; public AudioSource audioSource; public AudioClip openSound; public AudioClip closeSound; public GameObject objectToToggle; public List<Transform> Dings; public int m_numDings; public CigaretteBoxTrigger cigaretteBoxTrigger; private Quaternion targetRotation; public override void Start() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) CaseLid.localRotation = Quaternion.Euler(closeRotationX, closeRotationY, closeRotationZ); targetRotation = CaseLid.localRotation; } private void Update() { //IL_000d: 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) //IL_0024: Unknown result type (might be due to invalid IL or missing references) CaseLid.localRotation = Quaternion.Lerp(CaseLid.localRotation, targetRotation, Time.deltaTime * rotationSpeed); } public override void UpdateInteraction(FVRViveHand hand) { //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: 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_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).UpdateInteraction(hand); if (hand.Input.TriggerFloat > 0.8f && !triggerPressedLastFrame && (Object)(object)hand.CurrentInteractable == (Object)(object)this) { ToggleLid(); triggerPressedLastFrame = true; } else if (hand.Input.TriggerFloat < 0.2f) { triggerPressedLastFrame = false; } if (hand.IsInStreamlinedMode) { if (hand.Input.BYButtonDown || hand.Input.AXButtonDown) { ToggleLid(); } return; } if (hand.Input.TouchpadTouched && !isTouching && hand.Input.TouchpadAxes != Vector2.zero) { isTouching = true; initTouch = hand.Input.TouchpadAxes; } if (hand.Input.TouchpadTouchUp && isTouching) { isTouching = false; Vector2 lastTouchPoint = LastTouchPoint; float y = (lastTouchPoint - initTouch).y; if (y > 0.5f || y < -0.5f) { ToggleLid(); } initTouch = Vector2.zero; lastTouchPoint = Vector2.zero; } LastTouchPoint = hand.Input.TouchpadAxes; } private void ToggleLid() { //IL_004a: 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_004f: Unknown result type (might be due to invalid IL or missing references) isOpen = !isOpen; targetRotation = (isOpen ? Quaternion.Euler(openRotationX, openRotationY, openRotationZ) : Quaternion.Euler(closeRotationX, closeRotationY, closeRotationZ)); if (isOpen) { if ((Object)(object)audioSource != (Object)null && (Object)(object)openSound != (Object)null) { audioSource.PlayOneShot(openSound); } if ((Object)(object)objectToToggle != (Object)null) { objectToToggle.SetActive(true); } Open(); } else { if ((Object)(object)audioSource != (Object)null && (Object)(object)closeSound != (Object)null) { audioSource.PlayOneShot(closeSound); } if ((Object)(object)objectToToggle != (Object)null) { objectToToggle.SetActive(false); } Close(); } } public bool IsOpen() { return isOpen; } public bool HasADing() { return m_numDings > 0; } public override void FVRUpdate() { ((FVRPhysicalObject)this).FVRUpdate(); } public void Open() { isOpen = true; if ((Object)(object)audioSource != (Object)null && (Object)(object)openSound != (Object)null) { audioSource.PlayOneShot(openSound); } UpdateDingDisplay(); } public void Close() { isOpen = false; if ((Object)(object)audioSource != (Object)null && (Object)(object)closeSound != (Object)null) { audioSource.PlayOneShot(closeSound); } UpdateDingDisplay(); } public void RemoveDing() { if (m_numDings > 0) { m_numDings--; UpdateDingDisplay(); } } private void UpdateDingDisplay() { for (int i = 0; i < Dings.Count; i++) { if (i < m_numDings) { ((Component)Dings[i]).gameObject.SetActive(true); } else { ((Component)Dings[i]).gameObject.SetActive(false); } } } } } public class CigaretteBoxTrigger : FVRInteractiveObject { public CigaretteBox cigaretteBox; public GameObject cigarPrefab; public override bool IsInteractable() { return cigaretteBox.HasADing() && ((FVRInteractiveObject)this).IsInteractable(); } public override void BeginInteraction(FVRViveHand hand) { ((FVRInteractiveObject)this).SimpleInteraction(hand); } public override void SimpleInteraction(FVRViveHand hand) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).SimpleInteraction(hand); if (cigaretteBox.IsOpen()) { cigaretteBox.RemoveDing(); GameObject val = Object.Instantiate<GameObject>(cigarPrefab, ((HandInput)(ref hand.Input)).Pos, ((HandInput)(ref hand.Input)).Rot); FVRPhysicalObject component = val.GetComponent<FVRPhysicalObject>(); hand.ForceSetInteractable((FVRInteractiveObject)(object)component); ((FVRInteractiveObject)component).BeginInteraction(hand); } else { cigaretteBox.Open(); } } } namespace theWNbotMods { [Serializable] public class MotionPart { public GameObject motionPrefab; public GameObject startPrefab; public GameObject endPrefab; } public class FVRCigarette : QBArmorHelmet { [Header("Visual Prefabs")] public GameObject Unlit; public GameObject Lit; [Header("Motion Parts")] public MotionPart[] motionParts; [Header("Animation Settings")] public float burnAnimDuration = 10f; private float burnAnimTimer = 0f; private bool animPlaying = false; [Header("Burn Settings")] public float BurnDuration = 120f; public float DestructionDelay = 10f; private bool m_isBurning = false; private bool m_hasBeenLit = false; private float m_burnTimer; [Header("Fire Prefabs Control")] public GameObject[] fireOnPrefabs; public GameObject[] fireOffPrefabs; [Header("Torch Prefab Control")] public GameObject torchPrefab; [Header("Extinguish Collider")] public Collider ExtinguishCollider; [Header("Extinguish Settings")] public LayerMask ExtinguishLayers; [Header("Audio Settings")] public AudioSource audioSource; public AudioClip extinguishSound; public override void Awake() { ((QBArmorHelmet)this).Awake(); if ((Object)(object)Unlit != (Object)null) { Unlit.SetActive(true); } if ((Object)(object)Lit != (Object)null) { Lit.SetActive(false); } if (motionParts == null) { return; } MotionPart[] array = motionParts; foreach (MotionPart motionPart in array) { if ((Object)(object)motionPart.motionPrefab != (Object)null) { motionPart.motionPrefab.SetActive(false); } } } public override void FVRUpdate() { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) ((QBArmorPiece)this).FVRUpdate(); if (!m_isBurning) { return; } m_burnTimer -= Time.deltaTime; if (animPlaying) { burnAnimTimer += Time.deltaTime; float num = Mathf.Clamp01(burnAnimTimer / burnAnimDuration); MotionPart[] array = motionParts; foreach (MotionPart motionPart in array) { if ((Object)(object)motionPart.motionPrefab != (Object)null && (Object)(object)motionPart.startPrefab != (Object)null && (Object)(object)motionPart.endPrefab != (Object)null) { motionPart.motionPrefab.transform.position = Vector3.Lerp(motionPart.startPrefab.transform.position, motionPart.endPrefab.transform.position, num); motionPart.motionPrefab.transform.rotation = Quaternion.Lerp(motionPart.startPrefab.transform.rotation, motionPart.endPrefab.transform.rotation, num); motionPart.motionPrefab.transform.localScale = Vector3.Lerp(motionPart.startPrefab.transform.localScale, motionPart.endPrefab.transform.localScale, num); } } if (num >= 1f) { animPlaying = false; } } if (m_burnTimer <= 0f) { StopBurning(); } } public void Ignite() { if (m_isBurning) { return; } m_hasBeenLit = true; m_isBurning = true; if (m_burnTimer <= 0f) { m_burnTimer = BurnDuration; } if ((Object)(object)Unlit != (Object)null) { Unlit.SetActive(false); } if ((Object)(object)Lit != (Object)null) { Lit.SetActive(true); } animPlaying = true; if (motionParts != null) { MotionPart[] array = motionParts; foreach (MotionPart motionPart in array) { if ((Object)(object)motionPart.motionPrefab != (Object)null && (Object)(object)motionPart.startPrefab != (Object)null) { motionPart.motionPrefab.SetActive(true); } } } GameObject[] array2 = fireOnPrefabs; foreach (GameObject val in array2) { if ((Object)(object)val != (Object)null) { val.SetActive(true); } } if ((Object)(object)torchPrefab != (Object)null) { torchPrefab.SetActive(false); } } private void Extinguish() { if (!m_isBurning) { return; } m_isBurning = false; animPlaying = false; if ((Object)(object)Lit != (Object)null) { Lit.SetActive(true); } if ((Object)(object)Unlit != (Object)null) { Unlit.SetActive(false); } GameObject[] array = fireOffPrefabs; foreach (GameObject val in array) { if ((Object)(object)val != (Object)null) { val.SetActive(false); } } if ((Object)(object)torchPrefab != (Object)null) { torchPrefab.SetActive(true); } if ((Object)(object)audioSource != (Object)null && (Object)(object)extinguishSound != (Object)null) { audioSource.PlayOneShot(extinguishSound); } } private void StopBurning() { m_isBurning = false; animPlaying = false; if (motionParts == null) { return; } MotionPart[] array = motionParts; foreach (MotionPart motionPart in array) { if ((Object)(object)motionPart.motionPrefab != (Object)null) { motionPart.motionPrefab.SetActive(false); } } } private void OnCollisionEnter(Collision collision) { //IL_002d: 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) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)ExtinguishCollider == (Object)null) { return; } ContactPoint[] contacts = collision.contacts; for (int i = 0; i < contacts.Length; i++) { ContactPoint val = contacts[i]; if ((Object)(object)((ContactPoint)(ref val)).thisCollider == (Object)(object)ExtinguishCollider && ((1 << ((Component)collision.collider).gameObject.layer) & LayerMask.op_Implicit(ExtinguishLayers)) != 0) { Extinguish(); break; } } } public bool IsBurning() { return m_isBurning; } } public class TorchCigaretteTrigger : MonoBehaviour { [Header("Cigarette Reference")] public FVRCigarette Cigarette; [Header("Torch Prefab")] public GameObject torchPrefab; private void OnTriggerEnter(Collider col) { if ((Object)(object)Cigarette != (Object)null) { Cigarette.Ignite(); if ((Object)(object)torchPrefab != (Object)null) { torchPrefab.SetActive(false); } } } } } namespace JerryComponent { public class control_component : MonoBehaviour { public GameObject Comp; public GameObject Comp2; public GameObject Rot; private void Start() { } private void Update() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (Rot.transform.localEulerAngles.x >= 45f) { Comp.SetActive(false); Comp2.SetActive(true); } else { Comp.SetActive(true); Comp2.SetActive(false); } } } public class FIATSAR : MonoBehaviour { public Rigidbody RIG; public FSO125P Vehicle; [Header("RPM Digits (Text)")] public Text rpmThousands; public Text rpmHundreds; public Text rpmTens; public Text rpmOnes; [Header("Speed Needle (Transform)")] public Transform speedNeedle; public float minX = 0f; public float maxX = 180f; public float minSpeed = 0f; public float maxSpeed = 180f; private void Update() { //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) int num = Mathf.RoundToInt(Vehicle.currentRPM); num = Mathf.Clamp(num, 0, 7000); int num2 = num / 1000; int num3 = num % 1000 / 100; int num4 = num % 100 / 10; int num5 = num % 10; if ((Object)(object)rpmThousands != (Object)null) { rpmThousands.text = num2.ToString(); } if ((Object)(object)rpmHundreds != (Object)null) { rpmHundreds.text = num3.ToString(); } if ((Object)(object)rpmTens != (Object)null) { rpmTens.text = num4.ToString(); } if ((Object)(object)rpmOnes != (Object)null) { rpmOnes.text = num5.ToString(); } if ((Object)(object)speedNeedle != (Object)null) { Vector3 velocity = RIG.velocity; float num6 = ((Vector3)(ref velocity)).magnitude * 2.7f; float num7 = Mathf.InverseLerp(minSpeed, maxSpeed, num6); float x = Mathf.Lerp(minX, maxX, num7); Vector3 localPosition = speedNeedle.localPosition; localPosition.x = x; speedNeedle.localPosition = localPosition; } } } public class FIATSteeringWheel : FVRInteractiveObject { public float resetLerpSpeed; public float maxRot; public bool reverseRot; [Header("Debug Values")] public Text rotText; public float rot; public float rh; public float lr; public float inlerp; public float lerp; public float rotAmt; public float CurSteer; public override void BeginInteraction(FVRViveHand hand) { //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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).BeginInteraction(hand); Transform child = ((Component)this).transform.GetChild(0); child.parent = null; Vector3 localEulerAngles = ((Component)this).transform.localEulerAngles; ((Component)this).transform.LookAt(((Component)hand).transform); ((Component)this).transform.localEulerAngles = new Vector3(localEulerAngles.x, ((Component)this).transform.localEulerAngles.y, localEulerAngles.z); child.parent = ((Component)this).transform; } public override void EndInteraction(FVRViveHand hand) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).EndInteraction(hand); Transform child = ((Component)this).transform.GetChild(0); child.parent = null; ((Component)this).transform.localEulerAngles = new Vector3(((Component)this).transform.localEulerAngles.x, 0f, ((Component)this).transform.localEulerAngles.z); child.parent = ((Component)this).transform; } public override void UpdateInteraction(FVRViveHand hand) { //IL_000e: 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) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).UpdateInteraction(hand); Vector3 localEulerAngles = ((Component)this).transform.localEulerAngles; ((Component)this).transform.LookAt(((Component)hand).transform); Vector3 localEulerAngles2 = ((Component)this).transform.localEulerAngles; rot = Mathf.DeltaAngle((float)Math.Round(localEulerAngles2.y), (float)Math.Round(localEulerAngles.y)); rotAmt += rot; if (rotAmt >= maxRot) { rotAmt = maxRot; ((Component)this).transform.localEulerAngles = localEulerAngles; } else if (rotAmt <= 0f - maxRot) { rotAmt = 0f - maxRot; ((Component)this).transform.localEulerAngles = localEulerAngles; } else { ((Component)this).transform.localEulerAngles = new Vector3(localEulerAngles.x, localEulerAngles2.y, localEulerAngles.z); } rh = localEulerAngles2.y; lr = localEulerAngles.y; CurSteer = SetRot(); } private float SetRot() { bool flag = rotAmt <= 0f; lerp = Mathf.Abs(rotAmt) / maxRot; lerp *= -1f; if (flag) { lerp *= -1f; } if (reverseRot) { lerp = 0f - lerp; } if ((Object)(object)rotText != (Object)null) { rotText.text = lerp.ToString(); } return lerp; } } public class FSO125P : MonoBehaviour { public GameObject HBGeo; public FVRInteractiveObject grabobjHB; public GameObject HandRefHB; public bool IsIgniting; public GameObject IgnitionKeyHole; public FVRInteractiveObject IgnitionInt; public FIATSteeringWheel SteeringwheelInt; public FVRInteractiveObject DriveShiftInt; public GameObject HandRef; public bool shiftPressed; public bool altPressed; public GameObject SteeringWheelGeo; public float StallCD = 0.1f; public int PrevGear = -1; public Rigidbody CarRig; public float MaxVel = 75f; public Transform CarMassC; public GameObject WheelGeoLF; public GameObject WheelGeoRF; public GameObject WheelGeoLR; public GameObject WheelGeoRR; public WheelCollider WheelColLF; public WheelCollider WheelColRF; public WheelCollider WheelColLR; public WheelCollider WheelColRR; public AudioSource EngineIdle; public AudioSource EngineOn; public AudioSource EngineOff; public AudioSource ShiftGear; public AudioSource HandBrakeOn; public AudioSource HandBrakeOff; public float EnginePower = 100f; public float MaxRPM = 6000f; public float currentRPM; public float curRPMRef; public float curRPMRef2; public float torque; public float torqueRef; public float wheelTorque; public AnimationCurve torqueCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[6] { new Keyframe(1000f, 80f), new Keyframe(2000f, 110f), new Keyframe(3000f, 125f), new Keyframe(4000f, 130f), new Keyframe(5000f, 120f), new Keyframe(6000f, 100f) }); public float maxTorque = 250f; public float idleRPM = 900f; private float clutchInput; public bool isclutchstepped; public float finalDriveRatio = 4.1f; public float[] gearRatios = new float[6] { -3.8f, 0f, 3.75f, 2.12f, 1.36f, 1f }; private float throttleInput; public GameObject shiftGeo; public GameObject GearGeo; public GameObject Gear1Failed; public GameObject Gear2Failed; public GameObject Gear3Failed; public GameObject Gear4Failed; public GameObject GearRFailed; public GameObject Left; public GameObject Right; public GameObject Middle; public float MaxSteer = 35f; public float curSteer; public float curSteerRef; public float speedlim = 200f; public float steerMul = 2.5f; public float ShiftCD = 1f; public float BrakeForce = 1000f; public float HandBrakeForce = 1500f; public float BrakeInput; public float curVel; public bool isEngineOn; public bool isIgnited; public bool isHandBrakeOn; public bool isHBToggled; public int curGear = 1; public bool shifted; public float RPMRef; public float RPMRefref; public GameObject ReverseLight; public GameObject BrakeLight; public GameObject LightTotal; public Vector3 WLFPos; public Vector3 WLRPos; public Vector3 WRFPos; public Vector3 WRRPos; public Quaternion WLFRot; public Quaternion WLRRot; public Quaternion WRFRot; public Quaternion WRRRot; public float rotLF; public float rotLR; public float rotRF; public float rotRR; public float rotLF2; public float rotRF2; public float maxspeed; public float upforce; public float rotforce; public void Start() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) CarRig.centerOfMass = ((Component)CarMassC).transform.position; CarRig.ResetCenterOfMass(); } private void AxisLookAtXZ(Transform tr_self, Vector3 lookPos, Vector3 directionAxis) { //IL_0002: 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_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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) //IL_0033: 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_003f: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) Quaternion rotation = tr_self.rotation; Vector3 val = lookPos - tr_self.position; Vector3 val2 = tr_self.rotation * directionAxis; Vector3 val3 = Vector3.Cross(val2, val); Vector3 normalized = ((Vector3)(ref val3)).normalized; float num = Vector3.Angle(val2, val); tr_self.rotation = Quaternion.AngleAxis(num, normalized) * rotation; tr_self.localEulerAngles = new Vector3(tr_self.localEulerAngles.x, tr_self.localEulerAngles.y, 0f); } private void AxisLookAtY(Transform tr_self, Vector3 lookPos, Vector3 directionAxis) { //IL_0002: 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_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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) //IL_0033: 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_003f: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_006a: Unknown result type (might be due to invalid IL or missing references) Quaternion rotation = tr_self.rotation; Vector3 val = lookPos - tr_self.position; Vector3 val2 = tr_self.rotation * directionAxis; Vector3 val3 = Vector3.Cross(val2, val); Vector3 normalized = ((Vector3)(ref val3)).normalized; float num = Vector3.Angle(val2, val); tr_self.rotation = Quaternion.AngleAxis(num, normalized) * rotation; tr_self.localEulerAngles = new Vector3(tr_self.localEulerAngles.x, 0f, 0f); } private void Update() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //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_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_0430: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_0480: Unknown result type (might be due to invalid IL or missing references) //IL_0485: Unknown result type (might be due to invalid IL or missing references) //IL_0499: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_050a: Unknown result type (might be due to invalid IL or missing references) //IL_050f: Unknown result type (might be due to invalid IL or missing references) //IL_0523: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_0546: Unknown result type (might be due to invalid IL or missing references) //IL_054b: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Unknown result type (might be due to invalid IL or missing references) //IL_057e: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_05b1: Unknown result type (might be due to invalid IL or missing references) //IL_05c6: Unknown result type (might be due to invalid IL or missing references) //IL_05cb: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_062c: Unknown result type (might be due to invalid IL or missing references) //IL_0631: Unknown result type (might be due to invalid IL or missing references) //IL_0646: Unknown result type (might be due to invalid IL or missing references) //IL_064b: Unknown result type (might be due to invalid IL or missing references) //IL_05ef: Unknown result type (might be due to invalid IL or missing references) //IL_05f4: Unknown result type (might be due to invalid IL or missing references) //IL_0608: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_0770: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Unknown result type (might be due to invalid IL or missing references) //IL_0674: Unknown result type (might be due to invalid IL or missing references) //IL_0688: Unknown result type (might be due to invalid IL or missing references) //IL_068d: Unknown result type (might be due to invalid IL or missing references) //IL_06b8: Unknown result type (might be due to invalid IL or missing references) //IL_06bd: Unknown result type (might be due to invalid IL or missing references) //IL_06d1: Unknown result type (might be due to invalid IL or missing references) //IL_06d6: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_070d: Unknown result type (might be due to invalid IL or missing references) //IL_0712: Unknown result type (might be due to invalid IL or missing references) //IL_0726: Unknown result type (might be due to invalid IL or missing references) //IL_072b: Unknown result type (might be due to invalid IL or missing references) //IL_0745: Unknown result type (might be due to invalid IL or missing references) //IL_074a: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Unknown result type (might be due to invalid IL or missing references) //IL_07e2: Unknown result type (might be due to invalid IL or missing references) //IL_07e7: Unknown result type (might be due to invalid IL or missing references) //IL_0a60: Unknown result type (might be due to invalid IL or missing references) //IL_0a65: Unknown result type (might be due to invalid IL or missing references) //IL_0a79: Unknown result type (might be due to invalid IL or missing references) //IL_0a7e: Unknown result type (might be due to invalid IL or missing references) //IL_0808: Unknown result type (might be due to invalid IL or missing references) //IL_080d: Unknown result type (might be due to invalid IL or missing references) //IL_0821: Unknown result type (might be due to invalid IL or missing references) //IL_0826: Unknown result type (might be due to invalid IL or missing references) //IL_0c0d: Unknown result type (might be due to invalid IL or missing references) //IL_0c12: Unknown result type (might be due to invalid IL or missing references) //IL_0c26: Unknown result type (might be due to invalid IL or missing references) //IL_0c2b: Unknown result type (might be due to invalid IL or missing references) //IL_0a9e: Unknown result type (might be due to invalid IL or missing references) //IL_0aa3: Unknown result type (might be due to invalid IL or missing references) //IL_0ab7: Unknown result type (might be due to invalid IL or missing references) //IL_0abc: Unknown result type (might be due to invalid IL or missing references) //IL_088e: Unknown result type (might be due to invalid IL or missing references) //IL_0893: Unknown result type (might be due to invalid IL or missing references) //IL_08ac: Unknown result type (might be due to invalid IL or missing references) //IL_08b1: Unknown result type (might be due to invalid IL or missing references) //IL_08c5: Unknown result type (might be due to invalid IL or missing references) //IL_08ca: Unknown result type (might be due to invalid IL or missing references) //IL_08e3: Unknown result type (might be due to invalid IL or missing references) //IL_0845: Unknown result type (might be due to invalid IL or missing references) //IL_084a: Unknown result type (might be due to invalid IL or missing references) //IL_085e: Unknown result type (might be due to invalid IL or missing references) //IL_0863: Unknown result type (might be due to invalid IL or missing references) //IL_0f2a: Unknown result type (might be due to invalid IL or missing references) //IL_0f2f: Unknown result type (might be due to invalid IL or missing references) //IL_0f43: Unknown result type (might be due to invalid IL or missing references) //IL_0f48: Unknown result type (might be due to invalid IL or missing references) //IL_0c4b: Unknown result type (might be due to invalid IL or missing references) //IL_0c50: Unknown result type (might be due to invalid IL or missing references) //IL_0c64: Unknown result type (might be due to invalid IL or missing references) //IL_0c69: Unknown result type (might be due to invalid IL or missing references) //IL_08f9: Unknown result type (might be due to invalid IL or missing references) //IL_08fe: Unknown result type (might be due to invalid IL or missing references) //IL_0912: Unknown result type (might be due to invalid IL or missing references) //IL_0917: Unknown result type (might be due to invalid IL or missing references) //IL_1284: Unknown result type (might be due to invalid IL or missing references) //IL_1289: Unknown result type (might be due to invalid IL or missing references) //IL_129d: Unknown result type (might be due to invalid IL or missing references) //IL_12a2: Unknown result type (might be due to invalid IL or missing references) //IL_0f67: Unknown result type (might be due to invalid IL or missing references) //IL_0f6c: Unknown result type (might be due to invalid IL or missing references) //IL_0f80: Unknown result type (might be due to invalid IL or missing references) //IL_0f85: Unknown result type (might be due to invalid IL or missing references) //IL_0dba: Unknown result type (might be due to invalid IL or missing references) //IL_0dbf: Unknown result type (might be due to invalid IL or missing references) //IL_0dd3: Unknown result type (might be due to invalid IL or missing references) //IL_0dd8: Unknown result type (might be due to invalid IL or missing references) //IL_0af3: Unknown result type (might be due to invalid IL or missing references) //IL_0af8: Unknown result type (might be due to invalid IL or missing references) //IL_0b0c: Unknown result type (might be due to invalid IL or missing references) //IL_0b11: Unknown result type (might be due to invalid IL or missing references) //IL_0b3a: Unknown result type (might be due to invalid IL or missing references) //IL_0b3f: Unknown result type (might be due to invalid IL or missing references) //IL_0b53: Unknown result type (might be due to invalid IL or missing references) //IL_0b58: Unknown result type (might be due to invalid IL or missing references) //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0a1e: Unknown result type (might be due to invalid IL or missing references) //IL_0a23: Unknown result type (might be due to invalid IL or missing references) //IL_0a3c: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Unknown result type (might be due to invalid IL or missing references) //IL_0a4a: Unknown result type (might be due to invalid IL or missing references) //IL_0936: Unknown result type (might be due to invalid IL or missing references) //IL_093b: Unknown result type (might be due to invalid IL or missing references) //IL_094f: Unknown result type (might be due to invalid IL or missing references) //IL_0954: Unknown result type (might be due to invalid IL or missing references) //IL_140c: Unknown result type (might be due to invalid IL or missing references) //IL_1411: Unknown result type (might be due to invalid IL or missing references) //IL_1425: Unknown result type (might be due to invalid IL or missing references) //IL_142a: Unknown result type (might be due to invalid IL or missing references) //IL_12c1: Unknown result type (might be due to invalid IL or missing references) //IL_12c6: Unknown result type (might be due to invalid IL or missing references) //IL_12da: Unknown result type (might be due to invalid IL or missing references) //IL_12df: Unknown result type (might be due to invalid IL or missing references) //IL_0fa5: Unknown result type (might be due to invalid IL or missing references) //IL_0faa: Unknown result type (might be due to invalid IL or missing references) //IL_0fbe: Unknown result type (might be due to invalid IL or missing references) //IL_0fc3: Unknown result type (might be due to invalid IL or missing references) //IL_0ca0: Unknown result type (might be due to invalid IL or missing references) //IL_0ca5: Unknown result type (might be due to invalid IL or missing references) //IL_0cb9: Unknown result type (might be due to invalid IL or missing references) //IL_0cbe: Unknown result type (might be due to invalid IL or missing references) //IL_0ce7: Unknown result type (might be due to invalid IL or missing references) //IL_0cec: Unknown result type (might be due to invalid IL or missing references) //IL_0d00: Unknown result type (might be due to invalid IL or missing references) //IL_0d05: Unknown result type (might be due to invalid IL or missing references) //IL_0d24: Unknown result type (might be due to invalid IL or missing references) //IL_097f: Unknown result type (might be due to invalid IL or missing references) //IL_0984: Unknown result type (might be due to invalid IL or missing references) //IL_0998: Unknown result type (might be due to invalid IL or missing references) //IL_099d: Unknown result type (might be due to invalid IL or missing references) //IL_09c6: Unknown result type (might be due to invalid IL or missing references) //IL_09cb: Unknown result type (might be due to invalid IL or missing references) //IL_09df: Unknown result type (might be due to invalid IL or missing references) //IL_09e4: Unknown result type (might be due to invalid IL or missing references) //IL_09fd: Unknown result type (might be due to invalid IL or missing references) //IL_14d3: Unknown result type (might be due to invalid IL or missing references) //IL_14d8: Unknown result type (might be due to invalid IL or missing references) //IL_14ec: Unknown result type (might be due to invalid IL or missing references) //IL_14f1: Unknown result type (might be due to invalid IL or missing references) //IL_145a: Unknown result type (might be due to invalid IL or missing references) //IL_145f: Unknown result type (might be due to invalid IL or missing references) //IL_1473: Unknown result type (might be due to invalid IL or missing references) //IL_1478: Unknown result type (might be due to invalid IL or missing references) //IL_148c: Unknown result type (might be due to invalid IL or missing references) //IL_1491: Unknown result type (might be due to invalid IL or missing references) //IL_14af: Unknown result type (might be due to invalid IL or missing references) //IL_14b4: Unknown result type (might be due to invalid IL or missing references) //IL_14bd: Unknown result type (might be due to invalid IL or missing references) //IL_1114: Unknown result type (might be due to invalid IL or missing references) //IL_1119: Unknown result type (might be due to invalid IL or missing references) //IL_112d: Unknown result type (might be due to invalid IL or missing references) //IL_1132: Unknown result type (might be due to invalid IL or missing references) //IL_0e0f: Unknown result type (might be due to invalid IL or missing references) //IL_0e14: Unknown result type (might be due to invalid IL or missing references) //IL_0e28: Unknown result type (might be due to invalid IL or missing references) //IL_0e2d: Unknown result type (might be due to invalid IL or missing references) //IL_0e56: Unknown result type (might be due to invalid IL or missing references) //IL_0e5b: Unknown result type (might be due to invalid IL or missing references) //IL_0e6f: Unknown result type (might be due to invalid IL or missing references) //IL_0e74: Unknown result type (might be due to invalid IL or missing references) //IL_0e93: Unknown result type (might be due to invalid IL or missing references) //IL_17f5: Unknown result type (might be due to invalid IL or missing references) //IL_17fa: Unknown result type (might be due to invalid IL or missing references) //IL_180e: Unknown result type (might be due to invalid IL or missing references) //IL_1813: Unknown result type (might be due to invalid IL or missing references) //IL_1516: Unknown result type (might be due to invalid IL or missing references) //IL_151b: Unknown result type (might be due to invalid IL or missing references) //IL_152f: Unknown result type (might be due to invalid IL or missing references) //IL_1534: Unknown result type (might be due to invalid IL or missing references) //IL_1324: Unknown result type (might be due to invalid IL or missing references) //IL_1329: Unknown result type (might be due to invalid IL or missing references) //IL_133d: Unknown result type (might be due to invalid IL or missing references) //IL_1342: Unknown result type (might be due to invalid IL or missing references) //IL_136b: Unknown result type (might be due to invalid IL or missing references) //IL_1370: Unknown result type (might be due to invalid IL or missing references) //IL_1384: Unknown result type (might be due to invalid IL or missing references) //IL_1389: Unknown result type (might be due to invalid IL or missing references) //IL_13a2: Unknown result type (might be due to invalid IL or missing references) //IL_0ffa: Unknown result type (might be due to invalid IL or missing references) //IL_0fff: Unknown result type (might be due to invalid IL or missing references) //IL_1013: Unknown result type (might be due to invalid IL or missing references) //IL_1018: Unknown result type (might be due to invalid IL or missing references) //IL_1041: Unknown result type (might be due to invalid IL or missing references) //IL_1046: Unknown result type (might be due to invalid IL or missing references) //IL_105a: Unknown result type (might be due to invalid IL or missing references) //IL_105f: Unknown result type (might be due to invalid IL or missing references) //IL_107e: Unknown result type (might be due to invalid IL or missing references) //IL_183c: Unknown result type (might be due to invalid IL or missing references) //IL_1841: Unknown result type (might be due to invalid IL or missing references) //IL_1855: Unknown result type (might be due to invalid IL or missing references) //IL_185a: Unknown result type (might be due to invalid IL or missing references) //IL_15de: Unknown result type (might be due to invalid IL or missing references) //IL_15e3: Unknown result type (might be due to invalid IL or missing references) //IL_15f7: Unknown result type (might be due to invalid IL or missing references) //IL_15fc: Unknown result type (might be due to invalid IL or missing references) //IL_155f: Unknown result type (might be due to invalid IL or missing references) //IL_1564: Unknown result type (might be due to invalid IL or missing references) //IL_1578: Unknown result type (might be due to invalid IL or missing references) //IL_157d: Unknown result type (might be due to invalid IL or missing references) //IL_1591: Unknown result type (might be due to invalid IL or missing references) //IL_1596: Unknown result type (might be due to invalid IL or missing references) //IL_15ba: Unknown result type (might be due to invalid IL or missing references) //IL_15bf: Unknown result type (might be due to invalid IL or missing references) //IL_15c8: Unknown result type (might be due to invalid IL or missing references) //IL_1169: Unknown result type (might be due to invalid IL or missing references) //IL_116e: Unknown result type (might be due to invalid IL or missing references) //IL_1182: Unknown result type (might be due to invalid IL or missing references) //IL_1187: Unknown result type (might be due to invalid IL or missing references) //IL_11b0: Unknown result t