public static void Explosion() { C4Place.isActive = false; if (C4Place.asBeep == null) { return; } float num; if (SpecCam.show) { if (SpecCam.FID >= 0 && SpecCam.mode == 1 && PlayerControll.Player[SpecCam.FID] != null) { num = Vector3.Distance(C4.bombGo.transform.position, PlayerControll.Player[SpecCam.FID].go.transform.position); } else { num = Vector3.Distance(C4.bombGo.transform.position, SpecCam.position); } } else { num = Vector3.Distance(C4.bombGo.transform.position, BasePlayer.go.transform.position); } if (num < 50f) { C4Place.asBeep.volume = 0.5f * Options.gamevol; C4Place.asBeep.maxDistance = 55f; C4Place.asBeep.PlayOneShot(C4Place.detonationSound); } else { C4Place.asBeep.volume = 1f * Options.gamevol; C4Place.asBeep.maxDistance = 999999f; C4Place.asBeep.PlayOneShot(C4Place.detonationFarSound); } GameObject original = ContentLoader_.LoadGameObject("Detonator"); UnityEngine.Object.Instantiate(original, C4.bombGo.transform.position + Vector3.up * 0.1f, C4.bombGo.transform.rotation); if (vp_FPController.cs == null || vp_FPCamera.cs == null) { return; } float num2 = Vector3.Distance(vp_FPController.cs.SmoothPosition, C4.bombGo.transform.position); if (num2 > 30f) { return; } float num3 = 0.001f; if (num2 < 5f) { num3 = 0.005f; } else if (num2 < 10f) { num3 = 0.003f; } num2 = 30f - num2; vp_FPCamera.cs.AddForce2(new Vector3(2f, -10f, 2f) * num2 * num3); if (UnityEngine.Random.value > 0.5f) { num3 = -num3; } vp_FPCamera.cs.AddRollForce(num3 * 200f); C4.DestroyBomb(); }