]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Explosives with timers now properly alert admins when detonating (#40471)
authorbeck-thompson <107373427+beck-thompson@users.noreply.github.com>
Sat, 4 Oct 2025 17:51:36 +0000 (10:51 -0700)
committerGitHub <noreply@github.com>
Sat, 4 Oct 2025 17:51:36 +0000 (17:51 +0000)
* Explosives with timers now properly alert admins when detonating

* add TODO comment

* Check if user is deleted before triggering

Content.Shared/Trigger/Components/TimerTriggerComponent.cs
Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs
Content.Shared/Trigger/Systems/TriggerSystem.cs

index 9cc58d3cda5fe8685671f753a386e051ffdad43c..f413ab5d4f9ed4a4f09aabf10c2b4268c5bb12df 100644 (file)
@@ -75,6 +75,7 @@ public sealed partial class TimerTriggerComponent : Component
 
     /// <summary>
     /// The entity that activated this trigger.
+    /// TODO: use WeakEntityReference once the engine PR is merged!
     /// </summary>
     [DataField, AutoNetworkedField]
     public EntityUid? User;
index 58ac43e5719f411c1b302b18e6e8a61bc4dcff1d..179b04af93a19b4556e78b196a05264f01de1afd 100644 (file)
@@ -168,7 +168,8 @@ public sealed partial class TriggerSystem
 
             if (timer.NextTrigger <= curTime)
             {
-                Trigger(uid, timer.User, timer.KeyOut);
+                var user = TerminatingOrDeleted(timer.User) ? null : timer.User;
+                Trigger(uid, user, timer.KeyOut);
                 // Remove after triggering to prevent it from starting the timer again
                 RemComp<ActiveTimerTriggerComponent>(uid);
                 if (TryComp<AppearanceComponent>(uid, out var appearance))
index ca60901a79d9862cb80ebc83228249149fcfd5b6..25f8d51e116b15d94d14d9d567d82786cbc37bd1 100644 (file)
@@ -107,6 +107,7 @@ public sealed partial class TriggerSystem : EntitySystem
         ent.Comp.NextTrigger = curTime + ent.Comp.Delay;
         var delay = ent.Comp.InitialBeepDelay ?? ent.Comp.BeepInterval;
         ent.Comp.NextBeep = curTime + delay;
+        ent.Comp.User = user;
         Dirty(ent);
 
         var ev = new ActiveTimerTriggerEvent(user);