Changes to "Burst" firemode; Drozd, WT550 and C20-r (#31292)

* Initial commit

* Change burst fire variable to be a set value rather than a multiplier
This commit is contained in:
SlamBamActionman
2024-11-06 15:39:16 +01:00
committed by GitHub
parent e72d63e8a9
commit b15d5a7f27
5 changed files with 104 additions and 23 deletions

View File

@@ -1,4 +1,6 @@
using Content.Shared.Damage;
using Content.Shared.Weapons.Ranged.Components;
using Robust.Shared.Map;
namespace Content.Server.Weapons.Ranged.Systems;
@@ -13,17 +15,28 @@ public sealed partial class GunSystem
*/
// Automatic firing without stopping if the AutoShootGunComponent component is exist and enabled
var query = EntityQueryEnumerator<AutoShootGunComponent, GunComponent>();
var query = EntityQueryEnumerator<GunComponent>();
while (query.MoveNext(out var uid, out var autoShoot, out var gun))
while (query.MoveNext(out var uid, out var gun))
{
if (!autoShoot.Enabled)
continue;
if (gun.NextFire > Timing.CurTime)
continue;
AttemptShoot(uid, gun);
if (TryComp(uid, out AutoShootGunComponent? autoShoot))
{
if (!autoShoot.Enabled)
continue;
AttemptShoot(uid, gun);
}
else if (gun.BurstActivated)
{
var parent = _transform.GetParentUid(uid);
if (HasComp<DamageableComponent>(parent))
AttemptShoot(parent, uid, gun, gun.ShootCoordinates ?? new EntityCoordinates(uid, gun.DefaultDirection));
else
AttemptShoot(uid, gun);
}
}
}
}