Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
fffce0a
removes guerilla gloves from uplink
harryhulse12-alt Dec 7, 2025
4b7fc74
oops
harryhulse12-alt Dec 7, 2025
afba2da
Merge branch 'master' of https://github.com/harryhulse12-alt/mapping
harryhulse12-alt Jan 1, 2026
b4ced3a
Medbounty
harryhulse12-alt Jan 11, 2026
fe62297
Merge branch 'master' into medbounty
harryhulse12-alt Jan 11, 2026
1f42e59
Update Resources/Prototypes/_Goobstation/Recipes/Lathes/Packs/medical…
harryhulse12-alt Jan 12, 2026
6ae6984
Update Resources/Prototypes/Catalog/VendingMachines/Inventories/medic…
harryhulse12-alt Jan 12, 2026
c59c7a7
Update Resources/Prototypes/_Goobstation/Recipes/Lathes/Packs/securit…
harryhulse12-alt Jan 12, 2026
ccfb9d4
Update Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml
harryhulse12-alt Jan 12, 2026
c9a9d93
Merge branch 'master' into medbounty
harryhulse12-alt Jan 12, 2026
88fc732
Okai Fen
harryhulse12-alt Jan 12, 2026
e9dcc5a
Merge branch 'medbounty' of https://github.com/harryhulse12-alt/mappi…
harryhulse12-alt Jan 12, 2026
4de0451
Soft Critical Port & Implementation (#2359)
YaraaraY Dec 22, 2025
3f435df
Devoursystemchange
harryhulse12-alt Jan 24, 2026
7526018
removedtypingtypechanged
harryhulse12-alt Jan 24, 2026
b7a5ae5
movercontroller and mobstatesystem
harryhulse12-alt Jan 24, 2026
dd07a9e
sharedtyping+mover
harryhulse12-alt Jan 24, 2026
11d50fd
it works
harryhulse12-alt Jan 24, 2026
634472d
Merge branch 'master' into medbounty
harryhulse12-alt Jan 24, 2026
3e6bc34
maybefix?
harryhulse12-alt Jan 31, 2026
63c2270
try2
harryhulse12-alt Jan 31, 2026
652bdc3
Merge branch 'master' into medbounty
harryhulse12-alt Jan 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
// SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
// SPDX-FileCopyrightText: 2025 gus <august.eymann@gmail.com>
// SPDX-FileCopyrightText: 2025 kurokoTurbo <92106367+kurokoTurbo@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -482,7 +484,7 @@ private static string GetStatus(MobState mobState)
return mobState switch
{
MobState.Alive => Loc.GetString("health-analyzer-window-entity-alive-text"),
MobState.Critical => Loc.GetString("health-analyzer-window-entity-critical-text"),
MobState.Critical or MobState.SoftCritical or MobState.HardCritical => Loc.GetString("health-analyzer-window-entity-critical-text"),
MobState.Dead => Loc.GetString("health-analyzer-window-entity-dead-text"),
_ => Loc.GetString("health-analyzer-window-entity-unknown-text"),
};
Expand Down
11 changes: 7 additions & 4 deletions Content.Client/Overlays/EntityHealthBarOverlay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
// SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
// SPDX-FileCopyrightText: 2025 gus <august.eymann@gmail.com>
// SPDX-FileCopyrightText: 2025 kurokoTurbo <92106367+kurokoTurbo@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tayrtahn <tayrtahn@gmail.com>
// SPDX-FileCopyrightText: 2025 Toastermeister <215405651+Toastermeister@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand All @@ -108,7 +112,7 @@ namespace Content.Client.Overlays;
/// <summary>
/// Overlay that shows a health bar on mobs.
/// </summary>
public sealed class EntityHealthBarOverlay : Overlay
public sealed partial class EntityHealthBarOverlay : Overlay
{
private readonly IEntityManager _entManager;
private readonly IPrototypeManager _prototype;
Expand Down Expand Up @@ -173,7 +177,6 @@ protected override void Draw(in OverlayDrawArgs args)
if (!bounds.Translated(worldPos).Intersects(args.WorldAABB))
continue;

// we are all progressing towards death every day
if (CalcProgress(uid, mobStateComponent, damageableComponent, mobThresholdsComponent) is not { } deathProgress)
continue;

Expand Down Expand Up @@ -217,7 +220,7 @@ protected override void Draw(in OverlayDrawArgs args)
/// Returns a ratio between 0 and 1, and whether the entity is in crit.
/// </summary>
private (float ratio, bool inCrit)? CalcProgress(EntityUid uid, MobStateComponent component, DamageableComponent dmg, MobThresholdsComponent thresholds)
{
{
var totalDamage = _mobThresholdSystem.CheckVitalDamage(uid, dmg); // GoobStation
if (_mobStateSystem.IsAlive(uid, component))
{
Expand All @@ -234,7 +237,7 @@ protected override void Draw(in OverlayDrawArgs args)

if (_mobStateSystem.IsCritical(uid, component))
{
if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold, thresholds) ||
if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.SoftCritical, out var critThreshold, thresholds) ||
!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Dead, out var deadThreshold, thresholds))
{
return (1, true);
Expand Down
27 changes: 25 additions & 2 deletions Content.Client/Overlays/ShowHealthIconsSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,18 @@
// SPDX-FileCopyrightText: 2024 voidnull000 <18663194+voidnull000@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Milon <milonpl.git@proton.me>
// SPDX-FileCopyrightText: 2024 Tadeo <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

using Content.Shared.Atmos.Rotting;
using Content.Shared.Damage;
using Content.Shared.Inventory.Events;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Content.Shared.Overlays;
using Content.Shared.StatusIcon;
Expand All @@ -91,6 +97,7 @@

namespace Content.Client.Overlays;


/// <summary>
/// Shows a healthy icon on mobs.
/// </summary>
Expand Down Expand Up @@ -162,9 +169,25 @@ private IReadOnlyList<HealthIconPrototype> DecideHealthIcons(Entity<DamageableCo
{
// Since there is no MobState for a rotting mob, we have to deal with this case first.
if (HasComp<RottingComponent>(entity) && _prototypeMan.TryIndex(damageableComponent.RottingIcon, out var rottingIcon))
{
result.Add(rottingIcon);
else if (damageableComponent.HealthIcons.TryGetValue(state.CurrentState, out var value) && _prototypeMan.TryIndex(value, out var icon))
result.Add(icon);
}
else
{
// Try to get the specific state icon
if (damageableComponent.HealthIcons.TryGetValue(state.CurrentState, out var value))
{
if (_prototypeMan.TryIndex(value, out var icon))
result.Add(icon);
}
// Fallback: If in SoftCrit or HardCrit but no icon found, use the standard Critical icon
else if ((state.CurrentState == MobState.SoftCritical || state.CurrentState == MobState.HardCritical) &&
damageableComponent.HealthIcons.TryGetValue(MobState.Critical, out var critValue))
{
if (_prototypeMan.TryIndex(critValue, out var critIcon))
result.Add(critIcon);
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
// SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
// SPDX-FileCopyrightText: 2025 gus <august.eymann@gmail.com>
// SPDX-FileCopyrightText: 2025 kurokoTurbo <92106367+kurokoTurbo@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 Tojo <32783144+Alecksohs@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -199,6 +204,8 @@ private void UpdateOverlays(EntityUid entity,

break;
}
case MobState.SoftCritical:
case MobState.HardCritical:
case MobState.Critical:
{
_overlay.CritLevel = FixedPoint2.Min(1f,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@
// SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
// SPDX-FileCopyrightText: 2025 kurokoTurbo <92106367+kurokoTurbo@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 RichardBlonski <48651647+RichardBlonski@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
// SPDX-FileCopyrightText: 2025 Steve <marlumpy@gmail.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 marc-pelletier <113944176+marc-pelletier@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: MIT

Expand Down Expand Up @@ -192,7 +199,7 @@ protected override void Draw(in OverlayDrawArgs args)
}
// Goobstation end

level = State != MobState.Critical ? _oldOxygenLevel : 1f;
level = State != MobState.Critical && State != MobState.HardCritical ? _oldOxygenLevel : 1f;

if (level > 0f)
{
Expand Down
30 changes: 28 additions & 2 deletions Content.Server/Chat/Systems/ChatSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,12 @@
// SPDX-FileCopyrightText: 2025 ash lea <ashkitten@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 pathetic meowmeow <uhhadd@gmail.com>
// SPDX-FileCopyrightText: 2024 kbarkevich <24629810+kbarkevich@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 duston <66768086+dch-GH@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -348,6 +354,16 @@ public void TrySendInGameICMessage(
// and i dont feel like vibe checking 50 code paths
// so we set this here
// todo free me from chat code

// check if the entity is forced to whisper and convert to local whisper if yes
if (!ignoreActionBlocker && _actionBlocker.CanSpeak(source, out var onlyWhisper))
{
if (desiredType == InGameICChatType.Speak && onlyWhisper)
{
desiredType = InGameICChatType.Whisper;
}
}

if (player != null)
{
_chatManager.EnsurePlayer(player.UserId).AddEntity(GetNetEntity(source));
Expand Down Expand Up @@ -672,7 +688,10 @@ private void SendEntitySpeak(
Color? colorOverride = null // Goobstation
)
{
if (!_actionBlocker.CanSpeak(source) && !ignoreActionBlocker)
if (!_actionBlocker.CanSpeak(source, out var onlyWhisper) && !ignoreActionBlocker)
return;

if (onlyWhisper)
return;

// The Original Message [-] Einstein Engines - Language
Expand Down Expand Up @@ -780,16 +799,23 @@ private void SendEntityWhisper(
Color? colorOverride = null // Goobstation
)
{
if (!_actionBlocker.CanSpeak(source) && !ignoreActionBlocker)
if (!_actionBlocker.CanSpeak(source, out var onlyWhisper) && !ignoreActionBlocker)
return;

// Goob edit start
var message = FormattedMessage.RemoveMarkupOrThrow(originalMessage);
message = FormattedMessage.EscapeText(message);
message = TransformSpeech(source, message, language); // Einstein Engines - Language
// Goob edit end

//Funky port start - if a channel is present but the user must whisper, force it to be a local whisper
if (channel != null && onlyWhisper)
channel = null;

message = TransformSpeech(source, FormattedMessage.RemoveMarkupOrThrow(originalMessage), language);
if (message.Length == 0)
return;
//Funky port end

// get the entity's name by visual identity (if no override provided).
string nameIdentity = FormattedMessage.EscapeText(nameOverride ?? Identity.Name(source, EntityManager));
Expand Down
6 changes: 5 additions & 1 deletion Content.Server/Damage/ForceSay/DamageForceSaySystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
// SPDX-FileCopyrightText: 2024 Tayrtahn <tayrtahn@gmail.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Coolsurf6 <coolsurf24@yahoo.com.au>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -131,7 +135,7 @@ private void OnDamageChanged(EntityUid uid, DamageForceSayComponent component, D

private void OnMobStateChanged(EntityUid uid, DamageForceSayComponent component, MobStateChangedEvent args)
{
if (args is not { OldMobState: MobState.Alive, NewMobState: MobState.Critical or MobState.Dead })
if (args is not { OldMobState: MobState.Alive, NewMobState: MobState.Critical or MobState.SoftCritical or MobState.HardCritical or MobState.Dead })
return;

// no suffix for the drama
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// SPDX-FileCopyrightText: 2024 SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand All @@ -21,6 +23,12 @@ public override bool Condition(EntityEffectBaseArgs args)
{
if (mobState.CurrentState == Mobstate)
return true;

if (Mobstate == MobState.Critical &&
(mobState.CurrentState == MobState.SoftCritical || mobState.CurrentState == MobState.HardCritical))
{
return true;
}
}

return false;
Expand Down
5 changes: 4 additions & 1 deletion Content.Server/Explosion/EntitySystems/TriggerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@
// SPDX-FileCopyrightText: 2025 TemporalOroboros <TemporalOroboros@gmail.com>
// SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 JoulesBerg <104539820+JoulesBerg@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
Expand Down Expand Up @@ -354,7 +357,7 @@ private void HandleRattleTrigger(EntityUid uid, RattleComponent component, Trigg
return;

// Sends a message to the radio channel specified by the implant
if (mobstate.CurrentState == MobState.Critical)
if (mobstate.CurrentState == MobState.Critical || mobstate.CurrentState == MobState.SoftCritical)
_radioSystem.SendRadioMessage(uid, critMessage, _prototypeManager.Index<RadioChannelPrototype>(component.RadioChannel), uid);
if (mobstate.CurrentState == MobState.Dead)
_radioSystem.SendRadioMessage(uid, deathMessage, _prototypeManager.Index<RadioChannelPrototype>(component.RadioChannel), uid);
Expand Down
8 changes: 8 additions & 0 deletions Content.Server/Ghost/Roles/GhostRoleSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@
// SPDX-FileCopyrightText: 2025 Aviu00 <93730715+Aviu00@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Errant <35878406+Errant-4@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Josh Hilsberg <thejoulesberg@gmail.com>
// SPDX-FileCopyrightText: 2025 JoulesBerg <104539820+JoulesBerg@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 V <97265903+formlessnameless@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 corresp0nd <46357632+corresp0nd@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
Expand Down Expand Up @@ -149,6 +155,8 @@ private void OnMobStateChanged(Entity<GhostTakeoverAvailableComponent> component
break;
}
case MobState.Critical:
case MobState.SoftCritical:
case MobState.HardCritical:
case MobState.Dead:
UnregisterGhostRole((component, ghostRole));
break;
Expand Down
6 changes: 5 additions & 1 deletion Content.Server/Guardian/GuardianSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
// SPDX-FileCopyrightText: 2025 No Elka <125199100+NoElkaTheGod@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Tayrtahn <tayrtahn@gmail.com>
// SPDX-FileCopyrightText: 2025 YoungThug <ramialanbagy@gmail.com>
// SPDX-FileCopyrightText: 2025 Tay <td12233a@gmail.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 pa.pecherskij <pa.pecherskij@interfax.ru>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -312,7 +316,7 @@ private void OnHostStateChange(EntityUid uid, GuardianHostComponent component, M

TryComp<GuardianComponent>(component.HostedGuardian, out var guardianComp);

if (args.NewMobState == MobState.Critical)
if (args.NewMobState == MobState.Critical || args.NewMobState == MobState.SoftCritical) //Funky port - checks for soft crit
{
_popupSystem.PopupEntity(Loc.GetString("guardian-host-critical-warn"), component.HostedGuardian.Value, component.HostedGuardian.Value);
if (guardianComp != null)
Expand Down
9 changes: 8 additions & 1 deletion Content.Server/KillTracking/KillTrackerComponent.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-FileCopyrightText: 2023 Kara <lunarautomaton6@gmail.com>
// SPDX-FileCopyrightText: 2023 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: MIT

Expand All @@ -20,7 +22,12 @@ public sealed partial class KillTrackerComponent : Component
/// The mobstate that registers as a "kill"
/// </summary>
[DataField("killState")]
public MobState KillState = MobState.Critical;
public List<MobState> KillState = new()
{
MobState.Critical,
MobState.HardCritical,
MobState.Dead
};

/// <summary>
/// A dictionary of sources and how much damage they've done to this entity over time.
Expand Down
4 changes: 3 additions & 1 deletion Content.Server/KillTracking/KillTrackingSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// SPDX-FileCopyrightText: 2024 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
// SPDX-FileCopyrightText: 2024 LordCarve <27449516+LordCarve@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand Down Expand Up @@ -50,7 +52,7 @@ private void OnDamageChanged(EntityUid uid, KillTrackerComponent component, Dama

private void OnMobStateChanged(EntityUid uid, KillTrackerComponent component, MobStateChangedEvent args)
{
if (args.NewMobState != component.KillState || args.OldMobState >= args.NewMobState)
if (component.KillState.Contains(args.NewMobState))
return;

// impulse is the entity that did the finishing blow.
Expand Down
6 changes: 4 additions & 2 deletions Content.Server/Mobs/DeathgaspSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
// SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
// SPDX-FileCopyrightText: 2024 keronshb <54602815+keronshb@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 YaraaraY <158123176+YaraaraY@users.noreply.github.com>
// SPDX-FileCopyrightText: 2025 taydeo <td12233a@gmail.com>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

Expand All @@ -30,7 +32,7 @@ private void OnMobStateChanged(EntityUid uid, DeathgaspComponent component, MobS
{
// don't deathgasp if they arent going straight from crit to dead
if (component.NeedsCritical // Goobstation
&& args.OldMobState != MobState.Critical
&& args.OldMobState != MobState.HardCritical
|| args.NewMobState != MobState.Dead)
return;

Expand All @@ -52,4 +54,4 @@ public bool Deathgasp(EntityUid uid, DeathgaspComponent? component = null)

return true;
}
}
}
Loading
Loading