Change all of body system to use entities and components (#2074)
* Early commit * Early commit 2 * merging master broke my git * does anyone even read these * life is fleeting * it just works * this time passing integration tests * Remove hashset yaml serialization for now * You got a license for those nullables? * No examine, no context menu, part and mechanism parenting and visibility * Fix wrong brain sprite state * Removing layers was a mistake * just tear body system a new one and see if it still breathes * Remove redundant code * Add that comment back * Separate damage and body, component states, stomach rework * Add containers for body parts * Bring layers back pls * Fix parts magically changing color * Reimplement sprite layer visibility * Fix tests * Add leg test * Active legs is gone Crab rave * Merge fixes, rename DamageState to CurrentState * Remove IShowContextMenu and ICanExamine
This commit is contained in:
@@ -3,7 +3,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Server.GameObjects.Components.Body;
|
||||
using Content.Server.GameObjects.Components.Chemistry;
|
||||
using Content.Server.GameObjects.Components.GUI;
|
||||
using Content.Server.GameObjects.Components.Items.Storage;
|
||||
@@ -14,6 +13,7 @@ using Content.Server.Interfaces.GameObjects;
|
||||
using Content.Server.Utility;
|
||||
using Content.Shared.Chemistry;
|
||||
using Content.Shared.GameObjects.Components.Body;
|
||||
using Content.Shared.GameObjects.Components.Body.Part;
|
||||
using Content.Shared.GameObjects.Components.Power;
|
||||
using Content.Shared.Interfaces;
|
||||
using Content.Shared.Interfaces.GameObjects.Components;
|
||||
@@ -477,27 +477,37 @@ namespace Content.Server.GameObjects.Components.Kitchen
|
||||
public SuicideKind Suicide(IEntity victim, IChatManager chat)
|
||||
{
|
||||
var headCount = 0;
|
||||
if (victim.TryGetComponent<BodyManagerComponent>(out var bodyManagerComponent))
|
||||
|
||||
if (victim.TryGetComponent<IBody>(out var body))
|
||||
{
|
||||
var heads = bodyManagerComponent.GetPartsOfType(BodyPartType.Head);
|
||||
var heads = body.GetPartsOfType(BodyPartType.Head);
|
||||
foreach (var head in heads)
|
||||
{
|
||||
var droppedHead = bodyManagerComponent.DropPart(head);
|
||||
|
||||
if (droppedHead == null)
|
||||
if (!body.TryDropPart(head, out var dropped))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_storage.Insert(droppedHead);
|
||||
headCount++;
|
||||
var droppedHeads = dropped.Where(p => p.PartType == BodyPartType.Head);
|
||||
|
||||
foreach (var droppedHead in droppedHeads)
|
||||
{
|
||||
_storage.Insert(droppedHead.Owner);
|
||||
headCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var othersMessage = Loc.GetString("{0:theName} is trying to cook {0:their} head!", victim);
|
||||
var othersMessage = headCount > 1
|
||||
? Loc.GetString("{0:theName} is trying to cook {0:their} heads!", victim)
|
||||
: Loc.GetString("{0:theName} is trying to cook {0:their} head!", victim);
|
||||
|
||||
victim.PopupMessageOtherClients(othersMessage);
|
||||
|
||||
var selfMessage = Loc.GetString("You cook your head!");
|
||||
var selfMessage = headCount > 1
|
||||
? Loc.GetString("You cook your heads!")
|
||||
: Loc.GetString("You cook your head!");
|
||||
|
||||
victim.PopupMessage(selfMessage);
|
||||
|
||||
_currentCookTimerTime = 10;
|
||||
|
||||
Reference in New Issue
Block a user