From fb839f865ef055517e1a0850368740ec0316622c Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Tue, 4 Oct 2022 12:50:09 +1100 Subject: [PATCH] Make CanAttack check for container (#11650) --- Content.Shared/ActionBlocker/ActionBlockerSystem.cs | 6 ++++++ Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs index f10aae25cc..b875ba0260 100644 --- a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs +++ b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Movement.Events; using Content.Shared.Speech; using Content.Shared.Throwing; using JetBrains.Annotations; +using Robust.Shared.Containers; namespace Content.Shared.ActionBlocker { @@ -19,6 +20,8 @@ namespace Content.Shared.ActionBlocker [UsedImplicitly] public sealed class ActionBlockerSystem : EntitySystem { + [Dependency] private readonly SharedContainerSystem _container = default!; + public override void Initialize() { base.Initialize(); @@ -151,6 +154,9 @@ namespace Content.Shared.ActionBlocker public bool CanAttack(EntityUid uid, EntityUid? target = null) { + if (_container.IsEntityInContainer(uid)) + return false; + var ev = new AttackAttemptEvent(uid, target); RaiseLocalEvent(uid, ev); diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 72a8bd1375..ab5627991f 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -229,14 +229,14 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem if (weapon.NextAttack > curTime) return; + if (!CombatMode.IsInCombatMode(user)) + return; + if (!Blocker.CanAttack(user)) return; // Windup time checked elsewhere. - if (!CombatMode.IsInCombatMode(user)) - return; - if (weapon.NextAttack < curTime) weapon.NextAttack = curTime;