Box fixes and Stealth Box in uplink (#12194)
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
using System.Linq;
|
||||
using Content.Shared.CardboardBox.Components;
|
||||
using Content.Server.Storage.Components;
|
||||
using Content.Server.Storage.EntitySystems;
|
||||
using Content.Shared.CardboardBox;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Prototypes;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Timing;
|
||||
using Content.Shared.Stealth.Components;
|
||||
using Content.Shared.Stealth;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server.CardboardBox;
|
||||
|
||||
@@ -17,6 +22,9 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem
|
||||
[Dependency] private readonly SharedMoverController _mover = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly SharedStealthSystem _stealth = default!;
|
||||
[Dependency] private readonly DamageableSystem _damageable = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly EntityStorageSystem _storage = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -24,6 +32,18 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem
|
||||
SubscribeLocalEvent<CardboardBoxComponent, StorageBeforeCloseEvent>(OnBeforeStorageClosed);
|
||||
SubscribeLocalEvent<CardboardBoxComponent, StorageAfterOpenEvent>(AfterStorageOpen);
|
||||
SubscribeLocalEvent<CardboardBoxComponent, StorageAfterCloseEvent>(AfterStorageClosed);
|
||||
SubscribeLocalEvent<CardboardBoxComponent, InteractedNoHandEvent>(OnNoHandInteracted);
|
||||
|
||||
SubscribeLocalEvent<CardboardBoxComponent, DamageChangedEvent>(OnDamage);
|
||||
}
|
||||
|
||||
private void OnNoHandInteracted(EntityUid uid, CardboardBoxComponent component, InteractedNoHandEvent args)
|
||||
{
|
||||
//Free the mice please
|
||||
if (!TryComp<EntityStorageComponent>(uid, out var box) || box.Open || !box.Contents.Contains(args.User))
|
||||
return;
|
||||
|
||||
_storage.OpenStorage(uid);
|
||||
}
|
||||
|
||||
private void OnBeforeStorageClosed(EntityUid uid, CardboardBoxComponent component, StorageBeforeCloseEvent args)
|
||||
@@ -75,4 +95,13 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem
|
||||
_stealth.SetEnabled(uid, true, stealth);
|
||||
}
|
||||
}
|
||||
|
||||
//Relay damage to the mover
|
||||
private void OnDamage(EntityUid uid, CardboardBoxComponent component, DamageChangedEvent args)
|
||||
{
|
||||
if (args.DamageDelta != null && args.DamageIncreased)
|
||||
{
|
||||
_damageable.TryChangeDamage(component.Mover, args.DamageDelta, origin: args.Origin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user