diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 9407c3d5f54..fb5246cbae0 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -57,7 +57,10 @@ var/list/image/ghost_images_simple = list() //this is a list of all ghost images
/mob/dead/observer/New(mob/body)
verbs += /mob/dead/observer/proc/dead_tele
-
+
+ if(global.cross_allowed)
+ verbs += /mob/dead/observer/proc/server_hop
+
ghostimage = image(src.icon,src,src.icon_state)
if(icon_state in ghost_forms_with_directions_list)
ghostimage_default = image(src.icon,src,src.icon_state + "_nodir")
@@ -554,6 +557,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
target.key = key
return 1
+/mob/dead/observer/proc/ServerHop()
+ set category = "Ghost"
+ set name = "Server Hop!"
+ set desc= "Jump to the other server"
+ if (alert(src, "Jump to server running at [global.cross_address]?", "Server Hop", "Yes", "No") != "Yes")
+ return 0
+ if (client && global.cross_allowed)
+ src << "Sending you to [global.cross_address]"
+ client << link(global.cross_address)
+ else
+ src << "There is no other server configured!"
//this is a mob verb instead of atom for performance reasons
//see /mob/verb/examinate() in mob.dm for more info