Exemple #1
0
        public override void Reload(Sandbox.Player owner)
        {
            if (IsReloading)
            {
                return;
            }

            if (AmmoClip >= ClipSize)
            {
                return;
            }

            TimeSinceReload = 0;

            if (Owner is Player player)
            {
                if (player.AmmoCount(AmmoType) <= 0)
                {
                    return;
                }

                StartReloadEffects();
            }

            IsReloading = true;
            Owner.SetAnimParam("b_reload", true);
            StartReloadEffects();
        }
Exemple #2
0
        public override void AttackPrimary(Sandbox.Player owner)
        {
            TimeSincePrimaryAttack   = 0;
            TimeSinceSecondaryAttack = 0;

            ShootEffects();

            foreach (var tr in TraceBullet(owner.EyePos, owner.EyePos + owner.EyeRot.Forward * 5000))
            {
                tr.Surface.DoBulletImpact(tr);

                if (!IsServer)
                {
                    continue;
                }
                if (!tr.Entity.IsValid())
                {
                    continue;
                }

                using (Prediction.Off())
                {
                    var damage = DamageInfo.FromBullet(tr.EndPos, owner.EyeRot.Forward * 100, 15)
                                 .UsingTraceResult(tr)
                                 .WithAttacker(owner)
                                 .WithWeapon(this);

                    tr.Entity.TakeDamage(damage);
                }
            }
        }
Exemple #3
0
        public override void AttackPrimary(Sandbox.Player owner)
        {
            TimeSincePrimaryAttack   = 0;
            TimeSinceSecondaryAttack = 0;

            if (!TakeAmmo(1))
            {
                DryFire();
                return;
            }

            ShootEffects();
            PlaySound("rust_pistol.shoot");
            ShootBullet(0.05f, 1.5f, 9.0f, 3.0f);
        }
Exemple #4
0
        public override void OnPlayerControlTick(Sandbox.Player owner)
        {
            if (TimeSinceDeployed < 0.6f)
            {
                return;
            }

            if (!IsReloading)
            {
                base.OnPlayerControlTick(owner);
            }

            if (IsReloading && TimeSinceReload > ReloadTime)
            {
                OnReloadFinish();
            }
        }
Exemple #5
0
        public override void AttackPrimary(Sandbox.Player owner)
        {
            TimeSincePrimaryAttack   = 0;
            TimeSinceSecondaryAttack = 0;

            if (!TakeAmmo(1))
            {
                DryFire();
                return;
            }

            Owner.SetAnimParam("b_attack", true);

            ShootEffects();
            PlaySound("rust_smg.shoot");
            ShootBullet(0.1f, 1.5f, 5.0f, 3.0f);
        }
Exemple #6
0
        public override void AttackPrimary(Sandbox.Player owner)
        {
            TimeSincePrimaryAttack   = 0;
            TimeSinceSecondaryAttack = 0;

            if (!TakeAmmo(1))
            {
                DryFire();
                return;
            }

            Owner.SetAnimParam("b_attack", true);

            ShootEffects();
            PlaySound("rust_pumpshotgun.shoot");

            for (int i = 0; i < 10; i++)
            {
                ShootBullet(0.15f, 0.3f, 9.0f, 3.0f);
            }
        }
Exemple #7
0
 public override bool CanPrimaryAttack(Sandbox.Player owner)
 {
     return(base.CanPrimaryAttack(owner) && owner.Input.Pressed(InputButton.Attack1));
 }