diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index f35a6eaa15..10ee2dfb0c 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -723,7 +723,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
//Irregular objects
var/icon/AMicon = icon(AM.icon, AM.icon_state)
var/icon/AMiconheight = AMicon.Height()
- var/icon/AMiconwidth = AMicon.Width()
+ var/icon/AMiconwidth = AMicon.Width()
if(AMiconheight != world.icon_size || AMiconwidth != world.icon_size)
pixel_x_offset += ((AMicon.Width()/world.icon_size)-1)*(world.icon_size*0.5)
pixel_y_offset += ((AMicon.Height()/world.icon_size)-1)*(world.icon_size*0.5)
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 1241708b5c..bb41c82ddb 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -161,3 +161,4 @@ GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four",
return L
GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings())
+GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!"))
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index a3d47b465e..61f93dcc1b 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -217,7 +217,27 @@ SUBSYSTEM_DEF(shuttle)
emergency.request(null, signal_origin, html_decode(emergency_reason), 0)
log_game("[key_name(user)] has called the shuttle.")
- message_admins("[key_name_admin(user)] has called the shuttle.")
+ message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)")
+
+/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message)
+ if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer)
+ return
+ emergency.cancel(/area/centcom)
+
+ if(!admiral_message)
+ admiral_message = pick(GLOB.admiral_messages)
+ var/intercepttext = "NanoTrasen Update: Request For Shuttle.
\
+ To whom it may concern:
\
+ We have taken note of the situation upon [station_name()] and have come to the \
+ conclusion that it does not warrant the abandonment of the station.
\
+ If you do not agree with our opinion we suggest that you open a direct \
+ line with us and explain the nature of your crisis.
\
+ This message has been automatically generated based upon readings from long \
+ range diagnostic tools. To assure the quality of your request every finalized report \
+ is reviewed by an on-call rear admiral.
\
+ Rear Admiral's Notes: \
+ [admiral_message]"
+ print_command_report(intercepttext, announce = TRUE)
// Called when an emergency shuttle mobile docking port is
// destroyed, which will only happen with admin intervention
@@ -523,4 +543,3 @@ SUBSYSTEM_DEF(shuttle)
for(var/obj/docking_port/mobile/M in mobile)
if(M.is_in_shuttle_bounds(A))
return TRUE
-
\ No newline at end of file
diff --git a/code/game/gamemodes/gang/gang_items.dm.rej b/code/game/gamemodes/gang/gang_items.dm.rej
deleted file mode 100644
index 65627fb219..0000000000
--- a/code/game/gamemodes/gang/gang_items.dm.rej
+++ /dev/null
@@ -1,44 +0,0 @@
-diff a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm (rejected hunks)
-@@ -131,7 +195,7 @@
- id = "pistol_ammo"
- cost = 10
- item_path = /obj/item/ammo_box/magazine/m10mm
--
-+
- /datum/gang_item/weapon/sniper
- name = ".50cal Sniper Rifle"
- id = "sniper"
-@@ -156,8 +220,8 @@
- id = "uzi_ammo"
- cost = 40
- item_path = /obj/item/ammo_box/magazine/uzim9mm
--
--
-+
-+
- ///////////////////
- //EQUIPMENT
- ///////////////////
-@@ -171,7 +235,7 @@
- id = "spraycan"
- cost = 5
- item_path = /obj/item/toy/crayon/spraycan/gang
--
-+
- /datum/gang_item/equipment/sharpener
- name = "Sharpener"
- id = "whetstone"
-@@ -305,11 +369,11 @@
- if(obj.density)
- to_chat(user, "There's not enough room here!")
- return FALSE
--
-+
- if(dominator_excessive_walls(user))
- to_chat(user, "span class='warning'>The dominator will not function here! The dominator requires an open space within three standard units so that walls do not interfere with the signal.")
- return FALSE
--
-+
- if(!(usrarea.type in gang.territory|gang.territory_new))
- to_chat(user, "The dominator can be spawned only on territory controlled by your gang!")
- return FALSE
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index b48df00b7a..4756318ee7 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -282,6 +282,11 @@
message_admins("[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds.")
href_list["secrets"] = "check_antagonist"
+ else if(href_list["trigger_centcom_recall"])
+ if(!check_rights(R_ADMIN))
+ return
+
+ usr.client.trigger_centcom_recall()
else if(href_list["toggle_continuous"])
if(!check_rights(R_ADMIN))
return
@@ -1170,7 +1175,7 @@
if(!check_rights(R_ADMIN))
return
- if(SSticker.HasRoundStarted())
+ if(SSticker.HasRoundStarted())
return alert(usr, "The game has already started.", null, null, null, null)
var/dat = {"What mode do you wish to play?
"}
for(var/mode in config.modes)
@@ -1184,7 +1189,7 @@
if(!check_rights(R_ADMIN))
return
- if(SSticker.HasRoundStarted())
+ if(SSticker.HasRoundStarted())
return alert(usr, "The game has already started.", null, null, null, null)
if(GLOB.master_mode != "secret")
return alert(usr, "The game mode has to be secret!", null, null, null, null)
@@ -1199,21 +1204,21 @@
if(!check_rights(R_ADMIN|R_SERVER))
return
- if (SSticker.HasRoundStarted())
+ if (SSticker.HasRoundStarted())
return alert(usr, "The game has already started.", null, null, null, null)
GLOB.master_mode = href_list["c_mode2"]
log_admin("[key_name(usr)] set the mode as [GLOB.master_mode].")
message_admins("[key_name_admin(usr)] set the mode as [GLOB.master_mode].")
to_chat(world, "The mode is now: [GLOB.master_mode]")
Game() // updates the main game menu
- SSticker.save_mode(GLOB.master_mode)
+ SSticker.save_mode(GLOB.master_mode)
.(href, list("c_mode"=1))
else if(href_list["f_secret2"])
if(!check_rights(R_ADMIN|R_SERVER))
return
- if(SSticker.HasRoundStarted())
+ if(SSticker.HasRoundStarted())
return alert(usr, "The game has already started.", null, null, null, null)
if(GLOB.master_mode != "secret")
return alert(usr, "The game mode has to be secret!", null, null, null, null)
@@ -1788,18 +1793,18 @@
if(!check_rights(R_ADMIN))
return
- var/mob/M = locate(href_list["languagemenu"]) in GLOB.mob_list
- if(!ismob(M))
- to_chat(usr, "This can only be used on instances of type /mob.")
+ var/mob/M = locate(href_list["languagemenu"]) in GLOB.mob_list
+ if(!ismob(M))
+ to_chat(usr, "This can only be used on instances of type /mob.")
return
- var/datum/language_holder/H = M.get_language_holder()
- H.open_language_menu(usr)
+ var/datum/language_holder/H = M.get_language_holder()
+ H.open_language_menu(usr)
else if(href_list["traitor"])
if(!check_rights(R_ADMIN))
return
- if(!SSticker.HasRoundStarted())
+ if(!SSticker.HasRoundStarted())
alert("The game hasn't started yet!")
return
@@ -2150,7 +2155,7 @@
else if(href_list["kick_all_from_lobby"])
if(!check_rights(R_ADMIN))
return
- if(SSticker.IsRoundInProgress())
+ if(SSticker.IsRoundInProgress())
var/afkonly = text2num(href_list["afkonly"])
if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes")
to_chat(usr, "Kick clients from lobby aborted")
@@ -2231,20 +2236,20 @@
if(href_list["viewruntime_backto"])
error_viewer.show_to(owner, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"])
else
- error_viewer.show_to(owner, null, href_list["viewruntime_linear"])
- else if(href_list["showrelatedacc"])
- var/client/C = locate(href_list["client"]) in GLOB.clients
- var/list/thing_to_check
- if(href_list["showrelatedacc"] == "cid")
- thing_to_check = C.related_accounts_cid
- else
- thing_to_check = C.related_accounts_ip
- thing_to_check = splittext(thing_to_check, ", ")
-
-
- var/dat = "Related accounts by [uppertext(href_list["showrelatedacc"])]:
"
- for(var/thing in thing_to_check)
- dat += "[thing]
"
-
- usr << browse(dat, "size=420x300")
-
+ error_viewer.show_to(owner, null, href_list["viewruntime_linear"])
+ else if(href_list["showrelatedacc"])
+ var/client/C = locate(href_list["client"]) in GLOB.clients
+ var/list/thing_to_check
+ if(href_list["showrelatedacc"] == "cid")
+ thing_to_check = C.related_accounts_cid
+ else
+ thing_to_check = C.related_accounts_ip
+ thing_to_check = splittext(thing_to_check, ", ")
+
+
+ var/dat = "Related accounts by [uppertext(href_list["showrelatedacc"])]:
"
+ for(var/thing in thing_to_check)
+ dat += "[thing]
"
+
+ usr << browse(dat, "size=420x300")
+
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index b82d1f65e2..09dfcf4d69 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1194,3 +1194,16 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
message_admins(msg)
admin_ticket_log(target, msg)
log_admin("[key_name(usr)] punished [key_name(target)] with [punishment].")
+
+
+/client/proc/trigger_centcom_recall()
+ if(!holder)
+ return
+ var/message = pick(GLOB.admiral_messages)
+ message = input("Enter message from the on-call admiral to be put in the recall report.", "Admiral Message", message) as text|null
+
+ if(!message)
+ return
+
+ message_admins("[key_name_admin(usr)] triggered a Centcom recall, with the admiral message of: [message]")
+ log_game("[key_name(usr)] triggered a Centcom recall, with the message of: [message]")
\ No newline at end of file