ECS and cleanup body system, merge body templates and presets into body prototypes (#11991)

Co-authored-by: Jezithyr <Jezithyr@gmail.com>
This commit is contained in:
DrSmugleaf
2022-10-23 00:46:28 +02:00
committed by GitHub
parent 9a38736c3c
commit f323fb7644
140 changed files with 2478 additions and 2571 deletions

View File

@@ -103,10 +103,7 @@ public sealed partial class AdminVerbSystem
4, 1, 2, maxTileBreak: 0), // it gibs, damage doesn't need to be high.
CancellationToken.None);
if (TryComp(args.Target, out SharedBodyComponent? body))
{
body.Gib();
}
_bodySystem.GibBody(args.Target);
},
Impact = LogImpact.Extreme,
Message = Loc.GetString("admin-smite-explode-description")
@@ -308,15 +305,15 @@ public sealed partial class AdminVerbSystem
Act = () =>
{
_vomitSystem.Vomit(args.Target, -1000, -1000); // You feel hollow!
var organs = _bodySystem.GetComponentsOnMechanisms<TransformComponent>(args.Target, body);
var organs = _bodySystem.GetBodyOrganComponents<TransformComponent>(args.Target, body);
var baseXform = Transform(args.Target);
foreach (var (xform, mechanism) in organs)
foreach (var (xform, organ) in organs)
{
if (HasComp<BrainComponent>(xform.Owner) || HasComp<EyeComponent>(xform.Owner))
continue;
mechanism.Part?.RemoveMechanism(mechanism);
xform.Coordinates = baseXform.Coordinates.Offset(_random.NextVector2(0.5f,0.75f));
var coordinates = baseXform.Coordinates.Offset(_random.NextVector2(0.5f, 0.75f));
_bodySystem.DropOrganAt(organ.Owner, coordinates, organ);
}
_popupSystem.PopupEntity(Loc.GetString("admin-smite-vomit-organs-self"), args.Target,
@@ -337,10 +334,9 @@ public sealed partial class AdminVerbSystem
Act = () =>
{
var baseXform = Transform(args.Target);
foreach (var part in body.GetPartsOfType(BodyPartType.Hand))
foreach (var part in _bodySystem.GetBodyChildrenOfType(args.Target, BodyPartType.Hand))
{
body.RemovePart(part);
Transform(part.Owner).Coordinates = baseXform.Coordinates;
_bodySystem.DropPartAt(part.Id, baseXform.Coordinates, part.Component);
}
_popupSystem.PopupEntity(Loc.GetString("admin-smite-remove-hands-self"), args.Target,
Filter.Entities(args.Target), PopupType.LargeCaution);
@@ -360,10 +356,9 @@ public sealed partial class AdminVerbSystem
Act = () =>
{
var baseXform = Transform(args.Target);
foreach (var part in body.GetPartsOfType(BodyPartType.Hand))
foreach (var part in _bodySystem.GetBodyChildrenOfType(body.Owner, BodyPartType.Hand, body))
{
body.RemovePart(part);
Transform(part.Owner).Coordinates = baseXform.Coordinates;
_bodySystem.DropPartAt(part.Id, baseXform.Coordinates, part.Component);
break;
}
_popupSystem.PopupEntity(Loc.GetString("admin-smite-remove-hands-self"), args.Target,
@@ -383,13 +378,9 @@ public sealed partial class AdminVerbSystem
IconTexture = "/Textures/Mobs/Species/Human/organs.rsi/stomach.png",
Act = () =>
{
foreach (var part in body.Parts)
foreach (var (component, _) in _bodySystem.GetBodyOrganComponents<StomachComponent>(args.Target, body))
{
foreach (var mechanism in part.Key.Mechanisms)
{
if (HasComp<StomachComponent>(mechanism.Owner))
QueueDel(mechanism.Owner);
}
QueueDel(component.Owner);
}
_popupSystem.PopupEntity(Loc.GetString("admin-smite-stomach-removal-self"), args.Target,
@@ -407,13 +398,9 @@ public sealed partial class AdminVerbSystem
IconTexture = "/Textures/Mobs/Species/Human/organs.rsi/lung-r.png",
Act = () =>
{
foreach (var part in body.Parts)
foreach (var (component, _) in _bodySystem.GetBodyOrganComponents<LungComponent>(args.Target, body))
{
foreach (var mechanism in part.Key.Mechanisms)
{
if (HasComp<LungComponent>(mechanism.Owner))
QueueDel(mechanism.Owner);
}
QueueDel(component.Owner);
}
_popupSystem.PopupEntity(Loc.GetString("admin-smite-lung-removal-self"), args.Target,