diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 12b18c00b90..0ea01356f2c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -29,7 +29,6 @@ var/list/admin_verbs_admin = list(
/datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/
/datum/admins/proc/announce, /*priority announce something to all clients.*/
/client/proc/colorooc, /*allows us to set a custom colour for everythign we say in ooc*/
- /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/toggle_view_range, /*changes how far we can see*/
/datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/
/datum/admins/proc/view_atk_log, /*shows the server combat-log, doesn't do anything presently*/
@@ -237,7 +236,6 @@ var/list/admin_verbs_hideable = list(
/datum/admins/proc/toggleguests,
/datum/admins/proc/announce,
/client/proc/colorooc,
- /client/proc/admin_ghost,
/client/proc/toggle_view_range,
/datum/admins/proc/view_txt_log,
/datum/admins/proc/view_atk_log,
@@ -300,7 +298,6 @@ var/list/admin_verbs_mod = list(
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/
/datum/admins/proc/PlayerNotes,
- /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/cmd_mod_say,
/client/proc/cmd_mod_window,
/datum/admins/proc/show_player_info,
@@ -438,30 +435,6 @@ var/list/admin_verbs_mod = list(
to_chat(src, "All of your adminverbs are now visible.")
feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/admin_ghost()
- set category = "Admin"
- set name = "Aghost"
- if(!holder)
- return
- if(istype(mob,/mob/dead/observer))
- //re-enter
- var/mob/dead/observer/ghost = mob
- ghost.can_reenter_corpse = 1 //just in-case.
- ghost.reenter_corpse()
- feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- else if(istype(mob,/mob/new_player))
- to_chat(src, "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.")
- else
- //ghostize
- var/mob/body = mob
- if(body.mind)
- body.mind.isScrying = 1
- body.ghostize(1)
-
- if(body && !body.key)
- body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
- feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
/client/proc/invisimin()
set name = "Invisimin"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index a7b8191893d..2b508361a01 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -535,8 +535,9 @@
to_chat(usr,"Mob is in nullspace!")
return
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/U = usr
+ U.ghost()
sleep(2)
if(!isobserver(C.mob))
return
@@ -567,8 +568,9 @@
to_chat(usr,"Item is in nullspace!")
return
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/L = usr
+ L.ghost()
sleep(2)
if(!isobserver(C.mob))
return
@@ -599,8 +601,9 @@
to_chat(usr,"Dish is in nullspace!")
return
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/L = usr
+ L.ghost()
sleep(2)
if(!isobserver(C.mob))
return
@@ -616,8 +619,9 @@
var/turf/T = locate(href_list["artifactpanel_jumpto"])
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/L = usr
+ L.ghost()
sleep(2)
if(!isobserver(C.mob))
return
@@ -2593,8 +2597,9 @@
var/mob/M = locate(href_list["adminplayerobservejump"])
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/L = usr
+ L.ghost()
sleep(2)
if(!isobserver(usr))
return
@@ -2654,8 +2659,9 @@
var/z = text2num(href_list["Z"])
var/client/C = usr.client
- if(!isobserver(usr))
- C.admin_ghost()
+ if(!isobserver(usr) && isliving(usr))
+ var/mob/living/L = usr
+ L.ghost()
sleep(2)
C.jumptocoord(x,y,z)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 73a6825a0d0..0fe5b13dadf 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -432,6 +432,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
ghostize(1)
else if(stat == DEAD)
ghostize(1)
+ else if(check_rights(R_ADMIN))
+ if(mind)
+ mind.isScrying = 1
+ ghostize(1)
+ if(!key)
+ key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
else
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost, you will not be able to re-enter your current body! You can't change your mind so choose wisely!)","Are you sure you want to ghost?","Ghost","Stay in body")
if(response != "Ghost")
diff --git a/code/modules/mob/dead/observer/verbs.dm b/code/modules/mob/dead/observer/verbs.dm
index 35b63f4270f..3844a61785b 100644
--- a/code/modules/mob/dead/observer/verbs.dm
+++ b/code/modules/mob/dead/observer/verbs.dm
@@ -1,8 +1,16 @@
+/mob/dead/observer/verb/ghost()
+ set category = "OOC"
+ set name = "Ghost"
+
+ reenter_corpse()
+
/mob/dead/observer/verb/reenter_corpse()
set category = "Ghost"
set name = "Re-enter Corpse"
var/mob/M = get_top_transmogrification()
+ if(check_rights(R_ADMIN)) // admins
+ can_reenter_corpse = 1 //just in-case.
if(!M.client)
return
if(!(mind && mind.current && can_reenter_corpse))
@@ -547,7 +555,7 @@
var/response = alert(src, "Are you -sure- you want to become a space hobo?","Are you sure you want to ramble?","Yeah!","Nope!")
if(response != "Yeah!" || !src.key)
return //Hit the wrong key...again.
-
+
var/mob/living/carbon/human/hobo = new(pick(hobostart))
hobo.key = src.key
hobo.set_species(pick(200;"Human",50;"Vox",50;"Insectoid",25;"Diona",25;"Grey",1;"Tajaran",10;"Unathi"))
diff --git a/interface/interface.dm b/interface/interface.dm
index 04c00edced6..bec9c17150f 100644
--- a/interface/interface.dm
+++ b/interface/interface.dm
@@ -125,7 +125,6 @@ For an exhaustive list please visit http://ss13.moe/wiki/index.php/Shortcuts
var/admin = {"
Admin:
-\tF5 = Aghost (admin-ghost)
\tF6 = player-panel-new
\tF7 = admin-pm
\tF8 = Invisimin
diff --git a/interface/skin.dmf b/interface/skin.dmf
index 2f8cd6c24a9..2003f9bcf56 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -196,7 +196,7 @@ macro "macro"
command = ".Me"
elem "F5"
name = "F5"
- command = "Aghost"
+ command = "Ghost"
elem "F6"
name = "F6"
command = "Player-Panel-New"
@@ -495,7 +495,7 @@ macro "hotkeymode"
command = ".Me"
elem "F5"
name = "F5"
- command = "Aghost"
+ command = "Ghost"
elem "F6"
name = "F6"
command = "Player-Panel-New"
diff --git a/interface/skin_azerty.dmf b/interface/skin_azerty.dmf
index 2e5f01c7d31..f078e3ed5d8 100644
--- a/interface/skin_azerty.dmf
+++ b/interface/skin_azerty.dmf
@@ -196,7 +196,7 @@ macro "macro"
command = "me"
elem "F5"
name = "F5"
- command = "Aghost"
+ command = "Ghost"
elem "F6"
name = "F6"
command = "Player-Panel-New"
@@ -477,7 +477,7 @@ macro "hotkeymode"
command = ".Me"
elem "F5"
name = "F5"
- command = "Aghost"
+ command = "Ghost"
elem "F6"
name = "F6"
command = "Player-Panel-New"