From 6872650b8411fced4cc0bb7275dcfb6fd11df67a Mon Sep 17 00:00:00 2001 From: V <97265903+formlessnameless@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:08:05 -0600 Subject: [PATCH] lings enter stasis on death automatically and updated stasis fail messages --- .../Changeling/ChangelingSystem.Abilities.cs | 10 ++++++++-- .../_Goobstation/Changeling/ChangelingSystem.cs | 10 ++++++++++ .../_Goobstation/changeling/abilities/changeling.ftl | 3 ++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Content.Server/_Goobstation/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/_Goobstation/Changeling/ChangelingSystem.Abilities.cs index e991318f5ef6..0d26c4407664 100644 --- a/Content.Server/_Goobstation/Changeling/ChangelingSystem.Abilities.cs +++ b/Content.Server/_Goobstation/Changeling/ChangelingSystem.Abilities.cs @@ -244,9 +244,15 @@ private void OnTransform(EntityUid uid, ChangelingComponent comp, ref Changeling private void OnEnterStasis(EntityUid uid, ChangelingComponent comp, ref EnterStasisEvent args) { - if (comp.IsInStasis || HasComp(uid)) + if (comp.IsInStasis) { - _popup.PopupEntity(Loc.GetString("changeling-stasis-enter-fail"), uid, uid); + _popup.PopupEntity(Loc.GetString("changeling-stasis-enter-fail-already"), uid, uid); + return; + } + + if (HasComp(uid)) + { + _popup.PopupEntity(Loc.GetString("changeling-stasis-enter-fail-eaten"), uid, uid); return; } diff --git a/Content.Server/_Goobstation/Changeling/ChangelingSystem.cs b/Content.Server/_Goobstation/Changeling/ChangelingSystem.cs index a1c4515dff74..cf74757abe52 100644 --- a/Content.Server/_Goobstation/Changeling/ChangelingSystem.cs +++ b/Content.Server/_Goobstation/Changeling/ChangelingSystem.cs @@ -693,7 +693,17 @@ private void OnStartup(EntityUid uid, ChangelingComponent comp, ref ComponentSta private void OnMobStateChange(EntityUid uid, ChangelingComponent comp, ref MobStateChangedEvent args) { if (args.NewMobState == MobState.Dead) + { RemoveAllChangelingEquipment(uid, comp); + // Automatically put the ling into stasis on death if there's enough biomass + if (!comp.IsInStasis && !HasComp(uid) && comp.Biomass > 1) + { + comp.Chemicals = 0f; + comp.Biomass -= 1; + comp.IsInStasis = true; + } + } + } private void OnDamageChange(Entity ent, ref DamageChangedEvent args) diff --git a/Resources/Locale/en-US/_Goobstation/changeling/abilities/changeling.ftl b/Resources/Locale/en-US/_Goobstation/changeling/abilities/changeling.ftl index 3ec8faf9f3e7..221308559a2c 100644 --- a/Resources/Locale/en-US/_Goobstation/changeling/abilities/changeling.ftl +++ b/Resources/Locale/en-US/_Goobstation/changeling/abilities/changeling.ftl @@ -44,7 +44,8 @@ changeling-sting-extract-fail = {CAPITALIZE(THE($target))} lacks extractable DNA changeling-sting-extract-max = We cannot extract more DNA until we assume a new form. changeling-stasis-enter = We enter regenerative stasis. -changeling-stasis-enter-fail = We cannot enter stasis. +changeling-stasis-enter-fail-already = We are already in stasis. +changeling-stasis-enter-fail-eaten = We have been consumed, and cannot enter stasis. changeling-stasis-exit = We rise from stasis. changeling-stasis-exit-fail = We are not in stasis. changeling-stasis-exit-fail-dead = We have been hollowed, and cannot rise from stasis.