Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of BensJunk v1.3.0
BensScripts.dll
Decompiled 12 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using REPOLib.Modules; using UnityEngine; using UnityEngine.Events; using UnityEngine.Serialization; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("Bengimi")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BensScripts")] [assembly: AssemblyTitle("BensScripts")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BensScripts { public class BensBoogyBox : Trap { [CompilerGenerated] private sealed class <TrackChangeRoutine>d__23 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public BensBoogyBox <>4__this; public AudioSource src; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <TrackChangeRoutine>d__23(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0083: 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_00a9: Expected O, but got Unknown int num = <>1__state; BensBoogyBox bensBoogyBox = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; bensBoogyBox._isChangingTrack = true; if ((Object)(object)src != (Object)null && src.isPlaying) { src.Stop(); } if (bensBoogyBox.soundBoomboxStop != null) { AudioClip[] sounds = bensBoogyBox.soundBoomboxStop.Sounds; if (sounds != null && sounds.Length != 0) { AudioClip val = bensBoogyBox.soundBoomboxStop.Sounds[0]; AudioSource.PlayClipAtPoint(val, ((Component)bensBoogyBox).transform.position, bensBoogyBox.soundBoomboxStop.Volume); <>2__current = (object)new WaitForSecondsRealtime(val.length); <>1__state = 1; return true; } } break; case 1: <>1__state = -1; break; } Sound boomboxMusicClips = bensBoogyBox.boomboxMusicClips; if (boomboxMusicClips != null && boomboxMusicClips.Sounds?.Length > 0 && (Object)(object)src != (Object)null) { bensBoogyBox.SelectAndPlayRandomClip(src); } UnityEvent onTrackChange = bensBoogyBox.OnTrackChange; if (onTrackChange != null) { onTrackChange.Invoke(); } bensBoogyBox._isChangingTrack = false; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [Header("Headbob Settings")] public float cammulti = 100f; public float camtime = 15f; public float camposweight = 10f; public float camstrength = 1f; public float holddist = 1f; [Header("Sounds")] public Sound soundBoomboxStart; public Sound soundBoomboxStop; public Sound boomboxMusicClips; [Space] public Transform speaker1; public Transform speaker2; [Space] public Light light1; public Light light2; [Header("Events")] public UnityEvent OnTrackChange; private AudioClip _selectedClip; private bool _musicSelected; private bool _isPlaying; private bool _wasGrabbed; private bool _isChangingTrack; private ValuableToggle _valToggle; public override void Start() { ((Trap)this).Start(); _valToggle = ((Component)this).GetComponent<ValuableToggle>(); ((Behaviour)light1).enabled = false; ((Behaviour)light2).enabled = false; } public override void Update() { ((Trap)this).Update(); if ((Object)(object)_valToggle != (Object)null && _valToggle.toggleImpulse) { NextTrack(); } bool grabbed = base.physGrabObject.grabbed; AudioSource src = boomboxMusicClips?.Source; if (grabbed && !_musicSelected) { Sound obj = boomboxMusicClips; if (obj != null && obj.Sounds?.Length > 0) { SelectAndPlayRandomClip(src); } } if (_wasGrabbed && !grabbed && _isPlaying) { StopPlayback(src); } UpdateVisuals(grabbed); if (grabbed) { ApplyCameraBobbing(); } _wasGrabbed = grabbed; } private void SelectAndPlayRandomClip(AudioSource src) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (soundBoomboxStart != null) { AudioClip[] sounds = soundBoomboxStart.Sounds; if (sounds != null && sounds.Length != 0) { AudioSource.PlayClipAtPoint(soundBoomboxStart.Sounds[0], ((Component)this).transform.position, soundBoomboxStart.Volume); } } int num = Random.Range(0, boomboxMusicClips.Sounds.Length); _selectedClip = boomboxMusicClips.Sounds[num]; if ((Object)(object)src != (Object)null) { src.Stop(); src.clip = _selectedClip; src.loop = true; src.volume = boomboxMusicClips.Volume; src.pitch = boomboxMusicClips.Pitch; src.Play(); } _musicSelected = true; _isPlaying = true; } private void StopPlayback(AudioSource src) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (soundBoomboxStop != null) { AudioClip[] sounds = soundBoomboxStop.Sounds; if (sounds != null && sounds.Length != 0) { AudioSource.PlayClipAtPoint(soundBoomboxStop.Sounds[0], ((Component)this).transform.position, soundBoomboxStop.Volume); } } if ((Object)(object)src != (Object)null) { src.Stop(); } _isPlaying = false; _musicSelected = false; _selectedClip = null; } [IteratorStateMachine(typeof(<TrackChangeRoutine>d__23))] private IEnumerator TrackChangeRoutine(AudioSource src) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <TrackChangeRoutine>d__23(0) { <>4__this = this, src = src }; } public void NextTrack() { if (base.physGrabObject.grabbed && !_isChangingTrack) { ((MonoBehaviour)this).StartCoroutine(TrackChangeRoutine(boomboxMusicClips.Source)); } } private void UpdateVisuals(bool isGrabbed) { //IL_0030: 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_0046: 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_006b: 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_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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_0101: 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_0103: 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) if (isGrabbed) { base.enemyInvestigate = true; float num = 1f + Mathf.Sin(Time.time * 80f) * 0.005f; speaker1.localScale = Vector3.one * num; speaker2.localScale = Vector3.one * num; Color val = Color.Lerp(((Component)speaker1).GetComponent<Renderer>().material.GetColor("_EmissionColor"), Color.HSVToRGB(Mathf.PingPong(Time.time * 0.5f, 1f), 1f, 1f), Time.deltaTime * 6000f); ((Component)speaker1).GetComponent<Renderer>().material.SetColor("_EmissionColor", val); ((Component)speaker2).GetComponent<Renderer>().material.SetColor("_EmissionColor", val); Light obj = light1; bool enabled = (((Behaviour)light2).enabled = true); ((Behaviour)obj).enabled = enabled; Light obj2 = light1; Color color = (light2.color = val); obj2.color = color; light1.intensity = Mathf.Lerp(light1.intensity, 4f, Time.deltaTime); light2.intensity = Mathf.Lerp(light2.intensity, 4f, Time.deltaTime); } else if (((Behaviour)light1).enabled) { FadeOutLightsAndSpeakers(); } } private void FadeOutLightsAndSpeakers() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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_003f: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0096: 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_011b: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) Color val = Color.Lerp(((Component)speaker1).GetComponent<Renderer>().material.GetColor("_EmissionColor"), Color.black, Time.deltaTime); ((Component)speaker1).GetComponent<Renderer>().material.SetColor("_EmissionColor", val); ((Component)speaker2).GetComponent<Renderer>().material.SetColor("_EmissionColor", val); speaker1.localScale = Vector3.Lerp(speaker1.localScale, Vector3.one, Time.deltaTime); speaker2.localScale = Vector3.Lerp(speaker2.localScale, Vector3.one, Time.deltaTime); light1.intensity = Mathf.Lerp(light1.intensity, 0f, Time.deltaTime); light2.intensity = Mathf.Lerp(light2.intensity, 0f, Time.deltaTime); if (light1.intensity < 0.01f) { ((Component)speaker1).GetComponent<Renderer>().material.SetColor("_EmissionColor", Color.black); ((Component)speaker2).GetComponent<Renderer>().material.SetColor("_EmissionColor", Color.black); Light obj = light1; bool enabled = (((Behaviour)light2).enabled = false); ((Behaviour)obj).enabled = enabled; } } private void ApplyCameraBobbing() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_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_0053: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Sin(Time.time * camtime) * 0.5f; float num2 = num * cammulti; CameraAim instance = CameraAim.Instance; if ((Object)(object)instance != (Object)null) { Quaternion val = Quaternion.Euler(num2, 0f, 0f); ((Component)instance).transform.localRotation = ((Component)instance).transform.localRotation * val; } foreach (PhysGrabber item in base.physGrabObject.playerGrabbing) { if (item.isLocal) { item.OverrideGrabDistance(holddist); item.OverrideDisableRotationControls(); } } } } public class BensExplosiveValuableTrap : Trap { [Header("Explosion Settings")] [Tooltip("Size multiplier for the explosion prefab")] public float explosionSize = 1f; [Tooltip("Damage dealt to players/objects")] public int explosionDamage = 50; [Tooltip("Damage dealt to enemies")] public int explosionDamageEnemy = 100; [Tooltip("How many hits before this trap explodes")] public int maxHitCount = 3; [Header("References")] [Tooltip("Where the explosion should originate")] public Transform center; private ParticleScriptExplosion particleScriptExplosion; private int hitCount; public override void Start() { ((Trap)this).Start(); particleScriptExplosion = ((Component)this).GetComponent<ParticleScriptExplosion>(); if ((Object)(object)center == (Object)null) { Debug.LogWarning((object)(((Object)this).name + ": Center transform is not set!"), (Object)(object)this); } } public void Explode() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)particleScriptExplosion == (Object)null) { Debug.LogError((object)(((Object)this).name + ": No ParticleScriptExplosion component found!"), (Object)(object)this); } else { particleScriptExplosion.Spawn(center.position, explosionSize, explosionDamage, explosionDamageEnemy, 1f, false, false, 1f); } } public void PotentialExplode() { if (base.isLocal) { hitCount++; if (hitCount >= maxHitCount) { Explode(); hitCount = 0; } } } } [BepInPlugin("Bengimi.BensScripts", "BensScripts", "1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class BensScripts : BaseUnityPlugin { internal static BensScripts Instance { get; private set; } internal static ManualLogSource Logger => Instance.Alogger; private ManualLogSource Alogger => ((BaseUnityPlugin)this).Logger; internal Harmony Harmony { get; set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0025: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { } } [DisallowMultipleComponent] public class BensWordsWordsWords : MonoBehaviour { [Header("Affection Sayings")] [Tooltip("List of strings. One will be spoken at random when the potion is active.")] public List<string> sayings = new List<string>(); [Header("Cooldown Settings")] [Tooltip("Minimum time (in seconds) between spoken phrases.")] public float minCooldown = 5f; [Tooltip("Maximum time (in seconds) between spoken phrases.")] public float maxCooldown = 10f; private PhysGrabObject physGrabObject; private float cooldownTimer; private void Start() { physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); ResetCooldown(); } private void Update() { if ((Object)(object)physGrabObject != (Object)null && physGrabObject.grabbed) { cooldownTimer -= Time.deltaTime; if (cooldownTimer <= 0f) { SpeakRandom(); ResetCooldown(); } } else { ResetCooldown(); } } private void SpeakRandom() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) if (sayings != null && sayings.Count != 0) { string text = sayings[Random.Range(0, sayings.Count)]; ChatManager.instance.PossessChatScheduleStart(5); ChatManager.instance.PossessChat((PossessChatID)1, text, 1f, new Color(1f, 0.3f, 0.6f, 1f), 0f, false, 0, (UnityEvent)null); ChatManager.instance.PossessChatScheduleEnd(); } } private void ResetCooldown() { cooldownTimer = Random.Range(minCooldown, maxCooldown); } } public class GunValuable : MonoBehaviour { private PhysGrabObject physGrabObject; private ValuableToggle valuableToggle; public int numberOfBullets = 1; [Range(0f, 65f)] public float gunRandomSpread; public float gunRange = 50f; public float distanceKeep = 0.8f; public float gunRecoilForce = 1f; public float cameraShakeMultiplier = 1f; public float torqueMultiplier = 1f; public float grabStrengthMultiplier = 1f; public float shootCooldown = 1f; [Range(0f, 100f)] public float misfirePercentageChange = 50f; public AnimationCurve shootLineWidthCurve; public float grabVerticalOffset = -0.2f; public float aimVerticalOffset = -5f; public float investigateRadius = 20f; public Transform gunMuzzle; public GameObject bulletPrefab; public GameObject muzzleFlashPrefab; public Transform gunTrigger; public Sound soundShoot; public Sound soundShootGlobal; public Sound soundNoAmmoClick; public Sound soundHit; private float shootCooldownTimer; private PhotonView photonView; private PhysGrabObjectImpactDetector impactDetector; private bool prevToggleState; private AnimationCurve triggerAnimationCurve; private float triggerAnimationEval; private bool triggerAnimationActive; internal HurtCollider hurtCollider; private void Start() { physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); valuableToggle = ((Component)this).GetComponent<ValuableToggle>(); photonView = ((Component)this).GetComponent<PhotonView>(); impactDetector = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>(); triggerAnimationCurve = AssetManager.instance.animationCurveClickInOut; } private void Update() { //IL_0076: 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) if (physGrabObject.grabbed && physGrabObject.grabbedLocal) { PhysGrabber.instance.OverrideGrabDistance(distanceKeep); } if (triggerAnimationActive) { float num = 45f; triggerAnimationEval += Time.deltaTime * 4f; gunTrigger.localRotation = Quaternion.Euler(num * triggerAnimationCurve.Evaluate(triggerAnimationEval), 0f, 0f); if (triggerAnimationEval >= 1f) { gunTrigger.localRotation = Quaternion.Euler(0f, 0f, 0f); triggerAnimationActive = false; triggerAnimationEval = 1f; } } UpdateMaster(); } private void UpdateMaster() { //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_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_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_00b8: 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_00ba: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (physGrabObject.grabbed) { Quaternion val = Quaternion.Euler(aimVerticalOffset, 0f, 0f); Quaternion identity = Quaternion.identity; Quaternion identity2 = Quaternion.identity; bool flag = false; bool flag2 = false; bool flag3 = false; bool flag4 = true; foreach (PhysGrabber item in physGrabObject.playerGrabbing) { if (flag4) { if (item.playerAvatar.isCrouching) { flag2 = true; } if (item.playerAvatar.isCrawling) { flag3 = true; } flag4 = false; } if (item.isRotating) { flag = true; } } if (!flag) { physGrabObject.TurnXYZ(val, identity, identity2); } float num = grabVerticalOffset; if (flag2) { num += 0.5f; } if (flag3) { num -= 0.5f; } physGrabObject.OverrideGrabVerticalPosition(num); if (!flag) { physGrabObject.OverrideGrabStrength((grabStrengthMultiplier != 1f) ? grabStrengthMultiplier : 1f, 0.1f); physGrabObject.OverrideTorqueStrength((torqueMultiplier != 1f) ? torqueMultiplier : 1f, 0.1f); } else { physGrabObject.OverrideAngularDrag(40f, 0.1f); physGrabObject.OverrideTorqueStrength(6f, 0.1f); } } if (valuableToggle.toggleState != prevToggleState) { if (shootCooldownTimer <= 0f) { Shoot(); shootCooldownTimer = shootCooldown; } prevToggleState = valuableToggle.toggleState; } if (shootCooldownTimer > 0f) { shootCooldownTimer -= Time.deltaTime; } } public void Misfire() { if (!physGrabObject.grabbed && !physGrabObject.hasNeverBeenGrabbed && SemiFunc.IsMasterClientOrSingleplayer() && shootCooldownTimer <= 0f && Random.Range(0f, 100f) < misfirePercentageChange) { Shoot(); shootCooldownTimer = shootCooldown; } } public void Shoot() { bool flag = false; if (Random.Range(0, 10000) == 0) { flag = false; } if (!flag) { if (SemiFunc.IsMultiplayer()) { photonView.RPC("ShootRPC", (RpcTarget)0, Array.Empty<object>()); } else { ShootRPC(); } } } private void MuzzleFlash() { //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) Object.Instantiate<GameObject>(muzzleFlashPrefab, gunMuzzle.position, gunMuzzle.rotation, gunMuzzle).GetComponent<ItemGunMuzzleFlash>().ActivateAllEffects(); } private void StartTriggerAnimation() { triggerAnimationActive = true; triggerAnimationEval = 0f; } [PunRPC] public void ShootRPC() { //IL_0020: 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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_011a: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01af: 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_0212: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0209: 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) //IL_021a: Unknown result type (might be due to invalid IL or missing references) float num = 3f * cameraShakeMultiplier; float num2 = 16f * cameraShakeMultiplier; SemiFunc.CameraShakeImpactDistance(gunMuzzle.position, 5f * cameraShakeMultiplier, 0.1f, num, num2); SemiFunc.CameraShakeDistance(gunMuzzle.position, 0.1f * cameraShakeMultiplier, 0.1f * cameraShakeMultiplier, num, num2); soundShoot.Play(gunMuzzle.position, 1f, 1f, 1f, 1f); soundShootGlobal.Play(gunMuzzle.position, 1f, 1f, 1f, 1f); MuzzleFlash(); StartTriggerAnimation(); if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (investigateRadius > 0f) { EnemyDirector.instance.SetInvestigate(((Component)this).transform.position, investigateRadius); } physGrabObject.rb.AddForceAtPosition(-gunMuzzle.forward * gunRecoilForce, gunMuzzle.position, (ForceMode)1); RaycastHit val3 = default(RaycastHit); for (int i = 0; i < numberOfBullets; i++) { Vector3 val = gunMuzzle.forward; if (gunRandomSpread > 0f) { float num3 = Random.Range(0f, gunRandomSpread / 2f); float num4 = Random.Range(0f, 360f); Vector3 val2 = Vector3.Cross(val, Random.onUnitSphere); Vector3 normalized = ((Vector3)(ref val2)).normalized; val2 = Quaternion.AngleAxis(num4, val) * Quaternion.AngleAxis(num3, normalized) * val; val = ((Vector3)(ref val2)).normalized; } bool flag = Physics.Raycast(gunMuzzle.position, val, ref val3, gunRange, LayerMask.op_Implicit(SemiFunc.LayerMaskGetVisionObstruct()) + LayerMask.GetMask(new string[1] { "Enemy" })); Vector3 endPos = (flag ? ((RaycastHit)(ref val3)).point : (gunMuzzle.position + val * gunRange)); ShootBullet(endPos, flag); } } private void ShootBullet(Vector3 endPos, bool hit) { //IL_003a: 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) if (SemiFunc.IsMasterClientOrSingleplayer()) { if (SemiFunc.IsMultiplayer()) { photonView.RPC("ShootBulletRPC", (RpcTarget)0, new object[2] { endPos, hit }); } else { ShootBulletRPC(endPos, hit); } } } [PunRPC] public void ShootBulletRPC(Vector3 endPos, bool hit) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) if (physGrabObject.playerGrabbing.Count > 1) { foreach (PhysGrabber item in physGrabObject.playerGrabbing) { item.OverrideGrabRelease(); } } ItemGunBullet component = Object.Instantiate<GameObject>(bulletPrefab, gunMuzzle.position, gunMuzzle.rotation).GetComponent<ItemGunBullet>(); component.hitPosition = endPos; component.bulletHit = hit; component.shootLineWidthCurve = shootLineWidthCurve; hurtCollider = ((Component)component).GetComponentInChildren<HurtCollider>(); component.ActivateAll(); soundHit.Play(endPos, 1f, 1f, 1f, 1f); } } public class RiotShield : MonoBehaviour { private const bool hurting = true; private PhysGrabObject physGrabObject; private ValuableToggle valuableToggle; public float distanceKeep = 0.8f; public float riotRecoilForce = 1f; public Transform riotSheild; public float cameraShakeMultiplier = 1f; public float torqueMultiplier = 1f; public float grabStrengthMultiplier = 1f; public float hitCooldown = 1f; public float grabVerticalOffset = -0.2f; public float aimVerticalOffset = -10f; public float investigateRadius = 20f; public Sound soundHit; public HurtCollider hurtCollider; private float hitCooldownTimer; private PhotonView photonView; private PhysGrabObjectImpactDetector impactDetector; private bool prevToggleState; private void Start() { physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); valuableToggle = ((Component)this).GetComponent<ValuableToggle>(); photonView = ((Component)this).GetComponent<PhotonView>(); impactDetector = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>(); } private void Update() { if (physGrabObject.grabbed && physGrabObject.grabbedLocal) { PhysGrabber.instance.OverrideGrabDistance(distanceKeep); } UpdateMaster(); } private void UpdateMaster() { //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_003d: 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) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_00c2: 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) if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (physGrabObject.grabbed) { Quaternion val = Quaternion.Euler(aimVerticalOffset, 0f, 0f); Quaternion val2 = Quaternion.Euler(0f, 0f, 0f); Quaternion identity = Quaternion.identity; bool flag = false; bool flag2 = false; bool flag3 = true; foreach (PhysGrabber item in physGrabObject.playerGrabbing) { if (flag3) { if (item.playerAvatar.isCrouching || item.playerAvatar.isCrawling) { flag2 = true; } flag3 = false; } if (item.isRotating) { flag = true; } } if (!flag) { physGrabObject.TurnXYZ(val, val2, identity); } float num = grabVerticalOffset; if (flag2) { num += 0.5f; } physGrabObject.OverrideGrabVerticalPosition(num); if (!flag) { if (grabStrengthMultiplier != 1f) { physGrabObject.OverrideGrabStrength(grabStrengthMultiplier, 0.1f); } if (torqueMultiplier != 1f) { physGrabObject.OverrideTorqueStrength(torqueMultiplier, 0.1f); } } if (flag) { physGrabObject.OverrideAngularDrag(40f, 0.1f); physGrabObject.OverrideTorqueStrength(6f, 0.1f); } } if (valuableToggle.toggleState != prevToggleState) { if (hitCooldownTimer <= 0f) { ((Component)hurtCollider).gameObject.SetActive(true); Shoot(); } prevToggleState = valuableToggle.toggleState; } if (hitCooldownTimer > 0f) { hitCooldownTimer -= Time.deltaTime; if (((Component)hurtCollider).gameObject.activeSelf) { ((Component)hurtCollider).gameObject.SetActive(false); } } } public void Shoot() { bool flag = false; if (Random.Range(0, 10000) == 0) { flag = false; } if (!flag) { if (SemiFunc.IsMultiplayer()) { photonView.RPC("HitRPC", (RpcTarget)0, Array.Empty<object>()); } else { HitRPC(); } } } [PunRPC] public void HitRPC() { //IL_0020: 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_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_00b9: 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_0087: Unknown result type (might be due to invalid IL or missing references) float num = 3f * cameraShakeMultiplier; float num2 = 16f * cameraShakeMultiplier; SemiFunc.CameraShakeImpactDistance(riotSheild.position, 5f * cameraShakeMultiplier, 0.1f, num, num2); SemiFunc.CameraShakeDistance(riotSheild.position, 0.1f * cameraShakeMultiplier, 0.1f * cameraShakeMultiplier, num, num2); if (SemiFunc.IsMasterClientOrSingleplayer()) { if (investigateRadius > 0f) { EnemyDirector.instance.SetInvestigate(((Component)this).transform.position, investigateRadius); } physGrabObject.rb.AddForceAtPosition(-riotSheild.forward * (0f - riotRecoilForce), riotSheild.position, (ForceMode)1); hitCooldownTimer = hitCooldown; } } } public class Sleepyfox : MonoBehaviour { public enum States { Idle, Active } private PhysGrabObject physGrabObject; private PhotonView photonView; internal States currentState; private bool stateStart; public Transform particleSystemTransform; public ParticleSystem particleSystemSwirl; public ParticleSystem particleSystemGlitter; public MeshRenderer timeGlassMaterial; [FormerlySerializedAs("light")] public Light timeGlassLight; public Sound soundTimeGlassLoop; [Header("pitch of voice")] public float overridePitch = 1.45f; [Header("player speed")] public float overrideSpeed = 0.5f; [Header("player look speed")] public float overrideLookSpeed = 0.5f; [Header("player animation speed")] public float overrideAnimationSpeed = 0.2f; [Header("player timescale?")] public float overrideTimeScale = 0.1f; private float soundPitchLerp; private int particleFocus; private void StateActive() { //IL_0151: 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) if (stateStart) { particleSystemGlitter.Play(); particleSystemSwirl.Play(); stateStart = false; ((Component)timeGlassLight).gameObject.SetActive(true); } if (!((Component)timeGlassLight).gameObject.activeSelf) { ((Component)timeGlassLight).gameObject.SetActive(true); } if (((Component)particleSystemTransform).gameObject.activeSelf) { List<PhysGrabber> playerGrabbing = physGrabObject.playerGrabbing; if (playerGrabbing.Count > particleFocus) { PhysGrabber val = playerGrabbing[particleFocus]; if (Object.op_Implicit((Object)(object)val)) { Transform headLookAtTransform = val.playerAvatar.playerAvatarVisuals.headLookAtTransform; if (Object.op_Implicit((Object)(object)headLookAtTransform)) { particleSystemTransform.LookAt(headLookAtTransform); } particleFocus++; } else { particleFocus = 0; } } else { particleFocus = 0; } } soundPitchLerp = Mathf.Lerp(soundPitchLerp, 1f, Time.deltaTime * 2f); timeGlassLight.intensity = Mathf.Lerp(timeGlassLight.intensity, 4f, Time.deltaTime * 2f); Color val2 = default(Color); ((Color)(ref val2))..ctor(0.5f, 0f, 1f); ((Renderer)timeGlassMaterial).material.SetColor("_EmissionColor", val2 * timeGlassLight.intensity); foreach (PhysGrabber item in physGrabObject.playerGrabbing) { if (Object.op_Implicit((Object)(object)item) && !item.isLocal) { item.playerAvatar.voiceChat.OverridePitch(overridePitch, 1f, 2f, 0.1f, true); } } if (SemiFunc.IsMasterClientOrSingleplayer()) { physGrabObject.OverrideDrag(20f, 0.1f); physGrabObject.OverrideAngularDrag(40f, 0.1f); if (!physGrabObject.grabbed) { SetState(States.Idle); } } if (physGrabObject.grabbedLocal) { PlayerAvatar instance = PlayerAvatar.instance; if (Object.op_Implicit((Object)(object)instance.voiceChat)) { instance.voiceChat.OverridePitch(overridePitch, 1f, 2f, 0.1f, true); } instance.OverridePupilSize(3f, 4, 1f, 1f, 5f, 0.5f, 0.1f); PlayerController.instance.OverrideSpeed(overrideSpeed, 0.1f); PlayerController.instance.OverrideLookSpeed(overrideLookSpeed, 2f, 1f, 0.1f); PlayerController.instance.OverrideAnimationSpeed(overrideAnimationSpeed, 1f, 2f, 0.1f); PlayerController.instance.OverrideTimeScale(overrideTimeScale, 0.1f); physGrabObject.OverrideTorqueStrength(0.6f, 0.1f); CameraZoom.Instance.OverrideZoomSet(50f, 0.1f, 0.5f, 1f, ((Component)this).gameObject, 0); PostProcessing.Instance.SaturationOverride(50f, 0.1f, 0.5f, 0.1f, ((Component)this).gameObject); } } private void StateIdle() { //IL_00b2: 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) if (stateStart) { particleSystemGlitter.Stop(); particleSystemSwirl.Stop(); stateStart = false; } if (SemiFunc.IsMasterClientOrSingleplayer() && physGrabObject.grabbed) { SetState(States.Active); } timeGlassLight.intensity = Mathf.Lerp(timeGlassLight.intensity, 0f, Time.deltaTime * 10f); soundPitchLerp = Mathf.Lerp(soundPitchLerp, 0f, Time.deltaTime * 10f); Color val = default(Color); ((Color)(ref val))..ctor(0.5f, 0f, 1f); ((Renderer)timeGlassMaterial).material.SetColor("_EmissionColor", val * timeGlassLight.intensity); if (timeGlassLight.intensity < 0.01f) { ((Component)timeGlassLight).gameObject.SetActive(false); } } [PunRPC] public void SetStateRPC(States state) { currentState = state; stateStart = true; } private void SetState(States state) { if (SemiFunc.IsMasterClientOrSingleplayer()) { if (!SemiFunc.IsMultiplayer()) { SetStateRPC(state); return; } photonView.RPC("SetStateRPC", (RpcTarget)0, new object[1] { state }); } } private void Start() { physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); photonView = ((Component)this).GetComponent<PhotonView>(); } private void Update() { float num = Mathf.Lerp(2f, 0.5f, soundPitchLerp); soundTimeGlassLoop.PlayLoop(currentState == States.Active, 0.8f, 0.8f, num); switch (currentState) { case States.Active: StateActive(); break; case States.Idle: StateIdle(); break; } } } [DisallowMultipleComponent] public class SlotMachine : MonoBehaviourPun { [Header("Grab Area Component")] public PhysGrabObjectGrabArea grabAreaComponent; [Header("Animator & Parameters")] public Animator animator; public string spinTriggerName = "Spin"; public string outcomeParamName = "Outcome"; [Header("Outcome Settings")] [Tooltip("Number of distinct outcomes (0 ... outcomeCount-1)")] public int outcomeCount = 3; [Header("Events")] public UnityEvent onSpinStart; public UnityEvent onSpinComplete; private bool isSpinning; private void Start() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown GrabArea val = grabAreaComponent.grabAreas[0]; val.grabAreaEventOnStart.AddListener(new UnityAction(OnGrabStart)); val.grabAreaEventOnRelease.AddListener(new UnityAction(OnGrabRelease)); } private void OnGrabStart() { if (!isSpinning) { isSpinning = true; UnityEvent obj = onSpinStart; if (obj != null) { obj.Invoke(); } int num = Random.Range(0, outcomeCount); ((MonoBehaviourPun)this).photonView.RPC("RPC_DoSpin", (RpcTarget)3, new object[1] { num }); } } [PunRPC] private void RPC_DoSpin(int result) { animator.SetInteger(outcomeParamName, result); animator.SetTrigger(spinTriggerName); } public void OnAnimationComplete() { isSpinning = false; UnityEvent obj = onSpinComplete; if (obj != null) { obj.Invoke(); } } private void OnGrabRelease() { } } [DisallowMultipleComponent] public class MaterialRandomizer : MonoBehaviourPun { [Header("Renderers to affect (leave empty ⇒ auto-find all)")] public Renderer[] targetRenderers; [Header("Materials to choose from")] public Material[] possibleMaterials; [Header("Impact detector (for particle gradient)")] public PhysGrabObjectImpactDetector impactDetector; [Tooltip("Replace only this material index (0 = first). Use –1 ⇒ replace *all* slots.")] public int materialSlot = -1; [Header("Sampling Options")] [Tooltip("If true, ignore texture sampling and always use a random tint color.")] public bool overrideAlbedo; private ValuableObject valuableObject; private PhotonView pv; private int _chosenIndex = -1; private void Awake() { pv = ((Component)this).GetComponent<PhotonView>(); valuableObject = ((Component)this).GetComponent<ValuableObject>(); if (pv.IsMine) { int num = Random.Range(0, possibleMaterials.Length); pv.RPC("RPC_SetMaterialIndex", (RpcTarget)3, new object[1] { num }); Debug.Log((object)$"[MaterialRandomizer] (Local) picked index {num}"); } } [PunRPC] private void RPC_SetMaterialIndex(int idx) { _chosenIndex = Mathf.Clamp(idx, 0, possibleMaterials.Length - 1); Debug.Log((object)$"[MaterialRandomizer] RPC received index {_chosenIndex}"); ApplyMaterialAndGradient(_chosenIndex); } private void ApplyMaterialAndGradient(int idx) { //IL_0059: 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_005e: 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_0077: Expected O, but got Unknown //IL_0094: 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_0121: 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_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) if (possibleMaterials == null || possibleMaterials.Length == 0) { return; } Material val = possibleMaterials[idx]; Renderer[] array = ((targetRenderers != null && targetRenderers.Length != 0) ? targetRenderers : ((Component)this).GetComponentsInChildren<Renderer>()); Color val2 = (Color)(overrideAlbedo ? new Color(Random.value, Random.value, Random.value) : Color.white); Renderer[] array2 = array; foreach (Renderer val3 in array2) { Material val4 = new Material(val); if (overrideAlbedo) { if (val4.HasProperty("_BaseColor")) { val4.SetColor("_BaseColor", val2); } else if (val4.HasProperty("_Color")) { val4.SetColor("_Color", val2); } } if (materialSlot >= 0 && materialSlot < val3.materials.Length) { Material[] materials = val3.materials; materials[materialSlot] = val4; val3.materials = materials; } else { val3.material = val4; } } if ((Object)(object)valuableObject != (Object)null) { Color baseColor = (overrideAlbedo ? val2 : SampleAlbedo(val)); Gradient val5 = BuildGradient(baseColor); valuableObject.particleColors = val5; Debug.Log((object)("[MaterialRandomizer] Applied gradient to particles on " + ((Object)valuableObject).name)); ParticleSystem component = ((Component)valuableObject).GetComponent<ParticleSystem>(); if ((Object)(object)component != (Object)null) { ColorOverLifetimeModule colorOverLifetime = component.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled = true; ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = new MinMaxGradient(val5); } } else { Debug.LogWarning((object)"[MaterialRandomizer] ValuableObject component not found!"); } } private Color SampleAlbedo(Material mat) { //IL_0017: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (overrideAlbedo) { return new Color(Random.value, Random.value, Random.value); } Texture mainTexture = mat.mainTexture; Texture2D val = (Texture2D)(object)((mainTexture is Texture2D) ? mainTexture : null); if (val != null && ((Texture)val).isReadable) { int num = ((Texture)val).width / 2; int num2 = ((Texture)val).height / 2; return val.GetPixel(num, num2); } if (mat.HasProperty("_Color")) { return mat.GetColor("_Color"); } return Color.white; } private Gradient BuildGradient(Color baseColor) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: 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_002b: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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) //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) Gradient val = new Gradient(); val.colorKeys = (GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(baseColor * 0.8f, 0f), new GradientColorKey(baseColor * 1.2f, 1f) }; val.alphaKeys = (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(0.5f, 1f) }; return val; } } public class ValuableMelee : MonoBehaviour, IPunObservable { public float hitFreeze = 0.2f; public float hitFreezeDelay; public float swingDetectSpeedMultiplier = 1f; public bool turnWeapon = true; public float torqueStrength = 1f; public float turnWeaponStrength = 40f; public Quaternion customRotation = Quaternion.identity; public UnityEvent onHit; private Transform hurtCollider; private Transform hurtColliderRotation; private PhysGrabObjectImpactDetector physGrabObjectImpactDetector; private PhysGrabObject physGrabObject; private Rigidbody rb; private float swingTimer = 0.1f; private float hitBoxTimer = 0.1f; private TrailRenderer trailRenderer; public Sound soundSwingLoop; public Sound soundSwing; public Sound soundHit; private Vector3 prevPosition; private float prevPosDistance; private float prevPosUpdateTimer; private Transform swingPoint; private Quaternion swingDirection; private PlayerAvatar playerAvatar; private float hitSoundDelayTimer; private ParticleSystem particleSystem; private ParticleSystem particleSystemGroundHit; private PhotonView photonView; private float swingPitch = 1f; private float swingPitchTarget; private float swingPitchTargetProgress; private float distanceCheckTimer; private Vector3 swingStartDirection = Vector3.zero; private Transform forceGrabPoint; private Quaternion targetYRotation; private Quaternion currentYRotation; private Transform meshHealthy; private Transform meshBroken; private bool isSwinging; private bool newSwing; private float hitTimer; private float hitCooldown; private float groundHitCooldown; private float groundHitSoundTimer; private float spawnTimer = 3f; private float grabbedTimer; private void Start() { rb = ((Component)this).GetComponent<Rigidbody>(); HurtCollider componentInChildren = ((Component)this).GetComponentInChildren<HurtCollider>(); hurtCollider = ((componentInChildren != null) ? ((Component)componentInChildren).transform : null); hurtColliderRotation = ((Component)this).transform.Find("Hurt Collider Rotation") ?? ((Component)this).transform.Find("Object/Hurt Collider Rotation"); physGrabObjectImpactDetector = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>(); if (Object.op_Implicit((Object)(object)hurtCollider)) { ((Component)hurtCollider).gameObject.SetActive(false); } trailRenderer = ((Component)this).GetComponentInChildren<TrailRenderer>(); swingPoint = ((Component)this).transform.Find("Swing Point") ?? ((Component)this).transform.Find("Object/Swing Point"); physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); Transform obj = ((Component)this).transform.Find("Particles"); object obj2 = ((obj != null) ? ((Component)obj).GetComponent<ParticleSystem>() : null); if (obj2 == null) { Transform obj3 = ((Component)this).transform.Find("Object/Particles"); obj2 = ((obj3 != null) ? ((Component)obj3).GetComponent<ParticleSystem>() : null); } particleSystem = (ParticleSystem)obj2; Transform obj4 = ((Component)this).transform.Find("Particles Ground Hit"); object obj5 = ((obj4 != null) ? ((Component)obj4).GetComponent<ParticleSystem>() : null); if (obj5 == null) { Transform obj6 = ((Component)this).transform.Find("Object/Particles Ground Hit"); obj5 = ((obj6 != null) ? ((Component)obj6).GetComponent<ParticleSystem>() : null); } particleSystemGroundHit = (ParticleSystem)obj5; photonView = ((Component)this).GetComponent<PhotonView>(); forceGrabPoint = ((Component)this).transform.Find("Force Grab Point") ?? ((Component)this).transform.Find("Object/Force Grab Point"); if ((Object)(object)physGrabObject != (Object)null && (Object)(object)forceGrabPoint != (Object)null) { physGrabObject.isMelee = true; physGrabObject.forceGrabPoint = forceGrabPoint; } if (SemiFunc.RunIsArena()) { HurtCollider component = ((Component)hurtCollider).GetComponent<HurtCollider>(); component.playerDamage = component.enemyDamage; } } private void FixedUpdate() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_0069: 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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: 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_0136: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: 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_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) bool flag = false; foreach (PhysGrabber item in physGrabObject.playerGrabbing) { if (item.isRotating) { flag = true; } } if (!flag) { Quaternion val = currentYRotation; Quaternion val2 = Quaternion.Euler(45f, 0f, 0f); physGrabObject.TurnXYZ(val2, val, Quaternion.identity); } if (prevPosUpdateTimer > 0.1f) { prevPosition = swingPoint.position; prevPosUpdateTimer = 0f; } else { prevPosUpdateTimer += Time.fixedDeltaTime; } if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (!flag) { if (torqueStrength != 1f) { physGrabObject.OverrideTorqueStrength(torqueStrength, 0.1f); } if (physGrabObject.grabbed) { physGrabObject.OverrideMaterial(SemiFunc.PhysicMaterialSlippery(), 0.1f); } } if (flag) { physGrabObject.OverrideTorqueStrength(4f, 0.1f); } if (distanceCheckTimer > 0.1f) { prevPosDistance = Vector3.Distance(prevPosition, swingPoint.position) * 10f * rb.mass; distanceCheckTimer = 0f; } distanceCheckTimer += Time.fixedDeltaTime; TurnWeapon(); Vector3 val3 = prevPosition - swingPoint.position; float num = 1f; if (!physGrabObject.grabbed) { num = 0.5f; } if (((Vector3)(ref val3)).magnitude > num * swingDetectSpeedMultiplier && swingPoint.position - prevPosition != Vector3.zero) { swingTimer = 0.2f; if (!isSwinging) { newSwing = true; } swingDirection = Quaternion.LookRotation(swingPoint.position - prevPosition); } } private void TurnWeapon() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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) //IL_003d: 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_0044: 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_010f: 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_0131: 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) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: 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_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015c: 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_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017a: 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_01af: 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_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (customRotation != Quaternion.identity && !turnWeapon) { Quaternion val = Quaternion.Euler(45f, 0f, 0f); physGrabObject.TurnXYZ(val, customRotation, Quaternion.identity); } if (turnWeaponStrength != 1f) { physGrabObject.OverrideTorqueStrengthY(turnWeaponStrength, 0.1f); } if (!turnWeapon) { return; } physGrabObject.OverrideAngularDrag(0f, 0.1f); physGrabObject.OverrideDrag(0f, 0.1f); if (physGrabObject.grabbed && !Object.op_Implicit((Object)(object)playerAvatar)) { playerAvatar = ((Component)physGrabObject.playerGrabbing[0]).GetComponent<PlayerAvatar>(); } if (!physGrabObject.grabbed && Object.op_Implicit((Object)(object)playerAvatar)) { playerAvatar = null; } if (!physGrabObject.grabbed) { return; } _ = Vector3.forward; _ = Vector3.up; _ = ((Component)playerAvatar).transform; Vector3 val2 = rb.velocity / Time.fixedDeltaTime; if (((Vector3)(ref val2)).magnitude > 200f) { Vector3 val3 = ((Component)playerAvatar).transform.InverseTransformDirection(val2); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(val3.x, 0f, val3.z); Quaternion val5 = Quaternion.identity; if (val4 != Vector3.zero) { val5 = Quaternion.LookRotation(val4); } Quaternion val6 = Quaternion.Euler(0f, ((Quaternion)(ref val5)).eulerAngles.y + 90f, 0f); Quaternion val7 = Quaternion.Euler(0f, Mathf.Round(((Quaternion)(ref val6)).eulerAngles.y / 90f) * 90f, 0f); if (((Quaternion)(ref val7)).eulerAngles.y == 270f) { val7 = Quaternion.Euler(0f, 90f, 0f); } if (((Quaternion)(ref val7)).eulerAngles.y == 180f) { val7 = Quaternion.Euler(0f, 0f, 0f); } targetYRotation = val7; } currentYRotation = Quaternion.Slerp(currentYRotation, targetYRotation, Time.deltaTime * 5f); } private void Update() { //IL_006f: 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) //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_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026f: 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_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //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_028e: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) if (grabbedTimer > 0f) { grabbedTimer -= Time.deltaTime; } if (physGrabObject.grabbed) { grabbedTimer = 1f; } if (hitFreezeDelay > 0f) { hitFreezeDelay -= Time.deltaTime; if (hitFreezeDelay <= 0f) { physGrabObject.FreezeForces(hitFreeze, Vector3.zero, Vector3.zero); } } if (!LevelGenerator.Instance.Generated) { return; } if (spawnTimer > 0f) { prevPosition = swingPoint.position; swingTimer = 0f; spawnTimer -= Time.deltaTime; return; } if (hitCooldown > 0f) { hitCooldown -= Time.deltaTime; } if (groundHitCooldown > 0f) { groundHitCooldown -= Time.deltaTime; } if (groundHitSoundTimer > 0f) { groundHitSoundTimer -= Time.deltaTime; } soundSwingLoop.PlayLoop(((Component)hurtCollider).gameObject.activeSelf, 10f, 10f, 3f); if (SemiFunc.IsMultiplayer() && !SemiFunc.IsMasterClient() && isSwinging) { swingTimer = 0.5f; } if (hitSoundDelayTimer > 0f) { hitSoundDelayTimer -= Time.deltaTime; } if (swingPitch != swingPitchTarget && swingPitchTargetProgress >= 1f) { swingPitch = swingPitchTarget; } Vector3 val = prevPosition - swingPoint.position; if (((Vector3)(ref val)).magnitude > 0.1f) { hurtColliderRotation.LookAt(hurtColliderRotation.position - val, Vector3.up); hurtColliderRotation.localEulerAngles = new Vector3(0f, hurtColliderRotation.localEulerAngles.y, 0f); hurtColliderRotation.localEulerAngles = new Vector3(0f, Mathf.Round(hurtColliderRotation.localEulerAngles.y / 90f) * 90f, 0f); } Vector3 val2 = prevPosition - swingPoint.position; Vector3 normalized = ((Vector3)(ref swingStartDirection)).normalized; Vector3 normalized2 = ((Vector3)(ref val2)).normalized; float num = Vector3.Dot(normalized, normalized2); double num2 = 0.85; if (!physGrabObject.grabbed) { num2 = 0.1; } if ((double)num > num2) { swingTimer = 0f; } if (isSwinging) { ActivateHitbox(); } if (hitTimer > 0f) { hitTimer -= Time.deltaTime; } if (swingTimer <= 0f) { if (hitBoxTimer <= 0f) { ((Component)hurtCollider).gameObject.SetActive(false); } else { hitBoxTimer -= Time.deltaTime; } trailRenderer.emitting = false; if (SemiFunc.IsMasterClientOrSingleplayer()) { isSwinging = false; } } else { if (SemiFunc.IsMasterClientOrSingleplayer()) { isSwinging = true; } if (hitTimer <= 0f) { hitBoxTimer = 0.2f; } swingTimer -= Time.deltaTime; } } public void SwingHit() { if (!SemiFunc.IsMultiplayer()) { SwingHitRPC(durabilityLoss: true); return; } photonView.RPC("SwingHitRPC", (RpcTarget)0, new object[1] { true }); } [PunRPC] public void SwingHitRPC(bool durabilityLoss) { //IL_00d2: 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_011c: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) bool flag = false; if (durabilityLoss) { if (hitCooldown > 0f || hitSoundDelayTimer > 0f) { return; } hitSoundDelayTimer = 0.1f; hitCooldown = 0.3f; } else { if (groundHitCooldown > 0f || groundHitSoundTimer > 0f) { return; } groundHitCooldown = 0.3f; groundHitSoundTimer = 0.1f; flag = true; } if (!flag) { soundHit.Pitch = 1f; soundHit.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); particleSystem.Play(); } else { soundHit.Pitch = 2f; soundHit.Play(((Component)this).transform.position, 0.5f, 1f, 1f, 1f); particleSystemGroundHit.Play(); } if (physGrabObject.grabbed && !rb.isKinematic) { rb.velocity = Vector3.zero; rb.angularVelocity = Vector3.zero; } if (hitBoxTimer > 0.05f) { hitBoxTimer = 0.05f; } hitTimer = 0.5f; if (SemiFunc.IsMasterClientOrSingleplayer() && hitFreeze > 0f && !flag) { hitFreezeDelay = 0.06f; } if (onHit != null) { onHit.Invoke(); } GameDirector.instance.CameraImpact.ShakeDistance(5f, 3f, 10f, ((Component)this).transform.position, 0.1f); } public void GroundHit() { if (!(hitTimer > 0f) && !(hitBoxTimer <= 0f)) { if (!SemiFunc.IsMultiplayer()) { SwingHitRPC(durabilityLoss: false); return; } photonView.RPC("SwingHitRPC", (RpcTarget)0, new object[1] { false }); } } private void MeleeBreak() { if (!SemiFunc.IsMultiplayer()) { MeleeBreakRPC(); } else if (SemiFunc.IsMasterClient()) { photonView.RPC("MeleeBreakRPC", (RpcTarget)0, Array.Empty<object>()); } } [PunRPC] public void MeleeBreakRPC() { if (physGrabObject.isMelee) { particleSystem.Play(); physGrabObject.isMelee = false; physGrabObject.forceGrabPoint = null; ((Component)hurtCollider).gameObject.SetActive(false); trailRenderer.emitting = false; ((Component)meshHealthy).gameObject.SetActive(false); ((Component)meshBroken).gameObject.SetActive(true); } } private void MeleeFix() { if (!SemiFunc.IsMultiplayer()) { MeleeFixRPC(); } else if (SemiFunc.IsMasterClient()) { photonView.RPC("MeleeFixRPC", (RpcTarget)0, Array.Empty<object>()); } } [PunRPC] public void MeleeFixRPC() { if (!physGrabObject.isMelee) { particleSystem.Play(); physGrabObject.isMelee = true; physGrabObject.forceGrabPoint = forceGrabPoint; ((Component)meshHealthy).gameObject.SetActive(true); ((Component)meshBroken).gameObject.SetActive(false); } } public void ActivateHitbox() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_007f: 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_00ce: 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_00d9: 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_00f4: Unknown result type (might be due to invalid IL or missing references) if (hitTimer > 0f) { return; } if (newSwing) { soundSwing.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); swingPitchTarget = prevPosDistance; swingPitchTargetProgress = 0f; if (Object.op_Implicit((Object)(object)swingPoint)) { swingStartDirection = swingPoint.position - prevPosition; } swingTimer = 0.4f; hitBoxTimer = 0.4f; if (grabbedTimer > 0f) { float num = 150f; if (!physGrabObject.grabbed) { num *= 0.5f; } rb.AddForceAtPosition(swingDirection * Vector3.forward * num * rb.mass, swingPoint.position); } newSwing = false; } if (Object.op_Implicit((Object)(object)hurtCollider)) { ((Component)hurtCollider).gameObject.SetActive(true); } if (Object.op_Implicit((Object)(object)trailRenderer)) { trailRenderer.emitting = true; } } public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if (PhotonNetwork.IsMasterClient) { stream.SendNext((object)isSwinging); return; } bool flag = isSwinging; isSwinging = (bool)stream.ReceiveNext(); if (!flag && isSwinging) { newSwing = true; ActivateHitbox(); } } } public class ValuableRubberDuck : MonoBehaviour { public Sound soundQuack; public Sound soundSqueak; public Sound soundDuckLoop; public Sound soundDuckExplosion; public Sound soundDuckExplosionGlobal; [Header("PhysOptions")] public float DuckForceMulti = 2f; public float DuckTorqueMulti = 10f; private bool hasQuackedOnDiscover; private Rigidbody rb; private PhotonView photonView; private ParticleScriptExplosion particleScriptExplosion; private PhysGrabObject physGrabObject; private ValuableObject valuableObject; public HurtCollider hurtCollider; public Transform hurtTransform; private float hurtColliderTime; private Vector3 prevPosition; private bool playDuckLoop; private List<TrailRenderer> trails = new List<TrailRenderer>(); private float trailTimer; private float lilQuacksTimer; private PhysGrabObjectImpactDetector impactDetector; private void Start() { rb = ((Component)this).GetComponent<Rigidbody>(); particleScriptExplosion = ((Component)this).GetComponent<ParticleScriptExplosion>(); physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); valuableObject = ((Component)this).GetComponent<ValuableObject>(); hurtCollider = ((Component)this).GetComponentInChildren<HurtCollider>(); ((Component)hurtCollider).gameObject.SetActive(false); photonView = ((Component)this).GetComponent<PhotonView>(); impactDetector = ((Component)this).GetComponentInParent<PhysGrabObjectImpactDetector>(); TrailRenderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<TrailRenderer>(); TrailRenderer[] array = componentsInChildren; foreach (TrailRenderer item in array) { trails.Add(item); } } private void Update() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)valuableObject != (Object)null && valuableObject.discovered && !hasQuackedOnDiscover) { hasQuackedOnDiscover = true; LilQuackJump(); } if (!SemiFunc.IsMasterClientOrSingleplayer() || (!SemiFunc.RunIsLevel() && !SemiFunc.RunIsArena()) || !valuableObject.discovered) { return; } Vector3 velocity = rb.velocity; if (((Vector3)(ref velocity)).magnitude < 0.1f) { if (lilQuacksTimer > 0f) { lilQuacksTimer -= Time.deltaTime; return; } lilQuacksTimer = Random.Range(1f, 3f); LilQuackJump(); } } private void FixedUpdate() { //IL_0006: 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_0011: 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_0020: 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_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_0037: 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_0047: 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_0164: Unknown result type (might be due to invalid IL or missing references) Vector3 val = (rb.position - prevPosition) / Time.fixedDeltaTime; Vector3 val2 = rb.position - prevPosition; Vector3 normalized = ((Vector3)(ref val2)).normalized; prevPosition = rb.position; if (!physGrabObject.grabbed) { if (((Vector3)(ref val)).magnitude > 5f) { playDuckLoop = true; trailTimer = 0.2f; } else { playDuckLoop = false; } } else { playDuckLoop = false; } if (trailTimer > 0f) { playDuckLoop = true; trailTimer -= Time.fixedDeltaTime; foreach (TrailRenderer trail in trails) { trail.emitting = true; } } else { playDuckLoop = false; foreach (TrailRenderer trail2 in trails) { trail2.emitting = false; } } soundDuckLoop.PlayLoop(playDuckLoop, 2f, 1f, 1f); if (hurtColliderTime > 0f) { hurtTransform.forward = normalized; if (!((Component)hurtCollider).gameObject.activeSelf) { ((Component)hurtCollider).gameObject.SetActive(true); float num = ((Vector3)(ref val)).magnitude * 2f; if (num > 50f) { num = 50f; } hurtCollider.physHitForce = num; hurtCollider.physHitTorque = num; hurtCollider.enemyHitForce = num; hurtCollider.enemyHitTorque = num; hurtCollider.playerTumbleForce = num; hurtCollider.playerTumbleTorque = num; } hurtColliderTime -= Time.fixedDeltaTime; } else if (((Component)hurtCollider).gameObject.activeSelf) { ((Component)hurtCollider).gameObject.SetActive(false); } } private void LilQuackJump() { //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_005b: 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_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) if ((!((Object)(object)impactDetector != (Object)null) || !impactDetector.inCart) && !physGrabObject.grabbed && !valuableObject.discovered) { rb.AddForce(Vector3.up * DuckForceMulti, (ForceMode)1); rb.AddTorque(Random.insideUnitSphere * DuckTorqueMulti, (ForceMode)1); rb.AddForce(Vector2.op_Implicit(Random.insideUnitCircle * DuckForceMulti), (ForceMode)1); if (SemiFunc.IsMultiplayer()) { photonView.RPC("LilQuackJumpRPC", (RpcTarget)0, Array.Empty<object>()); } else { LilQuackJumpRPC(); } } } [PunRPC] public void LilQuackJumpRPC() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)impactDetector != (Object)null) || !impactDetector.inCart) { soundQuack.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); } } public void Squeak() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) soundSqueak.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); } public void Quack() { //IL_0036: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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) if (((Object)(object)impactDetector != (Object)null && impactDetector.inCart) || physGrabObject.grabbed) { return; } soundQuack.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); hurtColliderTime = 0.2f; if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (Random.Range(0, 50) == 0) { if (SemiFunc.IsMultiplayer()) { photonView.RPC("QuackRPC", (RpcTarget)0, Array.Empty<object>()); } else { QuackRPC(); } } Vector3 velocity = rb.velocity; if (((Vector3)(ref velocity)).magnitude < 20f) { Rigidbody obj = rb; obj.velocity *= 5f; rb.AddTorque(Random.insideUnitSphere * 40f); } } [PunRPC] public void QuackRPC() { //IL_000c: 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_0062: 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) soundDuckExplosionGlobal.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); soundDuckExplosion.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); ParticlePrefabExplosion val = particleScriptExplosion.Spawn(((Component)this).transform.position, 1f, 100, 250, 1f, false, false, 1f); val.SkipHurtColliderSetup = true; val.HurtCollider.playerDamage = 0; val.HurtCollider.enemyDamage = 250; val.HurtCollider.physImpact = (BreakImpact)3; val.HurtCollider.physHingeDestroy = true; val.HurtCollider.playerTumbleForce = 30f; val.HurtCollider.playerTumbleTorque = 50f; } } [DisallowMultipleComponent] public class EnemyNameAttribute : PropertyAttribute { } public class ValuableToEnemySpawner : MonoBehaviour { [CompilerGenerated] private sealed class <DelayedSpawn>d__10 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ValuableToEnemySpawner <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DelayedSpawn>d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown int num = <>1__state; ValuableToEnemySpawner valuableToEnemySpawner = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(valuableToEnemySpawner.spawnDelay); <>1__state = 1; return true; case 1: <>1__state = -1; valuableToEnemySpawner.DoSpawn(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [Header("Choose Enemy Setups by name")] [EnemyName] public List<string> enemySetups; [Tooltip("If true, picks a single random setup; otherwise spawns every setup in the list.")] [SerializeField] private bool randomPick = true; [Tooltip("Optional delay before spawning.")] [SerializeField] private float spawnDelay; [Header("Spawn Chance")] [Tooltip("0 = never spawn, 1 = always spawn. Values in between give probability, 0.2 = 20% spawn chance.")] [Range(0f, 1f)] [SerializeField] private float spawnChance = 1f; [Header("Events")] [Tooltip("Invoked after the spawn logic completes successfully.")] public UnityEvent OnSpawn; private bool _hasSpawned; private PhysGrabObjectImpactDetector _detector; private void Awake() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown _detector = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>(); if ((Object)(object)_detector == (Object)null) { Debug.LogError((object)("[BensEnemySpawner] No ImpactDetector on '" + ((Object)this).name + "'")); } else { _detector.onDestroy.AddListener(new UnityAction(OnValuableBroken)); } } private void OnDestroy() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown if ((Object)(object)_detector != (Object)null) { _detector.onDestroy.RemoveListener(new UnityAction(OnValuableBroken)); } } private void OnValuableBroken() { if (!_hasSpawned) { _hasSpawned = true; if (Random.value > spawnChance) { Debug.Log((object)$"[BensEnemySpawner] Roll failed ({spawnChance * 100f:0.#}% chance)"); } else if (spawnDelay > 0f) { ((MonoBehaviour)this).StartCoroutine(DelayedSpawn()); } else { DoSpawn(); } } } [IteratorStateMachine(typeof(<DelayedSpawn>d__10))] private IEnumerator DelayedSpawn() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DelayedSpawn>d__10(0) { <>4__this = this }; } private void DoSpawn() { //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_0151: 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) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_012c: 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) //IL_013b: 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) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0202: 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) if (enemySetups == null || enemySetups.Count == 0) { Debug.LogWarning((object)("[BensEnemySpawner] No EnemySetup names assigned on '" + ((Object)this).name + "'")); return; } List<EnemySetup> list = new List<EnemySetup>(); if (randomPick) { string text = enemySetups[Random.Range(0, enemySetups.Count)]; EnemySetup item = default(EnemySetup); if (!Enemies.TryGetEnemyByName(text, ref item)) { Debug.LogError((object)("[BensEnemySpawner] Couldn't find EnemySetup '" + text + "'")); return; } list.Add(item); } else { EnemySetup item2 = default(EnemySetup); foreach (string enemySetup in enemySetups) { if (Enemies.TryGetEnemyByName(enemySetup, ref item2)) { list.Add(item2); } else { Debug.LogError((object)("[BensEnemySpawner] Couldn't find EnemySetup '" + enemySetup + "'")); } } if (list.Count == 0) { return; } } Vector3 val = ((Component)this).transform.position; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(((Component)this).transform.position, Vector3.down, ref val2, 3f, LayerMask.GetMask(new string[1] { "Default" }))) { val = ((RaycastHit)(ref val2)).point + Vector3.up * 0.1f; } Quaternion val3 = Quaternion.Euler(0f, ((Component)this).transform.eulerAngles.y, 0f); Enemy val4 = default(Enemy); foreach (EnemySetup item3 in list) { List<EnemyParent> list2 = Enemies.SpawnEnemy(item3, val, val3, false); if (list2 == null || list2.Count == 0) { Debug.LogError((object)("[BensEnemySpawner] SpawnEnemy returned no instances for '" + ((Object)item3).name + "'")); continue; } foreach (EnemyParent item4 in list2) { GameObject gameObject = ((Component)item4).gameObject; gameObject.SendMessage("ResetStateTimer", (SendMessageOptions)1); if (gameObject.TryGetComponent<Enemy>(ref val4)) { val4.CurrentState = (EnemyState)1; } Debug.Log((object)$"[BensEnemySpawner] Spawned '{((Object)item3).name}' at {gameObject.transform.position}"); } } UnityEvent onSpawn = OnSpawn; if (onSpawn != null) { onSpawn.Invoke(); } } } public class ValuableToggle : MonoBehaviour { [HideInInspector] public bool toggleState; public bool playSound; private bool fetchSound; internal bool toggleStatePrevious; private PhotonView photonView; private PhysGrabObject physGrabObject; private Sound soundOn; private Sound soundOff; internal int playerTogglePhotonID; internal bool toggleImpulse; private float toggleImpulseTimer; internal bool disabled; private void Start() { photonView = ((Component)this).GetComponent<PhotonView>(); physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); } private void Update() { if (playSound && !fetchSound) { soundOn = AssetManager.instance.soundDeviceTurnOn; soundOff = AssetManager.instance.soundDeviceTurnOff; fetchSound = true; } if (physGrabObject.heldByLocalPlayer && !disabled && SemiFunc.InputDown((InputKey)2)) { TutorialDirector.instance.playerUsedToggle = true; bool toggle = !toggleState; int player = SemiFunc.PhotonViewIDPlayerAvatarLocal(); ToggleItem(toggle, player); } if (toggleImpulseTimer > 0f) { toggleImpulse = true; toggleImpulseTimer -= Time.deltaTime; } else { toggleImpulse = false; } } private void ToggleItemLogic(bool toggle, int player = -1) { //IL_0063: 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) toggleStatePrevious = toggleState; toggleState = toggle; playerTogglePhotonID = player; if (playSound) { if (toggleState) { soundOn.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); } else { soundOff.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); } } toggleImpulseTimer = 0.2f; } public void ToggleItem(bool toggle, int player = -1) { if (GameManager.Multiplayer()) { photonView.RPC("ToggleItemRPC", (RpcTarget)0, new object[2] { toggle, player }); } else { ToggleItemLogic(toggle, player); } } [PunRPC] private void ToggleItemRPC(bool toggle, int player = -1) { ToggleItemLogic(toggle, player); } public void ToggleDisable(bool _disable) { if (GameManager.Multiplayer()) { photonView.RPC("ToggleDisableRPC", (RpcTarget)0, new object[1] { _disable }); } else { ToggleDisableRPC(_disable); } } [PunRPC] private void ToggleDisableRPC(bool _disable) { disabled = _disable; } } }