2024-02-16 03:08:42 +09:00
|
|
|
using System.Linq;
|
|
|
|
|
using Content.Shared.Damage.Events;
|
|
|
|
|
using Content.Shared.Hands.Components;
|
|
|
|
|
using Content.Shared.Hands.EntitySystems;
|
|
|
|
|
using Content.Shared.Item.ItemToggle;
|
|
|
|
|
|
|
|
|
|
namespace Content.Server._White.Stunprod;
|
|
|
|
|
|
|
|
|
|
public sealed class SnatcherprodSystem : EntitySystem
|
|
|
|
|
{
|
|
|
|
|
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
|
|
|
|
[Dependency] private readonly SharedItemToggleSystem _itemToggle = default!;
|
2024-06-06 11:30:00 +00:00
|
|
|
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
2024-02-16 03:08:42 +09:00
|
|
|
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
{
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
|
|
|
SubscribeLocalEvent<SnatcherprodComponent, StaminaMeleeHitEvent>(OnHit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnHit(EntityUid uid, SnatcherprodComponent component, StaminaMeleeHitEvent args)
|
|
|
|
|
{
|
|
|
|
|
if (!_itemToggle.IsActivated(uid) || args.HitList.Count == 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var entity = args.HitList.First().Entity;
|
|
|
|
|
|
|
|
|
|
if (entity == uid || !TryComp(entity, out HandsComponent? hands))
|
|
|
|
|
return;
|
|
|
|
|
|
2024-06-06 11:30:00 +00:00
|
|
|
foreach (var heldEntity in _handsSystem.EnumerateHeld(entity, hands))
|
2024-02-16 03:08:42 +09:00
|
|
|
{
|
2024-06-06 11:30:00 +00:00
|
|
|
if (!_hands.TryDrop(entity, heldEntity, null, false, false, handsComp: hands))
|
|
|
|
|
continue;
|
2024-02-16 03:08:42 +09:00
|
|
|
|
2024-06-06 11:30:00 +00:00
|
|
|
_hands.PickupOrDrop(args.User, heldEntity, false);
|
|
|
|
|
break;
|
2024-02-16 03:08:42 +09:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|