Make combat check CanInteract (#7046)

This commit is contained in:
Leon Friedrich
2022-03-09 19:40:07 +13:00
committed by GitHub
parent d691161542
commit 17132385d4
8 changed files with 14 additions and 30 deletions

View File

@@ -298,6 +298,11 @@ namespace Content.Server.Interaction
if (!ValidateInteractAndFace(user, coordinates))
return;
// Check general interaction blocking.
if (!_actionBlockerSystem.CanInteract(user, target))
return;
// Check combat-specific action blocking.
if (!_actionBlockerSystem.CanAttack(user, target))
return;

View File

@@ -1,4 +1,4 @@
using Content.Shared.Interaction.Events;
using Content.Shared.Interaction.Events;
using Content.Shared.Item;
using Content.Shared.Movement;
using Content.Shared.Throwing;
@@ -14,7 +14,6 @@ public sealed class AdminFrozenSystem : EntitySystem
SubscribeLocalEvent<AdminFrozenComponent, UseAttemptEvent>((_, _, args) => args.Cancel());
SubscribeLocalEvent<AdminFrozenComponent, PickupAttemptEvent>((_, _, args) => args.Cancel());
SubscribeLocalEvent<AdminFrozenComponent, ThrowAttemptEvent>((_, _, args) => args.Cancel());
SubscribeLocalEvent<AdminFrozenComponent, AttackAttemptEvent>((_, _, args) => args.Cancel());
SubscribeLocalEvent<AdminFrozenComponent, MovementAttemptEvent>((_, _, args) => args.Cancel());
SubscribeLocalEvent<AdminFrozenComponent, InteractionAttemptEvent>((_, _, args) => args.Cancel());
}

View File

@@ -20,7 +20,6 @@ namespace Content.Shared.Cuffs
SubscribeLocalEvent<SharedCuffableComponent, InteractionAttemptEvent>(OnInteractAttempt);
SubscribeLocalEvent<SharedCuffableComponent, IsEquippingAttemptEvent>(OnEquipAttempt);
SubscribeLocalEvent<SharedCuffableComponent, IsUnequippingAttemptEvent>(OnUnequipAttempt);
SubscribeLocalEvent<SharedCuffableComponent, AttackAttemptEvent>(OnAttackAttempt);
SubscribeLocalEvent<SharedCuffableComponent, DropAttemptEvent>(OnDropAttempt);
SubscribeLocalEvent<SharedCuffableComponent, PickupAttemptEvent>(OnPickupAttempt);
}
@@ -75,11 +74,6 @@ namespace Content.Shared.Cuffs
CheckAct(uid, component, args);
}
private void OnAttackAttempt(EntityUid uid, SharedCuffableComponent component, AttackAttemptEvent args)
{
CheckAct(uid, component, args);
}
private void OnDropAttempt(EntityUid uid, SharedCuffableComponent component, DropAttemptEvent args)
{
CheckAct(uid, component, args);

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using Content.Shared.DragDrop;
using Content.Shared.Emoting;
@@ -21,7 +21,6 @@ namespace Content.Shared.Ghost
SubscribeLocalEvent<SharedGhostComponent, UseAttemptEvent>(OnAttempt);
SubscribeLocalEvent<SharedGhostComponent, InteractionAttemptEvent>(OnAttempt);
SubscribeLocalEvent<SharedGhostComponent, EmoteAttemptEvent>(OnAttempt);
SubscribeLocalEvent<SharedGhostComponent, AttackAttemptEvent>(OnAttempt);
SubscribeLocalEvent<SharedGhostComponent, DropAttemptEvent>(OnAttempt);
SubscribeLocalEvent<SharedGhostComponent, PickupAttemptEvent>(OnAttempt);
}

View File

@@ -1,7 +1,12 @@
using Robust.Shared.GameObjects;
namespace Content.Shared.Interaction.Events
{
/// <summary>
/// Raised Directed at a user to check whether they are allowed to attack a target.
/// </summary>
/// <remarks>
/// Combat will also check the general interaction blockers, so this event should only be used for combat-specific
/// action blocking.
/// </remarks>
public sealed class AttackAttemptEvent : CancellableEntityEventArgs
{
public EntityUid Uid { get; }

View File

@@ -29,7 +29,6 @@ namespace Content.Shared.MobState.EntitySystems
SubscribeLocalEvent<MobStateComponent, IsEquippingAttemptEvent>(OnEquipAttempt);
SubscribeLocalEvent<MobStateComponent, EmoteAttemptEvent>(OnEmoteAttempt);
SubscribeLocalEvent<MobStateComponent, IsUnequippingAttemptEvent>(OnUnequipAttempt);
SubscribeLocalEvent<MobStateComponent, AttackAttemptEvent>(OnAttackAttempt);
SubscribeLocalEvent<MobStateComponent, DropAttemptEvent>(OnDropAttempt);
SubscribeLocalEvent<MobStateComponent, PickupAttemptEvent>(OnPickupAttempt);
SubscribeLocalEvent<MobStateComponent, StartPullAttemptEvent>(OnStartPullAttempt);
@@ -96,11 +95,6 @@ namespace Content.Shared.MobState.EntitySystems
CheckAct(uid, component, args);
}
private void OnAttackAttempt(EntityUid uid, MobStateComponent component, AttackAttemptEvent args)
{
CheckAct(uid, component, args);
}
private void OnDropAttempt(EntityUid uid, MobStateComponent component, DropAttemptEvent args)
{
CheckAct(uid, component, args);

View File

@@ -24,7 +24,6 @@ namespace Content.Shared.PAI
base.Initialize();
SubscribeLocalEvent<PAIComponent, UseAttemptEvent>(OnUseAttempt);
SubscribeLocalEvent<PAIComponent, InteractionAttemptEvent>(OnInteractAttempt);
SubscribeLocalEvent<PAIComponent, AttackAttemptEvent>(OnAttackAttempt);
SubscribeLocalEvent<PAIComponent, DropAttemptEvent>(OnDropAttempt);
SubscribeLocalEvent<PAIComponent, PickupAttemptEvent>(OnPickupAttempt);
SubscribeLocalEvent<PAIComponent, MovementAttemptEvent>(OnMoveAttempt);
@@ -54,11 +53,6 @@ namespace Content.Shared.PAI
args.Cancel();
}
private void OnAttackAttempt(EntityUid uid, PAIComponent component, AttackAttemptEvent args)
{
args.Cancel();
}
private void OnDropAttempt(EntityUid uid, PAIComponent component, DropAttemptEvent args)
{
args.Cancel();

View File

@@ -54,7 +54,6 @@ namespace Content.Shared.Stunnable
SubscribeLocalEvent<StunnedComponent, ThrowAttemptEvent>(OnThrowAttempt);
SubscribeLocalEvent<StunnedComponent, DropAttemptEvent>(OnDropAttempt);
SubscribeLocalEvent<StunnedComponent, PickupAttemptEvent>(OnPickupAttempt);
SubscribeLocalEvent<StunnedComponent, AttackAttemptEvent>(OnAttackAttempt);
SubscribeLocalEvent<StunnedComponent, IsEquippingAttemptEvent>(OnEquipAttempt);
SubscribeLocalEvent<StunnedComponent, IsUnequippingAttemptEvent>(OnUnequipAttempt);
}
@@ -236,11 +235,6 @@ namespace Content.Shared.Stunnable
args.Cancel();
}
private void OnAttackAttempt(EntityUid uid, StunnedComponent stunned, AttackAttemptEvent args)
{
args.Cancel();
}
private void OnEquipAttempt(EntityUid uid, StunnedComponent stunned, IsEquippingAttemptEvent args)
{
// is this a self-equip, or are they being stripped?