Add more DNA interactions (#21989)

* Add more DNA interactions

* remove unused import

* update based on feedback

* Add event for chemistrysystem.injector

* move event to shared; transfer dna to implanter

* doafter and interaction event fixes

* add BreakOnHandChange

* doh

* use events instead of updating component directly

* Add DataFields to ForensicScannerComponent fields

* Convert most events to system api call
This commit is contained in:
themias
2023-12-15 04:52:55 -05:00
committed by GitHub
parent 2455980090
commit 9cc4a50692
20 changed files with 291 additions and 26 deletions

View File

@@ -15,6 +15,8 @@ using Content.Shared.Temperature;
using Robust.Server.GameObjects;
using Robust.Shared.Containers;
using System.Linq;
using Content.Shared.Inventory.Events;
using Content.Server.Forensics;
namespace Content.Server.Nutrition.EntitySystems
{
@@ -30,6 +32,7 @@ namespace Content.Server.Nutrition.EntitySystems
[Dependency] private readonly SharedItemSystem _items = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly ForensicsSystem _forensics = default!;
private const float UpdateTimer = 3f;
@@ -44,6 +47,7 @@ namespace Content.Server.Nutrition.EntitySystems
{
SubscribeLocalEvent<SmokableComponent, IsHotEvent>(OnSmokableIsHotEvent);
SubscribeLocalEvent<SmokableComponent, ComponentShutdown>(OnSmokableShutdownEvent);
SubscribeLocalEvent<SmokableComponent, GotEquippedEvent>(OnSmokeableEquipEvent);
InitializeCigars();
InitializePipes();
@@ -85,6 +89,14 @@ namespace Content.Server.Nutrition.EntitySystems
_active.Remove(uid);
}
private void OnSmokeableEquipEvent(EntityUid uid, SmokableComponent component, GotEquippedEvent args)
{
if (args.Slot == "mask")
{
_forensics.TransferDna(uid, args.Equipee, false);
}
}
public override void Update(float frameTime)
{
_timer += frameTime;