Merge branch 'master' into upstream-merge-29288
This commit is contained in:
@@ -181,9 +181,9 @@
|
||||
set name = "Access Newscaster Network"
|
||||
set desc = "Allows you to view, add and edit news feeds."
|
||||
|
||||
if (!istype(src,/datum/admins))
|
||||
if (!istype(src, /datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src,/datum/admins))
|
||||
if (!istype(src, /datum/admins))
|
||||
to_chat(usr, "Error: you are not an admin!")
|
||||
return
|
||||
var/dat
|
||||
@@ -641,7 +641,7 @@
|
||||
var/chosen = pick_closest_path(object)
|
||||
if(!chosen)
|
||||
return
|
||||
if(ispath(chosen,/turf))
|
||||
if(ispath(chosen, /turf))
|
||||
var/turf/T = get_turf(usr.loc)
|
||||
T.ChangeTurf(chosen)
|
||||
else
|
||||
@@ -735,34 +735,33 @@
|
||||
var/dat = "<html><head><title>Manage Free Slots</title></head><body>"
|
||||
var/count = 0
|
||||
|
||||
if(SSticker && !SSticker.mode)
|
||||
if(!SSticker.HasRoundStarted())
|
||||
alert(usr, "You cannot manage jobs before the round starts!")
|
||||
return
|
||||
|
||||
if(SSjob)
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
count++
|
||||
var/J_title = html_encode(job.title)
|
||||
var/J_opPos = html_encode(job.total_positions - (job.total_positions - job.current_positions))
|
||||
var/J_totPos = html_encode(job.total_positions)
|
||||
if(job.total_positions < 0)
|
||||
dat += "[J_title]: [J_opPos] (unlimited)"
|
||||
else
|
||||
dat += "[J_title]: [J_opPos]/[J_totPos]"
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
count++
|
||||
var/J_title = html_encode(job.title)
|
||||
var/J_opPos = html_encode(job.total_positions - (job.total_positions - job.current_positions))
|
||||
var/J_totPos = html_encode(job.total_positions)
|
||||
if(job.total_positions < 0)
|
||||
dat += "[J_title]: [J_opPos] (unlimited)"
|
||||
else
|
||||
dat += "[J_title]: [J_opPos]/[J_totPos]"
|
||||
|
||||
if(job.title == "AI" || job.title == "Cyborg")
|
||||
dat += " (Cannot Late Join)<br>"
|
||||
continue
|
||||
if(job.total_positions >= 0)
|
||||
dat += " <A href='?src=\ref[src];addjobslot=[job.title]'>Add</A> | "
|
||||
if(job.total_positions > job.current_positions)
|
||||
dat += "<A href='?src=\ref[src];removejobslot=[job.title]'>Remove</A> | "
|
||||
else
|
||||
dat += "Remove | "
|
||||
dat += "<A href='?src=\ref[src];unlimitjobslot=[job.title]'>Unlimit</A>"
|
||||
if(job.title == "AI" || job.title == "Cyborg")
|
||||
dat += " (Cannot Late Join)<br>"
|
||||
continue
|
||||
if(job.total_positions >= 0)
|
||||
dat += " <A href='?src=\ref[src];addjobslot=[job.title]'>Add</A> | "
|
||||
if(job.total_positions > job.current_positions)
|
||||
dat += "<A href='?src=\ref[src];removejobslot=[job.title]'>Remove</A> | "
|
||||
else
|
||||
dat += " <A href='?src=\ref[src];limitjobslot=[job.title]'>Limit</A>"
|
||||
dat += "<br>"
|
||||
dat += "Remove | "
|
||||
dat += "<A href='?src=\ref[src];unlimitjobslot=[job.title]'>Unlimit</A>"
|
||||
else
|
||||
dat += " <A href='?src=\ref[src];limitjobslot=[job.title]'>Limit</A>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "</body>"
|
||||
var/winheight = 100 + (count * 20)
|
||||
|
||||
@@ -119,7 +119,7 @@ GLOBAL_PROTECT(admin_ranks)
|
||||
|
||||
if(config.admin_legacy_system)
|
||||
var/previous_rights = 0
|
||||
//load text from file and process each line seperately
|
||||
//load text from file and process each line separately
|
||||
for(var/line in world.file2list("config/admin_ranks.txt"))
|
||||
if(!line)
|
||||
continue
|
||||
@@ -195,7 +195,7 @@ GLOBAL_PROTECT(admin_ranks)
|
||||
//load text from file
|
||||
var/list/lines = world.file2list("config/admins.txt")
|
||||
|
||||
//process each line seperately
|
||||
//process each line separately
|
||||
for(var/line in lines)
|
||||
if(!length(line))
|
||||
continue
|
||||
|
||||
@@ -13,10 +13,11 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
|
||||
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
|
||||
/client/proc/secrets,
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/reestablish_db_connection,/*reattempt a connection to the database*/
|
||||
/client/proc/reestablish_db_connection, /*reattempt a connection to the database*/
|
||||
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
|
||||
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
|
||||
/client/proc/cmd_admin_ticket_panel,
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/stop_sounds
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_admin)
|
||||
@@ -33,7 +34,7 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
|
||||
/datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/
|
||||
/datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/
|
||||
/datum/admins/proc/announce, /*priority announce something to all clients.*/
|
||||
/datum/admins/proc/set_admin_notice,/*announcement all clients see when joining the server.*/
|
||||
/datum/admins/proc/set_admin_notice, /*announcement all clients see when joining the server.*/
|
||||
/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 (world_game_log) for today*/
|
||||
@@ -70,9 +71,9 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
|
||||
/client/proc/respawn_character
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_ban)
|
||||
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel,/client/proc/DB_ban_panel,/client/proc/stickybanpanel))
|
||||
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel, /client/proc/DB_ban_panel, /client/proc/stickybanpanel))
|
||||
GLOBAL_PROTECT(admin_verbs_sounds)
|
||||
GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound,/client/proc/play_sound,/client/proc/set_round_end_sound))
|
||||
GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound, /client/proc/play_sound, /client/proc/set_round_end_sound))
|
||||
GLOBAL_PROTECT(admin_verbs_fun)
|
||||
GLOBAL_LIST_INIT(admin_verbs_fun, list(
|
||||
/client/proc/cmd_admin_dress,
|
||||
@@ -97,7 +98,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
|
||||
/client/proc/smite
|
||||
))
|
||||
GLOBAL_PROTECT(admin_verbs_spawn)
|
||||
GLOBAL_LIST_INIT(admin_verbs_spawn, list(/datum/admins/proc/spawn_atom,/client/proc/respawn_character))
|
||||
GLOBAL_LIST_INIT(admin_verbs_spawn, list(/datum/admins/proc/spawn_atom, /client/proc/respawn_character))
|
||||
GLOBAL_PROTECT(admin_verbs_server)
|
||||
GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
|
||||
/world/proc/AVerbsServer()
|
||||
@@ -114,7 +115,6 @@ GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/forcerandomrotate,
|
||||
/client/proc/adminchangemap,
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/toggle_hub
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_debug)
|
||||
@@ -156,7 +156,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug, world.AVerbsDebug())
|
||||
/client/proc/cmd_display_init_log
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_possess)
|
||||
GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess,/proc/release))
|
||||
GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release))
|
||||
GLOBAL_PROTECT(admin_verbs_permissions)
|
||||
GLOBAL_LIST_INIT(admin_verbs_permissions, list(/client/proc/edit_admin_permissions))
|
||||
GLOBAL_PROTECT(admin_verbs_poll)
|
||||
@@ -296,7 +296,8 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list(
|
||||
/client/proc/startSinglo,
|
||||
/client/proc/set_server_fps,
|
||||
/client/proc/cmd_admin_grantfullaccess,
|
||||
/client/proc/cmd_admin_areatest,
|
||||
/client/proc/cmd_admin_areatest_all,
|
||||
/client/proc/cmd_admin_areatest_station,
|
||||
/client/proc/readmin
|
||||
)
|
||||
if(holder)
|
||||
|
||||
@@ -598,7 +598,7 @@
|
||||
|
||||
if(istype(SSticker.mode, /datum/game_mode/blob) || blob_minds.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Blob</B></td><td></td><td></td></tr>"
|
||||
if(istype(SSticker.mode,/datum/game_mode/blob))
|
||||
if(istype(SSticker.mode, /datum/game_mode/blob))
|
||||
var/datum/game_mode/blob/mode = SSticker.mode
|
||||
blob_minds |= mode.blob_overminds
|
||||
dat += "<tr><td><i>Progress: [GLOB.blobs_legit.len]/[mode.blobwincount]</i></td></tr>"
|
||||
|
||||
@@ -105,15 +105,14 @@
|
||||
|
||||
if("list_job_debug")
|
||||
var/dat = "<B>Job Debug info.</B><HR>"
|
||||
if(SSjob)
|
||||
for(var/line in SSjob.job_debug)
|
||||
dat += "[line]<BR>"
|
||||
dat+= "*******<BR><BR>"
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
if(!job)
|
||||
continue
|
||||
dat += "job: [job.title], current_positions: [job.current_positions], total_positions: [job.total_positions] <BR>"
|
||||
usr << browse(dat, "window=jobdebug;size=600x500")
|
||||
for(var/line in SSjob.job_debug)
|
||||
dat += "[line]<BR>"
|
||||
dat+= "*******<BR><BR>"
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
if(!job)
|
||||
continue
|
||||
dat += "job: [job.title], current_positions: [job.current_positions], total_positions: [job.total_positions] <BR>"
|
||||
usr << browse(dat, "window=jobdebug;size=600x500")
|
||||
|
||||
if("show_admins")
|
||||
var/dat = "<B>Current admins:</B><HR>"
|
||||
@@ -138,7 +137,7 @@
|
||||
for(var/mob/living/mob in thunderdome)
|
||||
qdel(mob) //Clear mobs
|
||||
for(var/obj/obj in thunderdome)
|
||||
if(!istype(obj,/obj/machinery/camera))
|
||||
if(!istype(obj, /obj/machinery/camera))
|
||||
qdel(obj) //Clear objects
|
||||
|
||||
var/area/template = locate(/area/tdome/arena_source)
|
||||
@@ -149,8 +148,9 @@
|
||||
var/choice = input("Are you sure you want to cure all disease?") in list("Yes", "Cancel")
|
||||
if(choice == "Yes")
|
||||
message_admins("[key_name_admin(usr)] has cured all diseases.")
|
||||
for(var/datum/disease/D in SSdisease.processing)
|
||||
D.cure(D)
|
||||
for(var/thing in SSdisease.active_diseases)
|
||||
var/datum/disease/D = thing
|
||||
D.cure(0)
|
||||
if("set_name")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -214,7 +214,7 @@
|
||||
if("moveferry")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
SSblackbox.add_details("admin_secrets_fun_used","Send Centcom Ferry")
|
||||
SSblackbox.add_details("admin_secrets_fun_used","Send CentCom Ferry")
|
||||
if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away"))
|
||||
message_admins("[key_name_admin(usr)] moved the centcom ferry")
|
||||
log_admin("[key_name(usr)] moved the centcom ferry")
|
||||
@@ -457,7 +457,7 @@
|
||||
if(W.z == ZLEVEL_STATION && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
|
||||
W.req_access = list()
|
||||
message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
|
||||
priority_announce("Centcom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/ai/commandreport.ogg')
|
||||
priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/ai/commandreport.ogg')
|
||||
|
||||
if("guns")
|
||||
if(!check_rights(R_FUN))
|
||||
@@ -517,14 +517,14 @@
|
||||
return
|
||||
SSblackbox.add_details("admin_secrets_fun_used","There Can Be Only One")
|
||||
usr.client.only_one()
|
||||
send_to_playing_players('sound/misc/highlander.ogg')
|
||||
sound_to_playing_players('sound/misc/highlander.ogg')
|
||||
|
||||
if("delayed_onlyone")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.add_details("admin_secrets_fun_used","There Can Be Only One")
|
||||
usr.client.only_one_delayed()
|
||||
send_to_playing_players('sound/misc/highlander_delayed.ogg')
|
||||
sound_to_playing_players('sound/misc/highlander_delayed.ogg')
|
||||
|
||||
if("onlyme")
|
||||
if(!check_rights(R_FUN))
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
. -= "reverting"
|
||||
|
||||
//storing these can sometimes cause sticky bans to start matching everybody
|
||||
// and isn't even needed for sticky ban matching, as the hub tracks these seperately
|
||||
// and isn't even needed for sticky ban matching, as the hub tracks these separately
|
||||
. -= "IP"
|
||||
. -= "computer_id"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
log_admin("[key_name(usr)] tried to use the admin panel without authorization.")
|
||||
return
|
||||
if(href_list["ahelp"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
if(!check_rights(R_ADMIN, TRUE))
|
||||
return
|
||||
|
||||
var/ahelp_ref = href_list["ahelp"]
|
||||
@@ -102,13 +102,13 @@
|
||||
message_admins("[key_name(usr)] tried to create gangs. Unfortunately, there were not enough candidates available.")
|
||||
log_admin("[key_name(usr)] failed create gangs.")
|
||||
if("centcom")
|
||||
message_admins("[key_name(usr)] is creating a Centcom response team...")
|
||||
message_admins("[key_name(usr)] is creating a CentCom response team...")
|
||||
if(src.makeEmergencyresponseteam())
|
||||
message_admins("[key_name(usr)] created a Centcom response team.")
|
||||
log_admin("[key_name(usr)] created a Centcom response team.")
|
||||
message_admins("[key_name(usr)] created a CentCom response team.")
|
||||
log_admin("[key_name(usr)] created a CentCom response team.")
|
||||
else
|
||||
message_admins("[key_name_admin(usr)] tried to create a Centcom response team. Unfortunately, there were not enough candidates available.")
|
||||
log_admin("[key_name(usr)] failed to create a Centcom response team.")
|
||||
message_admins("[key_name_admin(usr)] tried to create a CentCom response team. Unfortunately, there were not enough candidates available.")
|
||||
log_admin("[key_name(usr)] failed to create a CentCom response team.")
|
||||
if("abductors")
|
||||
message_admins("[key_name(usr)] is creating an abductor team...")
|
||||
if(src.makeAbductorTeam())
|
||||
@@ -1710,8 +1710,8 @@
|
||||
|
||||
usr.client.smite(H)
|
||||
|
||||
else if(href_list["CentcommReply"])
|
||||
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"]) in GLOB.mob_list
|
||||
else if(href_list["CentComReply"])
|
||||
var/mob/living/carbon/human/H = locate(href_list["CentComReply"]) in GLOB.mob_list
|
||||
if(!istype(H))
|
||||
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
|
||||
return
|
||||
@@ -1719,15 +1719,15 @@
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset.")
|
||||
return
|
||||
|
||||
message_admins("[src.owner] has started answering [key_name(H)]'s Centcomm request.")
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcom", "")
|
||||
message_admins("[src.owner] has started answering [key_name(H)]'s CentCom request.")
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from CentCom", "")
|
||||
if(!input)
|
||||
message_admins("[src.owner] decided not to answer [key_name(H)]'s Centcomm request.")
|
||||
message_admins("[src.owner] decided not to answer [key_name(H)]'s CentCom request.")
|
||||
return
|
||||
|
||||
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
|
||||
log_admin("[src.owner] replied to [key_name(H)]'s Centcom message with the message [input].")
|
||||
message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"")
|
||||
log_admin("[src.owner] replied to [key_name(H)]'s CentCom message with the message [input].")
|
||||
message_admins("[src.owner] replied to [key_name(H)]'s CentCom message with: \"[input]\"")
|
||||
to_chat(H, "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\"")
|
||||
|
||||
else if(href_list["SyndicateReply"])
|
||||
@@ -1917,7 +1917,7 @@
|
||||
if(!marked_datum)
|
||||
to_chat(usr, "You don't have any object marked. Abandoning spawn.")
|
||||
return
|
||||
else if(!istype(marked_datum,/atom))
|
||||
else if(!istype(marked_datum, /atom))
|
||||
to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.")
|
||||
return
|
||||
else
|
||||
|
||||
@@ -194,7 +194,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
AddInteraction("<font color='blue'>[key_name_admin(usr)] PM'd [LinkedReplyName()]</font>")
|
||||
message_admins("<font color='blue'>Ticket [TicketHref("#[id]")] created</font>")
|
||||
else
|
||||
MessageNoRecipient(parsed_message)
|
||||
MessageNoRecipient(msg, parsed_message)
|
||||
|
||||
//send it to irc if nobody is on and tell us how many were on
|
||||
var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]")
|
||||
@@ -249,18 +249,19 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
//message from the initiator without a target, all admins will see this
|
||||
//won't bug irc
|
||||
/datum/admin_help/proc/MessageNoRecipient(msg)
|
||||
/datum/admin_help/proc/MessageNoRecipient(msg, parsed_msg)
|
||||
var/ref_src = "\ref[src]"
|
||||
var/chat_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> [msg]</span>"
|
||||
//Message to be sent to all admins
|
||||
var/admin_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> [parsed_msg]</span>"
|
||||
|
||||
AddInteraction("<font color='red'>[LinkedReplyName(ref_src)]: [msg]</font>")
|
||||
|
||||
//send this msg to all admins
|
||||
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
window_flash(X, ignorepref = TRUE)
|
||||
to_chat(X, chat_msg)
|
||||
to_chat(X, admin_msg)
|
||||
|
||||
//show it to the person adminhelping too
|
||||
to_chat(initiator, "<span class='adminnotice'>PM to-<b>Admins</b>: [msg]</span>")
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(cmptext(copytext(whom,1,2),"@"))
|
||||
whom = findStealthKey(whom)
|
||||
C = GLOB.directory[whom]
|
||||
else if(istype(whom,/client))
|
||||
else if(istype(whom, /client))
|
||||
C = whom
|
||||
if(!C)
|
||||
if(holder)
|
||||
@@ -82,7 +82,7 @@
|
||||
irc = 1
|
||||
else
|
||||
recipient = GLOB.directory[whom]
|
||||
else if(istype(whom,/client))
|
||||
else if(istype(whom, /client))
|
||||
recipient = whom
|
||||
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
stored = null
|
||||
for(var/button in buttons)
|
||||
qdel(button)
|
||||
return ..()
|
||||
|
||||
/datum/buildmode/proc/create_buttons()
|
||||
buttons += new /obj/screen/buildmode/mode(src)
|
||||
@@ -171,7 +172,7 @@
|
||||
objholder = /obj/structure/closet
|
||||
alert("That path is not allowed.")
|
||||
else
|
||||
if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0))
|
||||
if(ispath(objholder, /mob) && !check_rights(R_DEBUG,0))
|
||||
objholder = /obj/structure/closet
|
||||
if(VAR_BUILDMODE)
|
||||
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
|
||||
@@ -194,11 +195,14 @@
|
||||
valueholder = input(user,"Enter variable value:" ,"Value") as turf in world
|
||||
if(AREA_BUILDMODE)
|
||||
var/list/gen_paths = subtypesof(/datum/mapGenerator)
|
||||
|
||||
var/type = input(user,"Select Generator Type","Type") as null|anything in gen_paths
|
||||
var/list/options = list()
|
||||
for(var/path in gen_paths)
|
||||
var/datum/mapGenerator/MP = path
|
||||
options[initial(MP.buildmode_name)] = path
|
||||
var/type = input(user,"Select Generator Type","Type") as null|anything in options
|
||||
if(!type) return
|
||||
|
||||
generator_path = type
|
||||
generator_path = options[type]
|
||||
cornerA = null
|
||||
cornerB = null
|
||||
|
||||
@@ -224,7 +228,7 @@
|
||||
set name = "Toggle Build Mode"
|
||||
set category = "Special Verbs"
|
||||
if(M.client)
|
||||
if(istype(M.client.click_intercept,/datum/buildmode))
|
||||
if(istype(M.client.click_intercept, /datum/buildmode))
|
||||
var/datum/buildmode/B = M.client.click_intercept
|
||||
B.quit()
|
||||
log_admin("[key_name(usr)] has left build mode.")
|
||||
@@ -262,7 +266,7 @@
|
||||
else if(isfloorturf(object))
|
||||
var/turf/T = object
|
||||
T.ChangeTurf(/turf/open/space)
|
||||
else if(istype(object,/turf/closed/wall/r_wall))
|
||||
else if(istype(object, /turf/closed/wall/r_wall))
|
||||
var/turf/T = object
|
||||
T.ChangeTurf(/turf/closed/wall)
|
||||
else if(isobj(object))
|
||||
@@ -291,7 +295,7 @@
|
||||
log_admin("Build Mode: [key_name(user)] built a window at ([object.x],[object.y],[object.z])")
|
||||
if(ADV_BUILDMODE)
|
||||
if(left_click)
|
||||
if(ispath(objholder,/turf))
|
||||
if(ispath(objholder, /turf))
|
||||
var/turf/T = get_turf(object)
|
||||
log_admin("Build Mode: [key_name(user)] modified [T] ([T.x],[T.y],[T.z]) to [objholder]")
|
||||
T.ChangeTurf(objholder)
|
||||
@@ -342,7 +346,12 @@
|
||||
if(cornerA && cornerB)
|
||||
if(!generator_path)
|
||||
to_chat(user, "<span class='warning'>Select generator type first.</span>")
|
||||
return
|
||||
var/datum/mapGenerator/G = new generator_path
|
||||
if(istype(G, /datum/mapGenerator/repair/reload_station_map))
|
||||
if(GLOB.reloading_map)
|
||||
to_chat(user, "<span class='boldwarning'>You are already reloading an area! Please wait for it to fully finish loading before trying to load another!</span>")
|
||||
return
|
||||
G.defineRegion(cornerA,cornerB,1)
|
||||
G.generate()
|
||||
cornerA = null
|
||||
|
||||
@@ -460,10 +460,10 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
id.update_label()
|
||||
|
||||
if(worn)
|
||||
if(istype(worn,/obj/item/device/pda))
|
||||
if(istype(worn, /obj/item/device/pda))
|
||||
worn:id = id
|
||||
id.loc = worn
|
||||
else if(istype(worn,/obj/item/weapon/storage/wallet))
|
||||
else if(istype(worn, /obj/item/weapon/storage/wallet))
|
||||
worn:front_id = id
|
||||
id.loc = worn
|
||||
worn.update_icon()
|
||||
@@ -495,9 +495,9 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
qdel(adminmob)
|
||||
SSblackbox.add_details("admin_verb","Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_areatest()
|
||||
/client/proc/cmd_admin_areatest(on_station)
|
||||
set category = "Mapping"
|
||||
set name = "Test areas"
|
||||
set name = "Test Areas"
|
||||
|
||||
var/list/areas_all = list()
|
||||
var/list/areas_with_APC = list()
|
||||
@@ -509,11 +509,16 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
var/list/areas_with_camera = list()
|
||||
|
||||
for(var/area/A in world)
|
||||
if(!(A.type in areas_all))
|
||||
if(on_station)
|
||||
var/turf/picked = safepick(get_area_turfs(A.type))
|
||||
if(picked && (picked.z == ZLEVEL_STATION))
|
||||
if(!(A.type in areas_all))
|
||||
areas_all.Add(A.type)
|
||||
else if(!(A.type in areas_all))
|
||||
areas_all.Add(A.type)
|
||||
|
||||
for(var/obj/machinery/power/apc/APC in GLOB.apcs_list)
|
||||
var/area/A = get_area(APC)
|
||||
var/area/A = APC.area
|
||||
if(!(A.type in areas_with_APC))
|
||||
areas_with_APC.Add(A.type)
|
||||
|
||||
@@ -583,6 +588,16 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
for(var/areatype in areas_without_camera)
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
/client/proc/cmd_admin_areatest_station()
|
||||
set category = "Mapping"
|
||||
set name = "Test Areas (STATION Z)"
|
||||
cmd_admin_areatest(TRUE)
|
||||
|
||||
/client/proc/cmd_admin_areatest_all()
|
||||
set category = "Mapping"
|
||||
set name = "Test Areas (ALL)"
|
||||
cmd_admin_areatest(FALSE)
|
||||
|
||||
/client/proc/cmd_admin_dress(mob/living/carbon/human/M in GLOB.mob_list)
|
||||
set category = "Fun"
|
||||
set name = "Select equipment"
|
||||
|
||||
@@ -13,7 +13,17 @@
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] accessed file: [path]")
|
||||
src << ftp(file(path))
|
||||
//this is copypasta because making it a proc would mean locking out adminproccalls,
|
||||
// and that system is buggy enough with false positives that I don't want to risk locking admins out of legit calls.
|
||||
switch(alert("View (in game), Open (in your system's text editor), or Download file [path]?", "Log File Opening", "View", "Open", "Download"))
|
||||
if ("View")
|
||||
src << browse("<pre style='word-wrap: break-word;'>[html_encode(file2text(file(path)))]</pre>", list2params(list("window" = "viewfile.[path]")))
|
||||
if ("Open")
|
||||
src << run(file(path))
|
||||
if ("Download")
|
||||
src << ftp(file(path))
|
||||
else
|
||||
return
|
||||
to_chat(src, "Attempting to send file, this may take a fair few minutes if the file is very large.")
|
||||
return
|
||||
|
||||
@@ -27,7 +37,15 @@
|
||||
set desc = "Shows server log for this round."
|
||||
|
||||
if(fexists("[GLOB.world_game_log]"))
|
||||
src << ftp(GLOB.world_game_log)
|
||||
switch(alert("View (in game), Open (in your system's text editor), or Download file [GLOB.world_game_log]?", "Log File Opening", "View", "Open", "Download"))
|
||||
if ("View")
|
||||
src << browse("<pre style='word-wrap: break-word;'>[html_encode(file2text(GLOB.world_game_log))]</pre>", list2params(list("window" = "viewfile.[GLOB.world_game_log]")))
|
||||
if ("Open")
|
||||
src << run(GLOB.world_game_log)
|
||||
if ("Download")
|
||||
src << ftp(GLOB.world_game_log)
|
||||
else
|
||||
return
|
||||
else
|
||||
to_chat(src, "<font color='red'>Server log not found, try using .getserverlog.</font>")
|
||||
return
|
||||
@@ -41,7 +59,15 @@
|
||||
set desc = "Shows server attack log for this round."
|
||||
|
||||
if(fexists("[GLOB.world_attack_log]"))
|
||||
src << ftp(GLOB.world_attack_log)
|
||||
switch(alert("View (in game), Open (in your system's text editor), or Download file [GLOB.world_attack_log]?", "Log File Opening", "View", "Open", "Download"))
|
||||
if ("View")
|
||||
src << browse("<pre style='word-wrap: break-word;'>[html_encode(file2text(GLOB.world_attack_log))]</pre>", list2params(list("window" = "viewfile.[GLOB.world_attack_log]")))
|
||||
if ("Open")
|
||||
src << run(GLOB.world_attack_log)
|
||||
if ("Download")
|
||||
src << ftp(GLOB.world_attack_log)
|
||||
else
|
||||
return
|
||||
else
|
||||
to_chat(src, "<font color='red'>Server attack log not found, try using .getserverlog.</font>")
|
||||
return
|
||||
|
||||
@@ -34,7 +34,8 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
|
||||
/client/proc/startSinglo,
|
||||
/client/proc/set_server_fps, //allows you to set the ticklag.
|
||||
/client/proc/cmd_admin_grantfullaccess,
|
||||
/client/proc/cmd_admin_areatest,
|
||||
/client/proc/cmd_admin_areatest_all,
|
||||
/client/proc/cmd_admin_areatest_station,
|
||||
/client/proc/cmd_admin_rejuvenate,
|
||||
/datum/admins/proc/show_traitor_panel,
|
||||
/client/proc/disable_communication,
|
||||
|
||||
@@ -30,7 +30,7 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
else if (isloc(var_value))
|
||||
. = VV_ATOM_REFERENCE
|
||||
|
||||
else if (istype(var_value,/client))
|
||||
else if (istype(var_value, /client))
|
||||
. = VV_CLIENT
|
||||
|
||||
else if (istype(var_value, /datum))
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<a href='?src=\ref[src];makeAntag=gangs'>Make Gangsters</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=wizard'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=nukeops'>Make Nuke Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=centcom'>Make Centcom Response Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=centcom'>Make CentCom Response Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=abductors'>Make Abductor Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=revenant'>Make Revenant (Requires Ghost)</a><br>
|
||||
"}
|
||||
@@ -397,7 +397,7 @@
|
||||
|
||||
/datum/admins/proc/makeOfficial()
|
||||
var/mission = input("Assign a task for the official", "Assign Task", "Conduct a routine preformance review of [station_name()] and its Captain.")
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered to be a Centcom Official?", "deathsquad")
|
||||
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered to be a CentCom Official?", "deathsquad")
|
||||
|
||||
if(candidates.len)
|
||||
var/mob/dead/observer/chosen_candidate = pick(candidates)
|
||||
@@ -408,7 +408,7 @@
|
||||
newmob.real_name = newmob.dna.species.random_name(newmob.gender,1)
|
||||
newmob.dna.update_dna_identity()
|
||||
newmob.key = chosen_candidate.key
|
||||
newmob.mind.assigned_role = "Centcom Official"
|
||||
newmob.mind.assigned_role = "CentCom Official"
|
||||
newmob.equipOutfit(/datum/outfit/centcom_official)
|
||||
|
||||
//Assign antag status and the mission
|
||||
@@ -424,12 +424,12 @@
|
||||
newmob.set_species(/datum/species/human)
|
||||
|
||||
//Greet the official
|
||||
to_chat(newmob, "<B><font size=3 color=red>You are a Centcom Official.</font></B>")
|
||||
to_chat(newmob, "<B><font size=3 color=red>You are a CentCom Official.</font></B>")
|
||||
to_chat(newmob, "<BR>Central Command is sending you to [station_name()] with the task: [mission]")
|
||||
|
||||
//Logging and cleanup
|
||||
message_admins("Centcom Official [key_name_admin(newmob)] has spawned with the task: [mission]")
|
||||
log_game("[key_name(newmob)] has been selected as a Centcom Official")
|
||||
message_admins("CentCom Official [key_name_admin(newmob)] has spawned with the task: [mission]")
|
||||
log_game("[key_name(newmob)] has been selected as a CentCom Official")
|
||||
|
||||
return 1
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
|
||||
// CENTCOM RESPONSE TEAM
|
||||
/datum/admins/proc/makeEmergencyresponseteam()
|
||||
var/alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: Centcom Official", "Blue: Light ERT (No Armoury Access)", "Amber: Full ERT (Armoury Access)", "Red: Elite ERT (Armoury Access + Pulse Weapons)", "Delta: Deathsquad")
|
||||
var/alert = input("Which team should we send?", "Select Response Level") as null|anything in list("Green: CentCom Official", "Blue: Light ERT (No Armoury Access)", "Amber: Full ERT (Armoury Access)", "Red: Elite ERT (Armoury Access + Pulse Weapons)", "Delta: Deathsquad")
|
||||
if(!alert)
|
||||
return
|
||||
switch(alert)
|
||||
@@ -449,7 +449,7 @@
|
||||
alert = "Amber"
|
||||
if("Blue: Light ERT (No Armoury Access)")
|
||||
alert = "Blue"
|
||||
if("Green: Centcom Official")
|
||||
if("Green: CentCom Official")
|
||||
return makeOfficial()
|
||||
var/teamcheck = input("Maximum size of team? (7 max)", "Select Team Size",4) as null|num
|
||||
if(isnull(teamcheck))
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
SSblackbox.add_details("admin_verb","Prayer") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
//log_admin("HELP: [key_name(src)]: [msg]")
|
||||
|
||||
/proc/Centcomm_announce(text , mob/Sender)
|
||||
/proc/CentCom_announce(text , mob/Sender)
|
||||
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
|
||||
msg = "<span class='adminnotice'><b><font color=orange>CENTCOM:</font>[ADMIN_FULLMONTY(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]:</b> [msg]</span>"
|
||||
to_chat(GLOB.admins, msg)
|
||||
|
||||
@@ -615,7 +615,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]")
|
||||
|
||||
if(isobserver(M))
|
||||
new /obj/effect/gibspawner/generic(M.loc, M.viruses)
|
||||
new /obj/effect/gibspawner/generic(get_turf(M))
|
||||
return
|
||||
if(confirm == "Yes")
|
||||
M.gib()
|
||||
@@ -649,9 +649,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
set desc = "switches between 1x and custom views"
|
||||
|
||||
if(view == world.view)
|
||||
view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
|
||||
change_view(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128))
|
||||
else
|
||||
view = world.view
|
||||
change_view(world.view)
|
||||
|
||||
log_admin("[key_name(usr)] changed their view range to [view].")
|
||||
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
|
||||
@@ -1208,6 +1208,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
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]")
|
||||
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]")
|
||||
SSshuttle.centcom_recall(SSshuttle.emergency.timer, message)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
to_chat(usr, "<span class='adminnotice'>The Database is not enabled!</span>")
|
||||
return
|
||||
|
||||
if (SSdbcore && SSdbcore.IsConnected())
|
||||
if (SSdbcore.IsConnected())
|
||||
if (!check_rights(R_DEBUG,0))
|
||||
alert("The database is already connected! (Only those with +debug can force a reconnection)", "The database is already connected!")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user