diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm index 36f2a77914..ebf47439d6 100644 --- a/code/controllers/subsystems/transcore_vr.dm +++ b/code/controllers/subsystems/transcore_vr.dm @@ -15,7 +15,7 @@ SUBSYSTEM_DEF(transcore) init_order = INIT_ORDER_TRANSCORE // THINGS - var/overdue_time = 15 MINUTES + var/overdue_time = 6 MINUTES // Has to be a multiple of wait var, or else will just round up anyway. var/current_step = SSTRANSCORE_IMPLANTS @@ -113,8 +113,9 @@ SUBSYSTEM_DEF(transcore) curr_MR.dead_state = MR_NORMAL else if(curr_MR.dead_state != MR_DEAD) //First time switching to dead - db.notify(curr_MR.mindname) - curr_MR.last_notification = world.time + if(curr_MR.do_notify) + db.notify(curr_MR.mindname) + curr_MR.last_notification = world.time curr_MR.dead_state = MR_DEAD if(MC_TICK_CHECK) @@ -250,12 +251,9 @@ SUBSYSTEM_DEF(transcore) return 1 // Send a past-due notification to the medical radio channel. -/datum/transcore_db/proc/notify(var/name, var/repeated = FALSE) +/datum/transcore_db/proc/notify(var/name) ASSERT(name) - if(repeated) - global_announcer.autosay("This is a repeat notification that [name] is past-due for a mind backup.", "TransCore Oversight", "Medical") - else - global_announcer.autosay("[name] is past-due for a mind backup.", "TransCore Oversight", "Medical") + global_announcer.autosay("[name] is past-due for a mind backup.", "TransCore Oversight", "Medical") // Called from mind_record to add itself to the transcore. /datum/transcore_db/proc/add_backup(var/datum/transhuman/mind_record/MR) diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm index 36f5761dde..df68f41851 100644 --- a/code/modules/mob/dead/observer/observer_vr.dm +++ b/code/modules/mob/dead/observer/observer_vr.dm @@ -70,15 +70,34 @@ var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name] if(!(record.dead_state == MR_DEAD)) to_chat(src, "Your backup is not past-due yet.") - else if((world.time - record.last_notification) < 10 MINUTES) + else if((world.time - record.last_notification) < 5 MINUTES) to_chat(src, "Too little time has passed since your last notification.") else - db.notify(record.mindname, TRUE) + db.notify(record.mindname) record.last_notification = world.time to_chat(src, "New notification has been sent.") else to_chat(src,"No backup record could be found, sorry.") +/mob/observer/dead/verb/backup_delay() + set category = "Ghost" + set name = "Cancel Transcore Notification" + set desc = "You can use this to avoid automatic backup notification happening. Manual notification can still be used." + + if(!mind) + to_chat(src,"Your ghost is missing game values that allow this functionality, sorry.") + return + var/datum/transcore_db/db = SStranscore.db_by_mind_name(mind.name) + if(db) + var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name] + if(record.dead_state == MR_DEAD || !(record.do_notify)) + to_chat(src, "The notification has already happened or been delayed.") + else + record.do_notify = FALSE + to_chat(src, "Overdue mind backup notification delayed successfully.") + else + to_chat(src,"No backup record could be found, sorry.") + /mob/observer/dead/verb/findghostpod() //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" set name = "Find Ghost Pod" diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm index 1ee1c3fdfb..5f3cb027c5 100644 --- a/code/modules/resleeving/infocore_records.dm +++ b/code/modules/resleeving/infocore_records.dm @@ -15,6 +15,7 @@ var/dead_state = 0 var/last_update = 0 var/last_notification + var/do_notify = TRUE //Backend var/ckey = ""