diff --git a/Content.Server/Goobstation/Changeling/ChangelingSystem.cs b/Content.Server/Goobstation/Changeling/ChangelingSystem.cs index b063a689507..491493271fc 100644 --- a/Content.Server/Goobstation/Changeling/ChangelingSystem.cs +++ b/Content.Server/Goobstation/Changeling/ChangelingSystem.cs @@ -57,7 +57,8 @@ using System.Numerics; using Content.Shared.Camera; using Robust.Shared.Timing; -using Content.Shared.Gravity; +using Content.Shared.Damage.Components; +using Content.Server.Gravity; namespace Content.Server.Changeling; @@ -357,8 +358,8 @@ public void AddDNA(EntityUid uid, ChangelingComponent comp, TransformData data, { if (comp.AbsorbedDNA.Count >= comp.MaxAbsorbedDNA) { - comp.AbsorbedDNA.RemoveAt(0); _popup.PopupEntity(Loc.GetString("changeling-sting-extract-max"), uid, uid); + return; } comp.AbsorbedDNA.Add(data); diff --git a/Content.Server/Roles/RoleSystem.cs b/Content.Server/Roles/RoleSystem.cs index f7a51773573..7b18485787f 100644 --- a/Content.Server/Roles/RoleSystem.cs +++ b/Content.Server/Roles/RoleSystem.cs @@ -19,6 +19,7 @@ public override void Initialize() SubscribeAntagEvents(); SubscribeAntagEvents(); SubscribeAntagEvents(); + SubscribeAntagEvents(); } public string? MindGetBriefing(EntityUid? mindId) diff --git a/Content.Shared/Goobstation/Changeling/AbsorbedSystem.cs b/Content.Shared/Goobstation/Changeling/AbsorbedSystem.cs index f5d94cf7f80..0496dc63be8 100644 --- a/Content.Shared/Goobstation/Changeling/AbsorbedSystem.cs +++ b/Content.Shared/Goobstation/Changeling/AbsorbedSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Examine; +using Content.Shared.Mobs; namespace Content.Shared.Changeling; @@ -9,10 +10,18 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnMobStateChange); } - private void OnExamine(EntityUid uid, AbsorbedComponent comp, ref ExaminedEvent args) + private void OnExamine(Entity ent, ref ExaminedEvent args) { args.PushMarkup(Loc.GetString("changeling-absorb-onexamine")); } + + private void OnMobStateChange(Entity ent, ref MobStateChangedEvent args) + { + // in case one somehow manages to dehusk someone + if (args.NewMobState != MobState.Dead) + RemComp(ent); + } } diff --git a/Resources/Locale/en-US/Goobstation/changeling/abilities/changeling.ftl b/Resources/Locale/en-US/Goobstation/changeling/abilities/changeling.ftl index f37b5bcb996..38e47243616 100644 --- a/Resources/Locale/en-US/Goobstation/changeling/abilities/changeling.ftl +++ b/Resources/Locale/en-US/Goobstation/changeling/abilities/changeling.ftl @@ -23,8 +23,8 @@ changeling-sting-fail-ling = Someone just tried to silently sting you! changeling-sting = You silently sting {CAPITALIZE(THE($target))} changeling-sting-fail-simplemob = You can't sting a lesser creature! -changeling-sting-extract-max = Disposed of the first stored DNA to free up space for new DNA -changeling-sting-extract-fail = Can't extract DNA, need another target +changeling-sting-extract-fail = Unable to extract DNA +changeling-sting-extract-max = Need to get rid of the stored DNA beforehand changeling-stasis-enter = You enter regenerative stasis changeling-stasis-enter-fail = Can't enter stasis!