var/global/list/prevent_respawns = list() /hook/death/proc/quit_notify(mob/dead) if(ishuman(dead)) to_chat(dead,"You're dead! If you don't intend to continue playing this round as this character, please use the Quit This Round verb in the OOC tab to free your job slot.") return TRUE /mob/observer/dead/verb/cleanup() set name = "Quit This Round" set category = "OOC" set desc = "Free your job slot, remove yourself from the manifest, and prevent respawning as this character for this round." var/confirm = alert("This will free up your job slot, remove you from the manifest, and allow you to respawn as this character. You can rejoin as another \ character if you like. Do this now?","Quit This Round","Quit Round","Cancel") if(confirm != "Quit Round") return //Why are you clicking this button? if(!mind || !mind.assigned_role) to_chat(src,"Either you haven't played this round, or you already used this verb.") return //Add them to the nope list //prevent_respawns += mind.name //Replaced by PR 4785 //Update any existing objectives involving this mob. for(var/datum/objective/O in all_objectives) if(O.target == src.mind) if(O.owner && O.owner.current) to_chat(O.owner.current,"You get the feeling your target is no longer within your reach...") qdel(O) //Resleeving cleanup if(src.mind.name in SStranscore.backed_up) var/datum/transhuman/mind_record/MR = SStranscore.backed_up[src.mind.name] SStranscore.stop_backup(MR) if(src.mind.name in SStranscore.body_scans) //This uses mind names to avoid people cryo'ing a printed body to delete body scans. var/datum/transhuman/body_record/BR = SStranscore.body_scans[src.mind.name] SStranscore.remove_body(BR) //Job slot cleanup var/job = src.mind.assigned_role job_master.FreeRole(job) //Their objectives cleanup if(src.mind.objectives.len) qdel(src.mind.objectives) src.mind.special_role = null //Cut the PDA manifest (ugh) if(PDA_Manifest.len) PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.medical) if((R.fields["name"] == src.real_name)) qdel(R) for(var/datum/data/record/T in data_core.security) if((T.fields["name"] == src.real_name)) qdel(T) for(var/datum/data/record/G in data_core.general) if((G.fields["name"] == src.real_name)) qdel(G) //This removes them from being 'active' list on join screen src.mind.assigned_role = null //Feedback to_chat(src,"Your job has been free'd up, and you can rejoin as another character or quit. Thanks for using this verb, it helps the server!")