public override void Local_FireWeapon(ViewModel vm, ItemRepresentation itemRep, IBulletWeaponItem itemInstance, ref HumanController.InputSample sample) { Character character = itemInstance.character; if ((character != null) && (itemInstance.clipAmmo > 0)) { Socket muzzle; Ray eyesRay = character.eyesRay; int count = 1; itemInstance.Consume(ref count); uLink.BitStream sendStream = new uLink.BitStream(false); float bulletRange = this.GetBulletRange(itemRep); for (int i = 0; i < this.numPellets; i++) { bool flag; Ray ray = eyesRay; ray.direction = (Vector3)((Quaternion.LookRotation(eyesRay.direction) * Quaternion.Euler(UnityEngine.Random.Range(-this.xSpread, this.xSpread), UnityEngine.Random.Range(-this.ySpread, this.ySpread), 0f)) * Vector3.forward); Component hitComponent = null; this.FireSingleBullet(sendStream, ray, itemRep, out hitComponent, out flag); this.MakeTracer(ray.origin, ray.origin + ((Vector3)(ray.direction * bulletRange)), bulletRange, hitComponent, flag); } itemRep.ActionStream(1, uLink.RPCMode.Server, sendStream); bool firstPerson = (bool)vm; if (firstPerson) { muzzle = vm.muzzle; } else { muzzle = itemRep.muzzle; } this.DoWeaponEffects(character.transform, muzzle, firstPerson, itemRep); if (firstPerson) { vm.PlayFireAnimation(); } float num4 = 1f; if (sample.aim) { num4 -= base.aimingRecoilSubtract; } else if (sample.crouch) { num4 -= base.crouchRecoilSubtract; } float pitch = UnityEngine.Random.Range(base.recoilPitchMin, base.recoilPitchMax) * num4; float yaw = UnityEngine.Random.Range(base.recoilYawMin, base.recoilYawMax) * num4; RecoilSimulation recoilSimulation = character.recoilSimulation; if (recoilSimulation != null) { recoilSimulation.AddRecoil(base.recoilDuration, pitch, yaw); } HeadBob bob = CameraMount.current.GetComponent <HeadBob>(); if ((bob != null) && (base.shotBob != null)) { bob.AddEffect(base.shotBob); } } }
public override void Local_FireWeapon(ViewModel vm, ItemRepresentation itemRep, IBulletWeaponItem itemInstance, ref HumanController.InputSample sample) { bool flag; Socket socket; Character character = itemInstance.character; if (character == null) { return; } if (itemInstance.clipAmmo <= 0) { return; } Ray ray = character.eyesRay; int num = 1; itemInstance.Consume(ref num); uLink.BitStream bitStream = new uLink.BitStream(false); float bulletRange = this.GetBulletRange(itemRep); for (int i = 0; i < this.numPellets; i++) { Ray ray1 = ray; ray1.direction = (Quaternion.LookRotation(ray.direction) * Quaternion.Euler(UnityEngine.Random.Range(-this.xSpread, this.xSpread), UnityEngine.Random.Range(-this.ySpread, this.ySpread), 0f)) * Vector3.forward; Component component = null; this.FireSingleBullet(bitStream, ray1, itemRep, out component, out flag); this.MakeTracer(ray1.origin, ray1.origin + (ray1.direction * bulletRange), bulletRange, component, flag); } itemRep.ActionStream(1, uLink.RPCMode.Server, bitStream); bool flag1 = vm; if (!flag1) { socket = itemRep.muzzle; } else { socket = vm.muzzle; } this.DoWeaponEffects(character.transform, socket, flag1, itemRep); if (flag1) { vm.PlayFireAnimation(); } float single = 1f; if (sample.aim) { single = single - this.aimingRecoilSubtract; } else if (sample.crouch) { single = single - this.crouchRecoilSubtract; } float single1 = UnityEngine.Random.Range(this.recoilPitchMin, this.recoilPitchMax) * single; float single2 = UnityEngine.Random.Range(this.recoilYawMin, this.recoilYawMax) * single; RecoilSimulation recoilSimulation = character.recoilSimulation; if (recoilSimulation) { recoilSimulation.AddRecoil(this.recoilDuration, single1, single2); } HeadBob headBob = CameraMount.current.GetComponent <HeadBob>(); if (headBob && this.shotBob) { headBob.AddEffect(this.shotBob); } }