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