LGTM, Just a warning that this will probably get overriden when medical refactor gets merged since it refactors gibbing.
_humanoidSystem.SetLayersVisibility(bodyUid, layers, false, true, humanoid);
}
- public override HashSet<EntityUid> GibBody(EntityUid bodyId, bool gibOrgans = false, BodyComponent? body = null, bool deleteItems = false)
+ public override HashSet<EntityUid> GibBody(EntityUid bodyId, bool gibOrgans = false, BodyComponent? body = null, bool deleteItems = false, bool deleteBrain = false)
{
if (!Resolve(bodyId, ref body, false))
return new HashSet<EntityUid>();
if (xform.MapUid == null)
return new HashSet<EntityUid>();
- var gibs = base.GibBody(bodyId, gibOrgans, body, deleteItems);
+ var gibs = base.GibBody(bodyId, gibOrgans, body, deleteItems, deleteBrain);
var coordinates = xform.Coordinates;
var filter = Filter.Pvs(bodyId, entityManager: EntityManager);
{
if (deleteItems)
{
- QueueDel(entity);
+ if (!HasComp<BrainComponent>(entity) || deleteBrain)
+ {
+ QueueDel(entity);
+ }
}
else
{
if (!TryComp<TransformComponent>(uid, out var xform))
return;
- _body.GibBody(xform.ParentUid, deleteItems: component.DeleteItems);
+ _body.GibBody(xform.ParentUid, true, deleteItems: component.DeleteItems);
args.Handled = true;
}
using Content.Shared.Body.Part;
using Content.Shared.Body.Prototypes;
using Content.Shared.DragDrop;
+using Content.Shared.Inventory;
+using Content.Shared.Inventory.Events;
using Robust.Shared.Containers;
using Robust.Shared.Map;
* - Each "connection" is a body part (e.g. arm, hand, etc.) and each part can also contain organs.
*/
+ [Dependency] private readonly InventorySystem _inventory = default!;
+
private void InitializeBody()
{
// Body here to handle root body parts.
}
public virtual HashSet<EntityUid> GibBody(EntityUid bodyId, bool gibOrgans = false,
- BodyComponent? body = null, bool deleteItems = false)
+ BodyComponent? body = null, bool deleteItems = false, bool deleteBrain = false)
{
var gibs = new HashSet<EntityUid>();
gibs.Add(organ.Id);
}
}
-
+ if(TryComp<InventoryComponent>(bodyId, out var inventory))
+ {
+ foreach (var item in _inventory.GetHandOrInventoryEntities(bodyId))
+ {
+ SharedTransform.AttachToGridOrMap(item);
+ gibs.Add(item);
+ }
+ }
return gibs;
}
}