diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm
index f54d519b9e..c08b5d1ae2 100644
--- a/src/DMAPI/tgs.dm
+++ b/src/DMAPI/tgs.dm
@@ -97,10 +97,11 @@
#define TGS_EVENT_WATCHDOG_DETACH 16
// We don't actually implement these 3 events as the DMAPI can never receive them.
// #define TGS_EVENT_WATCHDOG_LAUNCH 17
-// #define TGS_EVENT_WORLD_END_PROCESS 18
-// #define TGS_EVENT_WORLD_DEL 19
+// #define TGS_EVENT_WATCHDOG_CRASH 18
+// #define TGS_EVENT_WORLD_END_PROCESS 19
+// #define TGS_EVENT_WORLD_DEL 20
/// Watchdog event when TgsInitializationComplete() is called. No parameters.
- #define TGS_EVENT_WORLD_PRIME 20
+ #define TGS_EVENT_WORLD_PRIME 21
// OTHER ENUMS
diff --git a/src/Tgstation.Server.Host/Components/Events/EventType.cs b/src/Tgstation.Server.Host/Components/Events/EventType.cs
index 38aed033d9..d0a6b2b4be 100644
--- a/src/Tgstation.Server.Host/Components/Events/EventType.cs
+++ b/src/Tgstation.Server.Host/Components/Events/EventType.cs
@@ -113,6 +113,12 @@ namespace Tgstation.Server.Host.Components.Events
[EventScript("WatchdogLaunch")]
WatchdogLaunch,
+ ///
+ /// Watchdog event when DreamDaemon exits unexpectedly. No parameters.
+ ///
+ [EventScript("WatchdogLaunch")]
+ WatchdogCrash,
+
///
/// In between watchdog DreamDaemon restarts if the process has been force-ended by the DMAPI (TgsEndProcess()). No parameters.
///
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
index 176ed5b106..e334bdc63b 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
@@ -92,10 +92,12 @@ namespace Tgstation.Server.Host.Components.Watchdog
switch (reason)
{
case MonitorActivationReason.ActiveServerCrashed:
- if (Server.TerminationWasRequested)
- await EventConsumer.HandleEvent(EventType.WorldEndProcess, Enumerable.Empty(), cancellationToken).ConfigureAwait(false);
+ var eventType = Server.TerminationWasRequested
+ ? EventType.WorldEndProcess
+ : EventType.WatchdogCrash;
+ await EventConsumer.HandleEvent(eventType, Enumerable.Empty(), cancellationToken).ConfigureAwait(false);
- string exitWord = Server.TerminationWasRequested ? "exited" : "crashed";
+ var exitWord = Server.TerminationWasRequested ? "exited" : "crashed";
if (Server.RebootState == Session.RebootState.Shutdown)
{
// the time for graceful shutdown is now