diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index 9a09479304..f82677cb5c 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -26,6 +26,7 @@ using Content.Shared.Examine; using Content.Server.DoAfter; using Content.Server.Explosion.EntitySystems; using Content.Server.Kitchen.Components; +using Content.Shared.Weapons.Melee.EnergySword; using Content.Shared.Singularity.Components; using System; using Robust.Shared.Audio; @@ -449,19 +450,27 @@ public sealed class SupermatterSystem : EntitySystem return; } - _adminLogger.Add(LogType.Action, LogImpact.High, $"{EntityManager.ToPrettyString(args.User):player} is trying to extract a sliver from the supermatter crystal."); - _popup.PopupEntity(Loc.GetString("supermatter-tamper-begin"), args.User, args.User); - - var doAfterArgs = new DoAfterArgs(EntityManager, args.User, 30, new SupermatterDoAfterEvent(), uid, target: uid, used: args.Used) + if (HasComp(args.Used)) { - BreakOnDamage = true, - BreakOnHandChange = true, - BreakOnMove = true, - BreakOnWeightlessMove = false, - NeedHand = true, - RequireCanInteract = true, - }; - _doAfter.TryStartDoAfter(doAfterArgs); + _adminLogger.Add(LogType.Action, LogImpact.High, $"{EntityManager.ToPrettyString(args.User):player} is trying to extract a sliver from the supermatter crystal."); + _popup.PopupEntity(Loc.GetString("supermatter-tamper-begin"), args.User, args.User); + + var doAfterArgs = new DoAfterArgs(EntityManager, args.User, 30, new SupermatterDoAfterEvent(), uid, target: uid, used: args.Used) + { + BreakOnDamage = true, + BreakOnHandChange = true, + BreakOnMove = true, + BreakOnWeightlessMove = false, + NeedHand = true, + RequireCanInteract = true, + }; + + _doAfter.TryStartDoAfter(doAfterArgs); + } + else + { + Vaporize(args.Used, uid); + } } } diff --git a/Content.Shared/Weapons/Melee/EnergySword/SMCuttableComponent.cs b/Content.Shared/Weapons/Melee/EnergySword/SMCuttableComponent.cs new file mode 100644 index 0000000000..7fb21ebbc7 --- /dev/null +++ b/Content.Shared/Weapons/Melee/EnergySword/SMCuttableComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Weapons.Melee.EnergySword; + +/// +/// Applies to items that are capable of cutting supermatter slivers +/// +[RegisterComponent] +public sealed partial class SMCuttableComponent : Component +{} diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index d4ebe0b421..1e37968360 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -72,6 +72,7 @@ shader: unshaded - type: Reflect # Sunrise-start + - type: SMCuttable - type: Tag tags: - NoPaint