using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using FistVR; using HarmonyLib; using OtherLoader; using UnityEngine; using UnityEngine.UI; [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 Earwig_Scripts { public class EWG_Simple_Rangefinder : MonoBehaviour { public Text Range_Text; public Transform Laser_Pointer; public LayerMask LM_Laser_Pointer; private RaycastHit m_hit; public bool Uses_Scope; public PIPScope Scope; public float Max_Range; private void Update() { if (Uses_Scope) { if (((Behaviour)Scope).enabled) { UpdateText(GetRange()); ((Component)Range_Text).gameObject.SetActive(true); } else { ((Component)Range_Text).gameObject.SetActive(false); } } else { UpdateText(GetRange()); } } public float GetRange() { //IL_001e: 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_0036: Unknown result type (might be due to invalid IL or missing references) float scopeMaxDrawRange = GM.CurrentSceneSettings.ScopeMaxDrawRange; scopeMaxDrawRange = Mathf.Min(scopeMaxDrawRange, 9999f); if (Physics.Raycast(Laser_Pointer.position, Laser_Pointer.forward, ref m_hit, scopeMaxDrawRange, LayerMask.op_Implicit(LM_Laser_Pointer))) { return ((RaycastHit)(ref m_hit)).distance; } return scopeMaxDrawRange; } private void UpdateText(float rangeNum) { rangeNum = Mathf.Min(rangeNum, Max_Range); string text = ((!(rangeNum < 100f)) ? rangeNum.ToString("f0") : rangeNum.ToString("f1")); Range_Text.text = text; } } public class GroundFire : MonoBehaviour { public GameObject GroundFirePrefab; public int Amount_To_Spawn; public int Max_Tries; public float Range; public LayerMask LM; private RaycastHit m_hit; private int m_spawned; private void Start() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b2: Unknown result type (might be due to invalid IL or missing references) m_spawned = 0; for (int i = 0; i < Max_Tries; i++) { if (m_spawned >= Amount_To_Spawn) { break; } Vector3 val = -Vector3.up; if (i > 0) { val = Random.onUnitSphere; if (val.y > 0f) { val.y = 0f - val.y; } } if (Physics.Raycast(((Component)this).transform.position + Vector3.up, val, ref m_hit, Range, LayerMask.op_Implicit(LM), (QueryTriggerInteraction)1)) { Object.Instantiate(GroundFirePrefab, ((RaycastHit)(ref m_hit)).point, Quaternion.LookRotation(Vector3.up)); m_spawned++; } } } } public class Left_Right_Switcher : MonoBehaviour { public enum Axis { X, Y, Z } public GameObject Left_Object; public GameObject Right_Object; public Transform Switch_Object; public Axis Mirror_Axis; public bool Is_Left; public PIPScopeController pipscope; public ReflexSightController reflex; public LaserLightAttachment laser; public void Switch_Sides() { if (Is_Left) { Is_Left = false; Left_Object.SetActive(false); Right_Object.SetActive(true); Mirror(Mirror_Axis); UpdateComponents(); } else { Is_Left = true; Left_Object.SetActive(true); Right_Object.SetActive(false); Mirror(Mirror_Axis); UpdateComponents(); } } private void Mirror(Axis a) { //IL_0026: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_0088: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00da: 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_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) switch (a) { case Axis.X: Switch_Object.localPosition = new Vector3(0f - Switch_Object.localPosition.x, Switch_Object.localPosition.y, Switch_Object.localPosition.z); break; case Axis.Y: Switch_Object.localPosition = new Vector3(Switch_Object.localPosition.x, 0f - Switch_Object.localPosition.y, Switch_Object.localPosition.z); break; case Axis.Z: Switch_Object.localPosition = new Vector3(Switch_Object.localPosition.x, Switch_Object.localPosition.y, 0f - Switch_Object.localPosition.z); break; } } private void UpdateComponents() { if ((Object)(object)pipscope != (Object)null) { pipscope.UpdateScopeParams(); } if ((Object)(object)reflex != (Object)null) { reflex.Zero(); } if ((Object)(object)laser != (Object)null) { laser.UpdateParams(); } } } public class Left_Right_Trigger : FVRInteractiveObject { public Left_Right_Switcher Switch; public AudioEvent Switch_Sound; public override void SimpleInteraction(FVRViveHand hand) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).SimpleInteraction(hand); Switch.Switch_Sides(); SM.PlayGenericSound(Switch_Sound, ((Component)this).transform.position); } } public class Revolving_Shotgun_Caseless_Fixed_Trigger : RevolvingShotgunTrigger { public override void BeginInteraction(FVRViveHand hand) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Invalid comparison between Unknown and I4 if ((Object)(object)base.Shotgun != (Object)null && (int)base.TType == 1) { for (int i = 0; i < base.Shotgun.Chambers.Length; i++) { if ((Object)(object)base.Shotgun.Chambers[i].GetRound() != (Object)null && base.Shotgun.Chambers[i].IsSpent && base.Shotgun.Chambers[i].GetRound().IsCaseless) { base.Shotgun.Chambers[i].Unload(); } } } ((RevolvingShotgunTrigger)this).BeginInteraction(hand); } } } namespace earwig256.Regulus_Weapons_Pack { [BepInPlugin("earwig256.Regulus_Weapons_Pack", "Regulus_Weapons_Pack", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class Regulus_Weapons_PackPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "earwig256.Regulus_Weapons_Pack"); OtherLoader.RegisterDirectLoad(BasePath, "earwig256.Regulus_Weapons_Pack", "", "", "regulus base pack,regulus attachments,regulus snipers,regulus ordinance,regulus tools", ""); } } public class Regulus_C4_Activator : MonoBehaviour { public C4 C4_Object; public GameObject Indicator_On; public GameObject Indicator_Off; public AudioEvent Arm_Sound; private bool m_armed; public void Start() { m_armed = false; } public void Update() { //IL_00e8: 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) if (((FVRInteractiveObject)C4_Object).IsHeld) { if (((FVRInteractiveObject)C4_Object).m_hand.IsInStreamlinedMode) { if (((FVRInteractiveObject)C4_Object).m_hand.Input.AXButtonDown || ((FVRInteractiveObject)C4_Object).m_hand.Input.BYButtonDown) { C4_Object.SetArmed(!m_armed); m_armed = !m_armed; SM.PlayGenericSound(Arm_Sound, ((Component)this).transform.position); } } else if (((FVRInteractiveObject)C4_Object).m_hand.Input.TouchpadDown) { C4_Object.SetArmed(!m_armed); m_armed = !m_armed; SM.PlayGenericSound(Arm_Sound, ((Component)this).transform.position); } } if (m_armed && !Indicator_On.activeSelf) { Indicator_On.SetActive(true); Indicator_Off.SetActive(false); } else if (!m_armed && !Indicator_Off.activeSelf) { Indicator_On.SetActive(false); Indicator_Off.SetActive(true); } } } public class Regulus_Cloak_Attachment : MonoBehaviour { public enum CloakState { Uncloaked, Cloaking, Cloaked } public FVRFireArm fireArm; public float Max_Cloak; public float Regen_Multiplier; public float Cloak_Delay; public float Firing_Delay; public Renderer Cloak_Display; public CloakState State; public AudioEvent Cloak_Activate; public AudioEvent Cloak_Deactivate; private float m_cloakEnergy; private bool m_fired; private float m_fireCountdown; private bool m_triggerHeld; private float m_cloakDelay; public void Awake() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown m_cloakEnergy = Max_Cloak; m_fired = false; m_triggerHeld = false; m_cloakDelay = Cloak_Delay; m_fireCountdown = 0f; Cloak_Display.material.SetFloat("_EmissionWeight", 0.7f); GM.CurrentSceneSettings.ShotFiredEvent += new ShotFired(OnFire); } public void OnDestroy() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown GM.CurrentSceneSettings.ShotFiredEvent -= new ShotFired(OnFire); } public void Update() { //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fireArm != (Object)null && (Object)(object)((FVRPhysicalObject)fireArm).AltGrip != (Object)null && ((FVRInteractiveObject)((FVRPhysicalObject)fireArm).AltGrip).IsHeld && ((FVRInteractiveObject)((FVRPhysicalObject)fireArm).AltGrip).m_hand.Input.TriggerPressed) { m_triggerHeld = true; } else if ((Object)(object)fireArm != (Object)null && fireArm.IsTwoHandStabilized()) { m_triggerHeld = true; } else { m_triggerHeld = false; } if (m_fired) { m_fireCountdown -= Time.deltaTime; if (m_fireCountdown <= 0f) { m_fired = false; Cloak_Display.material.SetFloat("_EmissionWeight", 0.7f); } } switch (State) { case CloakState.Uncloaked: if (m_cloakEnergy < Max_Cloak && !m_fired) { m_cloakEnergy += Time.deltaTime * Regen_Multiplier; m_cloakEnergy = Mathf.Clamp(m_cloakEnergy, 0f, Max_Cloak); UpdateCloakDisplay(); } if (m_triggerHeld && !m_fired) { State = CloakState.Cloaking; SM.PlayGenericSound(Cloak_Activate, ((Component)this).transform.position); m_cloakDelay = Cloak_Delay; } break; case CloakState.Cloaking: m_cloakDelay -= Time.deltaTime; if (m_cloakDelay <= 0f) { Cloak_Display.material.SetFloat("_EmissionWeight", 1f); State = CloakState.Cloaked; } break; case CloakState.Cloaked: if (!m_triggerHeld) { State = CloakState.Uncloaked; Cloak_Display.material.SetFloat("_EmissionWeight", 0.7f); SM.PlayGenericSound(Cloak_Deactivate, ((Component)this).transform.position); break; } GM.CurrentPlayerBody.ActivatePower((PowerupType)4, (PowerUpIntensity)0, (PowerUpDuration)3, false, false, 1.05f); m_cloakEnergy -= Time.deltaTime; if (m_cloakEnergy <= 0f) { State = CloakState.Uncloaked; Cloak_Display.material.SetFloat("_EmissionWeight", 0.4f); SM.PlayGenericSound(Cloak_Deactivate, ((Component)this).transform.position); m_cloakEnergy = Mathf.Clamp(Firing_Delay * Regen_Multiplier, 0f, Max_Cloak); m_fired = true; m_fireCountdown = Firing_Delay; } UpdateCloakDisplay(); break; } } public void UpdateCloakDisplay() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Clamp(m_cloakEnergy / Max_Cloak, 0f, 1f); num = 0f - num; num += 0.5f; Cloak_Display.material.SetTextureOffset("_MainTex", new Vector2(num, 0f)); } public void OnFire(FVRFireArm fa) { //IL_007d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fireArm != (Object)null && (Object)(object)fa == (Object)(object)fireArm) { m_fired = true; Cloak_Display.material.SetFloat("_EmissionWeight", 0.4f); m_fireCountdown = Firing_Delay; if (State == CloakState.Cloaked || State == CloakState.Cloaking) { State = CloakState.Uncloaked; SM.PlayGenericSound(Cloak_Deactivate, ((Component)this).transform.position); } } } } public class Regulus_Cloak_Attachment_Interface : FVRFireArmAttachmentInterface { public Regulus_Cloak_Attachment Cloaker; public override void Awake() { ((FVRFireArmAttachmentInterface)this).Awake(); if ((Object)(object)base.Attachment != (Object)null && base.Attachment.curMount.Parent is FVRFireArm) { ref FVRFireArm fireArm = ref Cloaker.fireArm; FVRPhysicalObject parent = base.Attachment.curMount.Parent; fireArm = (FVRFireArm)(object)((parent is FVRFireArm) ? parent : null); } } public override void OnAttach() { ((FVRFireArmAttachmentInterface)this).OnAttach(); if (base.Attachment.curMount.Parent is FVRFireArm) { ref FVRFireArm fireArm = ref Cloaker.fireArm; FVRPhysicalObject parent = base.Attachment.curMount.Parent; fireArm = (FVRFireArm)(object)((parent is FVRFireArm) ? parent : null); } else { Cloaker.fireArm = null; } } public override void OnDetach() { ((FVRFireArmAttachmentInterface)this).OnDetach(); Cloaker.fireArm = null; } } public class Regulus_Dart_Display : MonoBehaviour { public Transform Display; public float Min_Scale; public float Min_Scale_Distance; private float m_Scale; private float m_Lerp; private void LateUpdate() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_006e: 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_00c1: Unknown result type (might be due to invalid IL or missing references) Display.position = GM.CurrentPlayerBody.Head.position; Display.LookAt(((Component)this).transform.position); Transform display = Display; display.position += Display.forward * 2f; m_Lerp = Mathf.InverseLerp(0f, Min_Scale_Distance, Vector3.Distance(((Component)this).transform.position, Display.position)); m_Scale = Mathf.Lerp(1f, Min_Scale, m_Lerp); Display.localScale = new Vector3(m_Scale, m_Scale, m_Scale); } } public class Regulus_Dart_Scan : MonoBehaviour { public float Scan_Radius = 30f; public float Scan_Delay = 5f; public int Number_of_Scans = 3; public LayerMask LM_Collide; public GameObject Prefab; private float m_ScanTime; private void Start() { Scan(); m_ScanTime = Scan_Delay; Number_of_Scans--; } private void Update() { if (Number_of_Scans > 0) { m_ScanTime -= Time.deltaTime; if (m_ScanTime <= 0f) { m_ScanTime = Scan_Delay; Scan(); Number_of_Scans--; } } } private void Scan() { //IL_0007: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_00b6: 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_00cf: Unknown result type (might be due to invalid IL or missing references) Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, Scan_Radius, LayerMask.op_Implicit(LM_Collide), (QueryTriggerInteraction)1); HashSet hashSet = new HashSet(); for (int i = 0; i < array.Length; i++) { if (!((Object)(object)array[i].attachedRigidbody == (Object)null)) { SosigLink component = ((Component)array[i].attachedRigidbody).gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { hashSet.Add(component.S); } } } foreach (Sosig item in hashSet) { if ((int)item.BodyState != 3) { Object.Instantiate(Prefab, item.CoreTarget.position, Quaternion.LookRotation(new Vector3(0f, 0f, 1f))); } } } } public class Regulus_Dart_Stick : MonoBehaviour { public bool Is_PowerUp; public bool Has_Stick_Enable; public GameObject Enable_On_Stick; public GameObject Coll; public PowerupType PType; public PowerUpIntensity PIntensity; public PowerUpDuration PDuration; public bool PIsPuke; public bool PIsInverted; private bool m_isStuck; public void Start() { m_isStuck = false; } public void OnCollisionEnter(Collision col) { //IL_0086: 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_0092: Unknown result type (might be due to invalid IL or missing references) if (m_isStuck) { return; } if ((Object)(object)col.collider.attachedRigidbody != (Object)null) { m_isStuck = true; ((Component)this).gameObject.transform.SetParent(((Component)col.collider).gameObject.transform); if (Is_PowerUp) { SosigLink component = ((Component)col.collider.attachedRigidbody).gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { component.S.ActivatePower(PType, PIntensity, PDuration, PIsPuke, PIsInverted); } } if (Has_Stick_Enable) { Enable_On_Stick.SetActive(true); } Object.Destroy((Object)(object)((Component)this).GetComponent()); } else { m_isStuck = true; ((Component)this).GetComponent().isKinematic = true; } if ((Object)(object)Coll != (Object)null) { Coll.SetActive(false); } } } public class Regulus_Deployable_Launcher : FVRFireArm { public FVRFireArmChamber Chamber; [Header("Trigger Config")] public Transform Trigger; public float TriggerFiringThreshold = 0.8f; public float TriggerResetThreshold = 0.4f; public Vector2 Trigger_Positions; public InterpStyle Trigger_InterpStyle; public Axis Trigger_Axis; [Header("Launcher Config")] public float Cooldown = 60f; public Renderer Cooldown_Display; public GameObject Display_Ready; public GameObject Display_Charging; public AudioEvent Charge_Ready; private float m_cooldown; private bool m_recharging; private bool m_triggerReset; private float m_triggerFloat; private float m_prevTrigger; public override void Awake() { ((FVRFireArm)this).Awake(); base.FChambers.Add(Chamber); m_cooldown = Cooldown - 1f; m_triggerReset = true; m_recharging = true; UpdateDisplay(); } public override void FVRUpdate() { ((FVRFireArm)this).FVRUpdate(); if (m_recharging) { m_cooldown += Time.deltaTime; UpdateDisplay(); if (m_cooldown >= Cooldown) { m_cooldown = Cooldown; m_recharging = false; LoadRoundIntoChamber(playSound: true); } } } public override void UpdateInteraction(FVRViveHand hand) { //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).UpdateInteraction(hand); m_prevTrigger = m_triggerFloat; if (((FVRInteractiveObject)this).IsHeld) { if (!((FVRPhysicalObject)this).IsAltHeld && ((FVRInteractiveObject)this).m_hasTriggeredUpSinceBegin) { m_triggerFloat = hand.Input.TriggerFloat; } else { m_triggerFloat = 0f; } if (hand.IsInStreamlinedMode) { if (!m_recharging && (hand.Input.AXButtonDown || hand.Input.BYButtonDown)) { LoadRoundIntoChamber(playSound: true); } } else if (!m_recharging && hand.Input.TouchpadDown) { LoadRoundIntoChamber(playSound: true); } if (m_triggerReset) { if (m_triggerFloat >= TriggerFiringThreshold && Shoot()) { } } else if (m_triggerFloat < TriggerResetThreshold) { m_triggerReset = true; } } else { m_triggerFloat = 0f; m_triggerReset = true; } if (m_triggerFloat != m_prevTrigger) { ((FVRPhysicalObject)this).SetAnimatedComponent(Trigger, Mathf.Lerp(Trigger_Positions.x, Trigger_Positions.y, m_triggerFloat), Trigger_InterpStyle, Trigger_Axis); } } public void LoadRoundIntoChamber(bool playSound) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)base.Magazine != (Object)null && base.Magazine.HasARound()) { Chamber.Autochamber(base.Magazine.LoadedRounds[0].LR_Class); Display_Ready.SetActive(true); Display_Charging.SetActive(false); if (playSound) { SM.PlayGenericSound(Charge_Ready, ((Component)this).transform.position); } } else { m_cooldown -= 1f; m_recharging = true; } } public void UpdateDisplay() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Clamp(m_cooldown / Cooldown, 0f, 1f); num = 0f - num; num += 0.5f; Cooldown_Display.material.SetTextureOffset("_MainTex", new Vector2(0f, num)); } public bool Shoot() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) if (!Chamber.Fire()) { return false; } ((FVRFireArm)this).Fire(Chamber, base.CurrentMuzzle, true, 1f, -1f); ((FVRFireArm)this).FireMuzzleSmoke(); bool flag = ((FVRFireArm)this).IsTwoHandStabilized(); bool flag2 = (Object)(object)((FVRPhysicalObject)this).AltGrip != (Object)null; bool flag3 = ((FVRFireArm)this).IsShoulderStabilized(); ((FVRFireArm)this).Recoil(flag, flag2, flag3, (FVRFireArmRecoilProfile)null, 1f); ((FVRFireArm)this).PlayAudioGunShot(Chamber.GetRound(), GM.CurrentPlayerBody.GetCurrentSoundEnvironment(), 1f); Display_Charging.SetActive(true); Display_Ready.SetActive(false); m_recharging = true; m_cooldown = 0f; return true; } } public class Regulus_Hand_Jet : FVRPhysicalObject { [Header("Trigger Config")] public Transform Trigger; public Axis Trigger_Axis; public InterpStyle Trigger_Interpstyle; public Vector2 Trigger_Positions; public float Trigger_Threshold; [Header("Hand Jet Config")] public AudioSource Audio_Jet; public float Jet_Force; public Transform Jet_Vector; public float Max_Fuel; public float Fuel_Recovery_Rate; public float Fuel_Threshold; public Transform Fuel_Display; public Renderer Fuel_Display_Renderer; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Color_Display; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Color_Refueling; public ParticleSystem Jet_Effect_1; public ParticleSystem Jet_Effect_2; private float m_triggerFloat; private TransformVelocity jetMover; private bool m_isRegistered; private bool m_isThrusting; private float m_fuel; private bool m_refueling; private float m_prevFuel; public override void Start() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_003d: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).Start(); jetMover = new TransformVelocity(TransformVel); m_fuel = Max_Fuel; m_refueling = false; Fuel_Display_Renderer.material.SetColor("_EmissionColor", Color_Display); Fuel_Display.localScale = new Vector3(Fuel_Display.localScale.x, 1f, Fuel_Display.localScale.z); } public override void OnDestroy() { ((FVRPhysicalObject)this).OnDestroy(); if (jetMover != null) { GM.CurrentMovementManager.DeregisterSmoothLocoRestrictor(jetMover); } jetMover = null; } public override void FVRUpdate() { //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: 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_0212: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) m_prevFuel = m_fuel; if (m_triggerFloat > Trigger_Threshold && m_fuel > 0f && !m_refueling) { m_isThrusting = true; m_fuel -= Time.deltaTime; if (!Audio_Jet.isPlaying) { Audio_Jet.Play(); } if (!Jet_Effect_1.isPlaying) { Jet_Effect_1.Play(); } if (!Jet_Effect_2.isPlaying) { Jet_Effect_2.Play(); } } else { m_isThrusting = false; if (Audio_Jet.isPlaying) { Audio_Jet.Stop(); } if (Jet_Effect_1.isPlaying) { Jet_Effect_1.Stop(); } if (Jet_Effect_2.isPlaying) { Jet_Effect_2.Stop(); } if (m_fuel <= 0f) { m_refueling = true; Fuel_Display_Renderer.material.SetColor("_EmissionColor", Color_Refueling); } if (m_fuel < Max_Fuel) { m_fuel += Fuel_Recovery_Rate * Time.deltaTime; if (m_fuel > Max_Fuel) { m_fuel = Max_Fuel; } } if (m_refueling && m_fuel > Fuel_Threshold) { m_refueling = false; Fuel_Display_Renderer.material.SetColor("_EmissionColor", Color_Display); } } if (m_fuel != m_prevFuel) { Fuel_Display.localScale = new Vector3(Fuel_Display.localScale.x, m_fuel / Max_Fuel, Fuel_Display.localScale.z); } } public override void FVRFixedUpdate() { ((FVRPhysicalObject)this).FVRFixedUpdate(); if (m_isThrusting) { if (!m_isRegistered) { m_isRegistered = true; GM.CurrentMovementManager.RegisterSmoothLocoAdder(jetMover); } } else if (m_isRegistered) { m_isRegistered = false; GM.CurrentMovementManager.DeregisterSmoothLocoAdder(jetMover); } } public void TransformVel(ref Vector3 vel, ref bool isGrounded, ref bool didChange) { //IL_001d: 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_0039: Expected I4, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_00c5: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) if (m_isThrusting) { float num = 5f; GravityMode playerGravityMode = GM.Options.SimulationOptions.PlayerGravityMode; switch ((int)playerGravityMode) { case 0: num = 9.81f; break; case 1: num = 5f; break; case 2: num = 1.62f; break; case 3: num = 0.001f; break; } float num2 = Vector3.Dot(Jet_Vector.forward, Vector3.up); num2 = ((!(num2 > 0f)) ? 0f : (num2 * num)); GM.CurrentMovementManager.DelayGround(0.1f); vel = Jet_Force * Jet_Vector.forward + num2 * Vector3.up; didChange = true; } else { didChange = false; } } public override void UpdateInteraction(FVRViveHand hand) { //IL_005d: 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) ((FVRPhysicalObject)this).UpdateInteraction(hand); if (((FVRInteractiveObject)this).m_hasTriggeredUpSinceBegin) { float triggerFloat = hand.Input.TriggerFloat; if (m_triggerFloat != triggerFloat) { m_triggerFloat = triggerFloat; ((FVRPhysicalObject)this).SetAnimatedComponent(Trigger, Mathf.Lerp(Trigger_Positions.x, Trigger_Positions.y, m_triggerFloat), Trigger_Interpstyle, Trigger_Axis); } } } public override void EndInteraction(FVRViveHand hand) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).EndInteraction(hand); m_triggerFloat = 0f; ((FVRPhysicalObject)this).SetAnimatedComponent(Trigger, Mathf.Lerp(Trigger_Positions.x, Trigger_Positions.y, m_triggerFloat), Trigger_Interpstyle, Trigger_Axis); } } public class Regulus_Hedgehog : RevolvingShotgun { public float Auto_Delay; private float m_autoDelay; public override void Awake() { ((RevolvingShotgun)this).Awake(); m_autoDelay = 0f; } public override void UpdateInteraction(FVRViveHand hand) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 ((RevolvingShotgun)this).UpdateInteraction(hand); if (m_autoDelay > 0f) { m_autoDelay -= Time.deltaTime; } if ((int)base.FireSelector_Modes[base.m_fireSelectorMode].ModeType == 2 && base.m_isHammerLocked && m_autoDelay <= 0f) { base.m_hasTriggerCycled = false; m_autoDelay = Auto_Delay; } } } public class Regulus_Launched_Deployable : MonoBehaviour { public GameObject ToSpawn; public float Tick_Time = 1f; public float LifeTime = 30f; public float Rotate_Speed = 30f; public Renderer LifeTime_Display; public Transform Rotator; public bool Uses_Rotator; public bool Uses_Pulse; private float m_tick; private float m_lifeDown; public void Awake() { if (Uses_Pulse) { Pulse(); } m_tick = Tick_Time; m_lifeDown = LifeTime; } public void Update() { //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_008e: Unknown result type (might be due to invalid IL or missing references) m_lifeDown -= Time.deltaTime; if (Uses_Pulse) { m_tick -= Time.deltaTime; if (m_tick <= 0f) { m_tick = Tick_Time; Pulse(); } } if (Uses_Rotator) { Rotator.localEulerAngles += new Vector3(0f, 0f, Rotate_Speed * Time.deltaTime); } float num = Mathf.Clamp(m_lifeDown / LifeTime, 0f, 1f); num = 0f - num; num += 0.5f; LifeTime_Display.material.SetTextureOffset("_MainTex", new Vector2(0f, num)); } public void Pulse() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) Object.Instantiate(ToSpawn, ((Component)this).transform.position, ((Component)this).transform.rotation); } } public class Regulus_Max_Pack : FVRPhysicalObject { private bool m_active; private float m_powerupTick; public override void Awake() { ((FVRPhysicalObject)this).Awake(); if ((Object)(object)base.m_quickbeltSlot != (Object)null) { m_active = true; m_powerupTick = 0f; } else { m_active = false; } } public override void FVRUpdate() { ((FVRPhysicalObject)this).FVRUpdate(); if (m_active) { m_powerupTick -= Time.deltaTime; if (m_powerupTick <= 0f) { m_powerupTick = 1f; GM.CurrentPlayerBody.ActivatePower((PowerupType)6, (PowerUpIntensity)0, (PowerUpDuration)3, false, false, -1f); } } else if ((Object)(object)base.m_quickbeltSlot != (Object)null && !((FVRInteractiveObject)this).IsHeld) { m_active = true; m_powerupTick = 0f; } } public override void BeginInteraction(FVRViveHand hand) { ((FVRPhysicalObject)this).BeginInteraction(hand); m_active = false; } } public class Regulus_Prox_Mine : FVRPhysicalObject, IFVRDamageable { public float Arming_Delay; public float Ping_Time; public float Ping_Radius; public List SpawnOnDestroy; public LayerMask LM_proxy; public LayerMask LM_blockers; public GameObject Indicator_On; public GameObject Indicator_Off; public AudioEvent Arm_Sound; private bool m_armed; private bool m_detonated; private float m_armingDelay; private float m_pingTimer; private float m_stickDelay; private Collider[] m_Colliders; private int m_IFF; public override void Awake() { ((FVRPhysicalObject)this).Awake(); m_armed = false; m_detonated = false; m_armingDelay = Arming_Delay; m_pingTimer = Ping_Time; m_stickDelay = 0f; } public override void FVRUpdate() { ((FVRPhysicalObject)this).FVRUpdate(); if (m_armed) { if (m_armingDelay > 0f) { m_armingDelay -= Time.deltaTime; } else if (m_pingTimer > 0f) { m_pingTimer -= Time.deltaTime; } else { m_pingTimer = Ping_Time; Ping(); } } if (m_stickDelay > 0f) { m_stickDelay -= Time.deltaTime; } } public override void UpdateInteraction(FVRViveHand hand) { ((FVRPhysicalObject)this).UpdateInteraction(hand); if (hand.IsInStreamlinedMode) { if (hand.Input.AXButtonDown || hand.Input.BYButtonDown) { ToggleArmed(); } } else if (hand.Input.TouchpadDown) { ToggleArmed(); } } public override void BeginInteraction(FVRViveHand hand) { ((FVRPhysicalObject)this).BeginInteraction(hand); ((FVRPhysicalObject)this).RootRigidbody.isKinematic = false; m_stickDelay = 0.5f; } public void Explode() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (m_detonated) { return; } m_detonated = true; for (int i = 0; i < SpawnOnDestroy.Count; i++) { GameObject val = Object.Instantiate(SpawnOnDestroy[i], ((Component)this).transform.position, ((Component)this).transform.rotation); Explosion component = ((Component)this).gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { component.IFF = m_IFF; } ExplosionSound component2 = val.GetComponent(); if ((Object)(object)component2 != (Object)null) { component2.IFF = m_IFF; } GrenadeExplosion component3 = val.GetComponent(); if ((Object)(object)component3 != (Object)null) { component3.IFF = m_IFF; } } Object.Destroy((Object)(object)((Component)this).gameObject); } public void ToggleArmed() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) m_armed = !m_armed; SM.PlayGenericSound(Arm_Sound, ((Component)this).transform.position); if (m_armed) { Indicator_On.SetActive(true); Indicator_Off.SetActive(false); m_IFF = GM.CurrentPlayerBody.GetPlayerIFF(); m_armingDelay = Arming_Delay; } else { Indicator_On.SetActive(false); Indicator_Off.SetActive(true); } } public void Ping() { //IL_002a: 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) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Invalid comparison between Unknown and I4 //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0122: 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) if (((FVRInteractiveObject)this).IsHeld || (Object)(object)base.m_quickbeltSlot != (Object)null) { return; } m_Colliders = Physics.OverlapSphere(((Component)this).transform.position, Ping_Radius, LayerMask.op_Implicit(LM_proxy)); RaycastHit val2 = default(RaycastHit); for (int i = 0; i < m_Colliders.Length; i++) { if ((Object)(object)m_Colliders[i].attachedRigidbody != (Object)null && (Object)(object)((Component)m_Colliders[i].attachedRigidbody).gameObject.GetComponent() != (Object)null && (int)((Component)m_Colliders[i].attachedRigidbody).gameObject.GetComponent().S.BodyState != 3 && (m_IFF < 0 || !((Component)m_Colliders[i].attachedRigidbody).gameObject.GetComponent().S.Priority.IsFriend(m_IFF))) { Vector3 val = ((Component)m_Colliders[i]).transform.position - ((Component)this).transform.position; if (!Physics.Raycast(((Component)this).transform.position, ((Vector3)(ref val)).normalized, ref val2, ((Vector3)(ref val)).magnitude, LayerMask.op_Implicit(LM_blockers))) { Explode(); break; } } } } public void Damage(Damage d) { if (m_armed && !(m_armingDelay > 0f) && !((Object)(object)base.m_quickbeltSlot != (Object)null) && (d.Dam_TotalKinetic > 200f || d.Dam_EMP > 1f)) { Explode(); } } public override void OnCollisionEnter(Collision col) { ((FVRPhysicalObject)this).OnCollisionEnter(col); if (m_armed && ((FVRInteractiveObject)this).IsHeld && !((Object)(object)col.collider.attachedRigidbody != (Object)null) && !((FVRPhysicalObject)this).RootRigidbody.isKinematic && !(m_stickDelay > 0f)) { ((FVRInteractiveObject)this).ForceBreakInteraction(); ((FVRPhysicalObject)this).RootRigidbody.isKinematic = true; } } } public class Regulus_Shield_Foregrip : MonoBehaviour { public float Trigger_Threshold; public float Shield_Health; public float Shield_Regen; public float Shield_Recharge_Threshold; public GameObject Shield; public GameObject Interface; public Renderer Shield_Renderer; public int Material_Index; public Material[] Mats; public Renderer Indicator; public AudioEvent Shield_Change; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Indicator_Available; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Indicator_Recharging; private bool m_recharing; private float m_shield; public void Awake() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) m_shield = Shield_Health; m_recharing = false; Indicator.material.SetColor("_EmissionColor", Indicator_Available); Shield_Renderer.material = Mats[Material_Index]; } public void Update() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) float shield = m_shield; if (!Shield.activeSelf) { if (m_shield < Shield_Health) { m_shield += Shield_Regen * Time.deltaTime; if (m_shield > Shield_Health) { m_shield = Shield_Health; } } if (m_recharing && m_shield > Shield_Recharge_Threshold) { m_recharing = false; Indicator.material.SetColor("_EmissionColor", Indicator_Available); } } else if (!Interface.activeSelf) { Shield.SetActive(false); } if (shield != m_shield) { UpdateIndicator(); } } public void ProcessInput(FVRViveHand hand, FVRInteractiveObject o) { //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) if (hand.IsInStreamlinedMode) { if (hand.Input.BYButtonDown) { CycleColor(); } } else if (hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.25f && Vector2.Angle(hand.Input.TouchpadAxes, Vector2.up) <= 45f) { CycleColor(); } if (m_recharing) { return; } if (hand.Input.TriggerFloat > Trigger_Threshold) { if (!Shield.activeSelf) { Shield.SetActive(true); } } else if (Shield.activeSelf) { Shield.SetActive(false); } } public void UpdateIndicator() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Clamp(m_shield / Shield_Health, 0f, 1f); num = 0f - num; num += 0.5f; Indicator.material.SetTextureOffset("_MainTex", new Vector2(0f, num)); } public void CycleColor() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) Material_Index++; SM.PlayGenericSound(Shield_Change, ((Component)this).transform.position); if (Material_Index >= Mats.Length) { Material_Index = 0; } Shield_Renderer.material = Mats[Material_Index]; } public void ProcessDamage(Damage d) { //IL_006f: Unknown result type (might be due to invalid IL or missing references) float num = d.Dam_TotalEnergetic + d.Dam_TotalKinetic; m_shield -= num; if (m_shield <= 0f) { m_recharing = true; m_shield = 0f; if (Shield.activeSelf) { Shield.SetActive(false); } Indicator.material.SetColor("_EmissionColor", Indicator_Recharging); } UpdateIndicator(); } } public class Regulus_Shield_Foregrip_Damagable : MonoBehaviour, IFVRDamageable { public Regulus_Shield_Foregrip Foregrip; public void Damage(Damage d) { if ((Object)(object)Foregrip != (Object)null) { Foregrip.ProcessDamage(d); } } } public class Regulus_Shield_Foregrip_Interface : AttachableForegrip { public Regulus_Shield_Foregrip Fore; public override void UpdateInteraction(FVRViveHand hand) { Fore.ProcessInput(hand, (FVRInteractiveObject)(object)this); ((FVRFireArmAttachmentInterface)this).UpdateInteraction(hand); } public override void PassHandInput(FVRViveHand hand, FVRInteractiveObject o) { Fore.ProcessInput(hand, o); ((AttachableForegrip)this).PassHandInput(hand, o); } } public class Regulus_Spotter_Scope : MonoBehaviour { public FVRInteractiveObject Scope; public GameObject Ready_Indicator; public Transform Pointer; public LayerMask LM_Pointer; public bool Uses_Trigger; public float Trigger_Treshold; public float Cooldown; public float Max_Range; public PowerUpDuration Spot_Duration; public AudioEvent Success_Sound; public AudioEvent Failure_Sound; public GameObject Spot_Prefab; private RaycastHit m_hit; private float m_cooldown; private bool m_active; public void Start() { m_cooldown = Cooldown; m_active = true; } public void Update() { //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) if (Scope.IsHeld && m_active) { HandInput input = Scope.m_hand.Input; if (Uses_Trigger) { if (Scope.m_hasTriggeredUpSinceBegin && input.TriggerFloat > Trigger_Treshold) { AttemptSpot(); } } else if (!Scope.m_hand.IsInStreamlinedMode) { if (input.TouchpadPressed) { AttemptSpot(); } } else if (input.AXButtonPressed || input.BYButtonPressed) { AttemptSpot(); } } if (!m_active) { m_cooldown -= Time.deltaTime; if (m_cooldown <= 0f) { m_active = true; Ready_Indicator.SetActive(true); } } } private void AttemptSpot() { //IL_0026: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Invalid comparison between Unknown and I4 //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) m_cooldown = Cooldown; m_active = false; Ready_Indicator.SetActive(false); if (Physics.Raycast(Pointer.position, Pointer.forward, ref m_hit, Mathf.Min(Max_Range, GM.CurrentSceneSettings.ScopeMaxDrawRange), LayerMask.op_Implicit(LM_Pointer)) && (Object)(object)((RaycastHit)(ref m_hit)).collider.attachedRigidbody != (Object)null) { SosigLink component = ((Component)((RaycastHit)(ref m_hit)).collider.attachedRigidbody).gameObject.GetComponent(); if ((Object)(object)component != (Object)null && (int)component.S.BodyState != 3) { component.S.ActivatePower((PowerupType)4, (PowerUpIntensity)0, Spot_Duration, false, true); SM.PlayGenericSound(Success_Sound, ((Component)Scope).transform.position); if ((Object)(object)component.S.Links[0] != (Object)null) { GameObject val = Object.Instantiate(Spot_Prefab, ((Component)component.S.Links[0]).transform.position, ((Component)component.S.Links[0]).transform.rotation); val.transform.SetParent(((Component)component.S.Links[0]).transform); } return; } } SM.PlayGenericSound(Failure_Sound, ((Component)Scope).transform.position); } } public class Regulus_Sticky : PinnedGrenade { private bool is_Stuck; private FixedJoint the_Joint; public override void Awake() { ((PinnedGrenade)this).Awake(); is_Stuck = false; } public override void OnCollisionEnter(Collision col) { ((PinnedGrenade)this).OnCollisionEnter(col); if (!base.m_isFused || is_Stuck) { return; } if ((Object)(object)col.collider.attachedRigidbody != (Object)null) { if ((Object)(object)((Component)col.collider.attachedRigidbody).gameObject.GetComponent() == (Object)null && (Object)(object)((Component)col.collider.attachedRigidbody).gameObject.GetComponent() == (Object)null) { is_Stuck = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); the_Joint = ((Component)this).gameObject.AddComponent(); ((Joint)the_Joint).connectedBody = col.collider.attachedRigidbody; ((Joint)the_Joint).enableCollision = false; } } else { is_Stuck = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); ((FVRPhysicalObject)this).RootRigidbody.isKinematic = true; } } public override void BeginInteraction(FVRViveHand hand) { ((PinnedGrenade)this).BeginInteraction(hand); if (is_Stuck) { ((FVRPhysicalObject)this).RootRigidbody.isKinematic = false; if ((Object)(object)the_Joint != (Object)null) { Object.Destroy((Object)(object)the_Joint); } is_Stuck = false; } } } public class Regulus_Syringe : FVRPhysicalObject { [Header("Powerup Stuff")] public PowerupType Powerup_Type; public PowerUpIntensity Powerup_Intensity; public PowerUpDuration Powerup_Duration; public float Duration_Override = -1f; public bool is_Puke; public bool is_Inverted; public bool Is_Health_Powerup; [Header("Syringe Config")] public AudioEvent Powerup_Sound; public float Recharge_Delay; public Vector2 Button_Positions; public Transform Button; public Transform Indicator; public Transform[] Openy_Bits; public Vector2 Openy_Rots; public Renderer Indicator_Renderer; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Color_Display; [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color Color_Recharging; public GameObject Syringe_Trigger; private bool m_Active; private float m_RechargeAmt; private bool m_buttonPressed; public override void Start() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_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_005a: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).Start(); m_Active = true; Indicator_Renderer.material.SetColor("_EmissionColor", Color_Display); Indicator.localScale = new Vector3(Indicator.localScale.x, 1f, Indicator.localScale.z); } public override void FVRUpdate() { //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) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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) ((FVRPhysicalObject)this).FVRUpdate(); if (!m_Active) { m_RechargeAmt += Time.deltaTime; Indicator.localScale = new Vector3(Indicator.localScale.x, m_RechargeAmt / Recharge_Delay, Indicator.localScale.z); if (m_RechargeAmt >= Recharge_Delay) { m_Active = true; Indicator.localScale = new Vector3(Indicator.localScale.x, 1f, Indicator.localScale.z); Indicator_Renderer.material.SetColor("_EmissionColor", Color_Display); } } } public override void UpdateInteraction(FVRViveHand hand) { //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: 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) //IL_0168: 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_0058: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_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_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).UpdateInteraction(hand); if (!((FVRInteractiveObject)this).IsHeld) { return; } if (((FVRInteractiveObject)this).m_hand.IsInStreamlinedMode) { if (!((FVRInteractiveObject)this).m_hand.Input.BYButtonPressed) { return; } if (!m_buttonPressed) { Button.localPosition = new Vector3(Button.localPosition.x, Button_Positions.y, Button.localPosition.z); for (int i = 0; i < Openy_Bits.Length; i++) { Openy_Bits[i].localEulerAngles = new Vector3(Openy_Bits[i].localEulerAngles.x, Openy_Bits[i].localEulerAngles.y, Openy_Rots.y); } m_buttonPressed = true; } if (!Syringe_Trigger.activeSelf && m_Active) { Syringe_Trigger.SetActive(true); } } else if (((FVRInteractiveObject)this).m_hand.Input.TouchpadPressed && ((Vector2)(ref ((FVRInteractiveObject)this).m_hand.Input.TouchpadAxes)).magnitude > 0.1f) { if (!(Vector2.Angle(((FVRInteractiveObject)this).m_hand.Input.TouchpadAxes, Vector2.up) <= 45f)) { return; } if (!m_buttonPressed) { Button.localPosition = new Vector3(Button.localPosition.x, Button_Positions.y, Button.localPosition.z); for (int j = 0; j < Openy_Bits.Length; j++) { Openy_Bits[j].localEulerAngles = new Vector3(Openy_Bits[j].localEulerAngles.x, Openy_Bits[j].localEulerAngles.y, Openy_Rots.y); } m_buttonPressed = true; } if (!Syringe_Trigger.activeSelf && m_Active) { Syringe_Trigger.SetActive(true); } } else if (m_buttonPressed) { Button.localPosition = new Vector3(Button.localPosition.x, Button_Positions.x, Button.localPosition.z); for (int k = 0; k < Openy_Bits.Length; k++) { Openy_Bits[k].localEulerAngles = new Vector3(Openy_Bits[k].localEulerAngles.x, Openy_Bits[k].localEulerAngles.y, Openy_Rots.x); } if (Syringe_Trigger.activeSelf) { Syringe_Trigger.SetActive(false); } m_buttonPressed = false; } } public override void EndInteraction(FVRViveHand hand) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: 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_0037: 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_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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).EndInteraction(hand); Button.localPosition = new Vector3(Button.localPosition.x, Button_Positions.x, Button.localPosition.z); for (int i = 0; i < Openy_Bits.Length; i++) { Openy_Bits[i].localEulerAngles = new Vector3(Openy_Bits[i].localEulerAngles.x, Openy_Bits[i].localEulerAngles.y, Openy_Rots.x); } if (Syringe_Trigger.activeSelf) { Syringe_Trigger.SetActive(false); } m_buttonPressed = false; } public void Power_UP() { //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0225: 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_002a: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_0102: 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_0110: Unknown result type (might be due to invalid IL or missing references) if (Is_Health_Powerup) { float playerHealth = GM.CurrentPlayerBody.GetPlayerHealth(); if (playerHealth < 0.5f) { GM.CurrentPlayerBody.ActivatePower(Powerup_Type, (PowerUpIntensity)0, Powerup_Duration, is_Puke, is_Inverted, -1f); m_RechargeAmt = 0f; Indicator.localScale = new Vector3(Indicator.localScale.x, 0f, Indicator.localScale.z); } else if (playerHealth < 0.75f) { GM.CurrentPlayerBody.ActivatePower(Powerup_Type, (PowerUpIntensity)1, Powerup_Duration, is_Puke, is_Inverted, -1f); m_RechargeAmt = Recharge_Delay * 0.5f; Indicator.localScale = new Vector3(Indicator.localScale.x, 0.5f, Indicator.localScale.z); } else { GM.CurrentPlayerBody.ActivatePower(Powerup_Type, (PowerUpIntensity)2, Powerup_Duration, is_Puke, is_Inverted, -1f); m_RechargeAmt = Recharge_Delay * 0.75f; Indicator.localScale = new Vector3(Indicator.localScale.x, 0.75f, Indicator.localScale.z); } } else { GM.CurrentPlayerBody.ActivatePower(Powerup_Type, Powerup_Intensity, Powerup_Duration, is_Puke, is_Inverted, Duration_Override); m_RechargeAmt = 0f; Indicator.localScale = new Vector3(Indicator.localScale.x, 0f, Indicator.localScale.z); } SM.PlayCoreSound((FVRPooledAudioType)10, Powerup_Sound, ((Component)this).transform.position); m_Active = false; Indicator_Renderer.material.SetColor("_EmissionColor", Color_Recharging); if (Syringe_Trigger.activeSelf) { Syringe_Trigger.SetActive(false); } } } public class Regulus_Syringe_Trigger : FVRInteractiveObject { public Regulus_Syringe Syringe; public override void Poke(FVRViveHand hand) { if ((Object)(object)hand != (Object)(object)((FVRInteractiveObject)Syringe).m_hand) { Syringe.Power_UP(); } } } }