]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Make MMIs work again (#20844)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Mon, 9 Oct 2023 04:49:20 +0000 (00:49 -0400)
committerGitHub <noreply@github.com>
Mon, 9 Oct 2023 04:49:20 +0000 (21:49 -0700)
Content.Server/Body/Systems/BrainSystem.cs
Content.Shared/Body/Systems/SharedBodySystem.Body.cs
Content.Shared/Body/Systems/SharedBodySystem.Parts.cs
Resources/Prototypes/Body/Organs/diona.yml
Resources/Prototypes/Body/Organs/human.yml

index 16a2a6737b065e7abeb10d9a9a37c96058b24a47..b55274808d76c173dd1ed406e097bdc14fae969e 100644 (file)
@@ -2,17 +2,13 @@ using Content.Server.Body.Components;
 using Content.Server.Ghost.Components;
 using Content.Shared.Body.Components;
 using Content.Shared.Body.Events;
-using Content.Shared.Body.Organ;
 using Content.Shared.Mind;
 using Content.Shared.Mind.Components;
-using Content.Shared.Movement.Components;
-using Content.Shared.Movement.Systems;
 
 namespace Content.Server.Body.Systems
 {
     public sealed class BrainSystem : EntitySystem
     {
-        [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
         [Dependency] private readonly SharedMindSystem _mindSystem = default!;
 
         public override void Initialize()
@@ -20,11 +16,14 @@ namespace Content.Server.Body.Systems
             base.Initialize();
 
             SubscribeLocalEvent<BrainComponent, AddedToPartInBodyEvent>((uid, _, args) => HandleMind(args.Body, uid));
-            SubscribeLocalEvent<BrainComponent, RemovedFromPartInBodyEvent>((uid, _, args) => HandleMind(args.OldBody, uid));
+            SubscribeLocalEvent<BrainComponent, RemovedFromPartInBodyEvent>((uid, _, args) => HandleMind(uid, args.OldBody));
         }
 
         private void HandleMind(EntityUid newEntity, EntityUid oldEntity)
         {
+            if (TerminatingOrDeleted(newEntity) || TerminatingOrDeleted(oldEntity))
+                return;
+
             EnsureComp<MindContainerComponent>(newEntity);
             EnsureComp<MindContainerComponent>(oldEntity);
 
@@ -32,16 +31,6 @@ namespace Content.Server.Body.Systems
             if (HasComp<BodyComponent>(newEntity))
                 ghostOnMove.MustBeDead = true;
 
-            // TODO: This is an awful solution.
-            // Our greatest minds still can't figure out how to allow brains/heads to ghost without giving them the
-            // ability to move first. I hate this with a passion.
-            if (!HasComp<InputMoverComponent>(newEntity))
-            {
-                AddComp<InputMoverComponent>(newEntity);
-                var move = EnsureComp<MovementSpeedModifierComponent>(newEntity);
-                _movementSpeed.ChangeBaseSpeed(newEntity, 0, 0 , 0, move);
-            }
-
             if (!_mindSystem.TryGetMind(oldEntity, out var mindId, out var mind))
                 return;
 
index 9cdeb8dcfad44ae7e00915c2bb4429cee2b035b3..8f16ca8efc451479ea93e74426c92aeaab992415 100644 (file)
@@ -55,7 +55,7 @@ public partial class SharedBodySystem
     private void OnBodyRemoved(EntityUid uid, BodyComponent component, EntRemovedFromContainerMessage args)
     {
         // TODO: lifestage shenanigans
-        if (LifeStage(uid) >= EntityLifeStage.Terminating)
+        if (TerminatingOrDeleted(uid))
             return;
 
         // Root body part?
index d2ec8c7f18ec46b8595cbbcab391911009ffdcc1..66397017e14fcac3745fc149454d34fad85feb25 100644 (file)
@@ -47,7 +47,7 @@ public partial class SharedBodySystem
     private void OnBodyPartRemoved(EntityUid uid, BodyPartComponent component, EntRemovedFromContainerMessage args)
     {
         // TODO: lifestage shenanigans
-        if (LifeStage(uid) >= EntityLifeStage.Terminating)
+        if (TerminatingOrDeleted(uid))
             return;
 
         // Body part removed from another body part.
index 52087f062a801650793cf108ea210337e5faf5a6..482ec42927bda69040de3e027a8d71087ce8eb2a 100644 (file)
@@ -49,6 +49,8 @@
         - ReagentId: Nutriment
           Quantity: 5
   - type: Brain
+  - type: InputMover
+  - type: Examiner
   - type: Lung #lungs in they head. why they there tho?
   - type: Metabolizer
     removeEmpty: true
index 91142e8def40dfc8df23e360a88acbb23190e1a2..1ece318f1d9ca41775dff51059dacbd2c813b480 100644 (file)
@@ -36,6 +36,8 @@
   - type: Input
     context: "ghost"
   - type: Brain
+  - type: InputMover
+  - type: Examiner
   - type: BlockMovement
 
 - type: entity