* Explosives with timers now properly alert admins when detonating
* add TODO comment
* Check if user is deleted before triggering
/// <summary>
/// The entity that activated this trigger.
+ /// TODO: use WeakEntityReference once the engine PR is merged!
/// </summary>
[DataField, AutoNetworkedField]
public EntityUid? User;
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))
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);