diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 4786b6ce954..9ef78511495 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -65,6 +65,7 @@ Works together with spawning an observer, noted above.
if(key)
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
ghost.can_reenter_corpse = can_reenter_corpse
+ ghost.timeofdeath = timeofdeath //BS12 EDIT
ghost.key = key
return ghost
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 80acad49420..b43afb0b1fa 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -331,14 +331,35 @@ var/list/slot_equipment_priority = list( \
set category = "OOC"
if (!( abandon_allowed ))
+ usr << "\blue Respawn is disabled."
return
if ((stat != 2 || !( ticker )))
usr << "\blue You must be dead to use this!"
return
+ if (ticker.mode.name == "meteor" || ticker.mode.name == "epidemic") //BS12 EDIT
+ usr << "\blue Respawn is disabled."
+ return
+ else
+ var/deathtime = world.time - src.timeofdeath
+ var/deathtimeminutes = round(deathtime / 600)
+ var/pluralcheck = "minute"
+ if(deathtimeminutes == 0)
+ pluralcheck = ""
+ else if(deathtimeminutes == 1)
+ pluralcheck = " [deathtimeminutes] minute and"
+ else if(deathtimeminutes > 1)
+ pluralcheck = " [deathtimeminutes] minutes and"
+ var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
+ usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
+ if (deathtime < 18000)
+ usr << "You must wait 30 minutes to respawn!"
+ return
+ else
+ usr << "You can respawn now, enjoy your new life!"
log_game("[usr.name]/[usr.key] used abandon mob.")
- usr << "\blue Please roleplay correctly!"
+ usr << "\blue Make sure to play a different character, and please roleplay correctly!"
if(!client)
log_game("[usr.key] AM failed due to disconnect.")