diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index cf3202c2..22a340da 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -61,6 +61,7 @@
var/datum/language_holder/language_holder
var/unconvertable = FALSE
var/late_joiner = FALSE
+ var/lastrespawn = 0
var/force_escaped = FALSE // Set by Into The Sunset command of the shuttle manipulator
diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm
index 2e643cc0..9c47180d 100644
--- a/code/modules/client/verbs/suicide.dm
+++ b/code/modules/client/verbs/suicide.dm
@@ -222,9 +222,9 @@
if(!..())
return
if(IsStun() || IsKnockdown()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide
- to_chat(src, "You can't commit suicide while stunned! ((You can type Ghost instead however.))")
+ to_chat(src, "You can't commit suicide while stunned!")
return
if(restrained())
- to_chat(src, "You can't commit suicide while restrained! ((You can type Ghost instead however.))")
+ to_chat(src, "You can't commit suicide while restrained!")
return
return TRUE
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 0e2e50c2..13774d90 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -269,6 +269,7 @@ Works together with spawning an observer, noted above.
ghost.can_reenter_corpse = can_reenter_corpse
ghost.can_reenter_round = (can_reenter_corpse && !suiciding)
ghost.key = key
+ ghost.client.lastrespawn = world.time + 1800 SECONDS
return ghost
/*
@@ -282,8 +283,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
// CITADEL EDIT
if(istype(loc, /obj/machinery/cryopod))
- var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst still alive you won't be able to re-enter this round! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body")
+ var/response = alert(src, "Are you -sure- you want to ghost?\n(If you ghost now, you will have to wait 30 minutes before you are able to respawn!)","Are you sure you want to ghost?","Ghost","Stay in body")
if(response != "Ghost")//darn copypaste
+ client.lastrespawn = world.time + 1800 SECONDS //set respawn time
return
var/obj/machinery/cryopod/C = loc
C.despawn_occupant()
@@ -295,11 +297,16 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(stat == DEAD)
ghostize(1)
else
+ //Low RP, removing.
+ /*
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst still alive you won't be able to re-enter this round! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body")
if(response != "Ghost")
return //didn't want to ghost after-all
ghostize(0) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
suicide_log(TRUE)
+ */
+ to_chat(usr, "You cannot ghost, if you wish to remove yourself from the round, please locate a cryogenic freezer.")
+ message_admins("[usr] attempted to ghost.")
/mob/camera/verb/ghost()
set category = "OOC"
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 22d70920..ba81bd4e 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -84,6 +84,7 @@
if (client)
client.move_delay = initial(client.move_delay)
+ client.lastrespawn = world.time + 1800 SECONDS //on death, 30 min respawn time.
for(var/s in ownedSoullinks)
var/datum/soullink/S = s
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 9e4cc055..d0b483e7 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -423,9 +423,15 @@
to_chat(usr, "You must be dead to use this!")
return
+ if(usr.client.lastrespawn <= world.time)
+ usr.client.lastrespawn = world.time + 1800 SECONDS
+ else
+ to_chat(usr, "You must wait [DisplayTimeText(usr.client.lastrespawn - world.time)] before respawning!")
+ return
+
log_game("[key_name(usr)] used abandon mob.")
- to_chat(usr, "Please roleplay correctly!")
+ to_chat(usr, "Please roleplay correctly, do not meta-game, and use information from a different character or characters, to influence your actions!")
if(!client)
log_game("[key_name(usr)] AM failed due to disconnect.")
@@ -442,6 +448,7 @@
qdel(M)
return
+ message_admins("[client.ckey] respawned.")
M.key = key
// M.Login() //wat
return
@@ -530,7 +537,7 @@
/mob/proc/is_muzzled()
return 0
-
+
/mob/Stat()
..()
diff --git a/modular_citadel/code/modules/client/client_defines.dm b/modular_citadel/code/modules/client/client_defines.dm
index d816b15d..83b886be 100644
--- a/modular_citadel/code/modules/client/client_defines.dm
+++ b/modular_citadel/code/modules/client/client_defines.dm
@@ -1,2 +1,3 @@
/client
var/cryo_warned = -3000//when was the last time we warned them about not cryoing without an ahelp, set to -5 minutes so that rounstart cryo still warns
+ var/lastrespawn = 0 //when the last time they respawned.