mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Merge remote-tracking branch 'upstream/master' into NTSL2
# Conflicts: # code/game/machinery/telecomms/traffic_control.dm # code/modules/admin/verbs/randomverbs.dm # code/modules/scripting/Implementations/Telecomms.dm
This commit is contained in:
@@ -60,7 +60,7 @@
|
||||
|
||||
/datum/SDQL_parser/proc/parse_error(error_message)
|
||||
error = 1
|
||||
to_chat(usr, "<span class='danger'>SQDL2 Parsing Error: [error_message]</span>")
|
||||
to_chat(usr, "<span class='danger'>SDQL2 Parsing Error: [error_message]</span>")
|
||||
return query.len + 1
|
||||
|
||||
/datum/SDQL_parser/proc/parse()
|
||||
|
||||
@@ -38,7 +38,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
var/list/surnames = list()
|
||||
var/list/forenames = list()
|
||||
var/list/ckeys = list()
|
||||
for(var/mob/M in mob_list)
|
||||
for(var/mob/M in GLOB.mob_list)
|
||||
var/list/indexing = list(M.real_name, M.name)
|
||||
if(M.mind) indexing += M.mind.name
|
||||
|
||||
@@ -86,15 +86,12 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
|
||||
if(!mob) return //this doesn't happen
|
||||
|
||||
var/ref_mob = "\ref[mob]"
|
||||
var/ref_client = "\ref[src]"
|
||||
|
||||
//send this msg to all admins
|
||||
var/admin_number_afk = 0
|
||||
var/list/mentorholders = list()
|
||||
var/list/modholders = list()
|
||||
var/list/adminholders = list()
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_ADMIN, 0, X.mob))
|
||||
if(X.is_afk())
|
||||
admin_number_afk++
|
||||
@@ -109,7 +106,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
|
||||
switch(selected_type)
|
||||
if("Mentorhelp")
|
||||
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
|
||||
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[UID()]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[mob.UID()]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
|
||||
for(var/client/X in mentorholders + modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
@@ -117,15 +114,15 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
if("Adminhelp")
|
||||
var/ticketNum // Holder for the ticket number
|
||||
var/prunedmsg ="[usr.client]: [msg]" // Message without links
|
||||
if(globAdminTicketHolder.checkForOpenTicket(usr.client)) // If user already has an open ticket
|
||||
var/datum/admin_ticket/T = globAdminTicketHolder.checkForOpenTicket(usr.client) // Make T equal to the ticket they have open
|
||||
if(SStickets.checkForOpenTicket(usr)) // If user already has an open ticket
|
||||
var/datum/admin_ticket/T = SStickets.checkForOpenTicket(usr) // Make T equal to the ticket they have open
|
||||
ticketNum = T.ticketNum // ticketNum is the number of their ticket.
|
||||
T.addResponse(usr.client, msg)
|
||||
else
|
||||
ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned.
|
||||
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;openadminticket=[ticketNum]'>TICKET</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""](<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
|
||||
ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned.
|
||||
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;openadminticket=[ticketNum]'>TICKET</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[mob.UID()]'>CL</A>)" : ""](<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
|
||||
//Open a new adminticket and inform the user.
|
||||
globAdminTicketHolder.newTicket(src, prunedmsg, msg)
|
||||
SStickets.newTicket(src, prunedmsg, msg)
|
||||
for(var/client/X in modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
@@ -152,7 +149,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
var/admin_number_afk = 0 //Holds the number of admins who are afk
|
||||
var/admin_number_ignored = 0 //Holds the number of admins without +BAN (so admins who are not really admins)
|
||||
var/admin_number_decrease = 0 //Holds the number of admins with are afk, ignored or both
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
admin_number_total++;
|
||||
var/invalid = 0
|
||||
if(requiredflags != 0 && !check_rights_for(X, requiredflags))
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
/client/proc/jumptomob(var/mob/M in mob_list)
|
||||
/client/proc/jumptomob(var/mob/M in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Jump to Mob"
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
return
|
||||
|
||||
var/list/keys = list()
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
keys += M.client
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
|
||||
if(!selection)
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/Getmob(var/mob/M in mob_list)
|
||||
/client/proc/Getmob(var/mob/M in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Get Mob"
|
||||
set desc = "Mob to teleport"
|
||||
@@ -120,7 +120,7 @@
|
||||
return
|
||||
|
||||
var/list/keys = list()
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
keys += M.client
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
|
||||
if(!selection)
|
||||
@@ -136,7 +136,7 @@
|
||||
admin_forcemove(usr, M.loc)
|
||||
feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/sendmob(var/mob/M in mob_list)
|
||||
/client/proc/sendmob(var/mob/M in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Send Mob"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
|
||||
/client/proc/cmd_admin_pm_context(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_pm_context(mob/M as mob in GLOB.mob_list)
|
||||
set category = null
|
||||
set name = "Admin PM Mob"
|
||||
if(!holder)
|
||||
@@ -67,7 +67,7 @@
|
||||
if(istext(whom))
|
||||
if(cmptext(copytext(whom,1,2),"@"))
|
||||
whom = findStealthKey(whom)
|
||||
C = directory[whom]
|
||||
C = GLOB.directory[whom]
|
||||
else if(istype(whom,/client))
|
||||
C = whom
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
|
||||
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
|
||||
//we don't use message_admins here because the sender/receiver might get it too
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
//check client/X is an admin and isn't the sender or recipient
|
||||
if(X == C || X == src)
|
||||
continue
|
||||
@@ -187,15 +187,14 @@
|
||||
return
|
||||
//Check if the mob being PM'd has any open admin tickets.
|
||||
var/tickets = list()
|
||||
tickets = globAdminTicketHolder.checkForTicket(C)
|
||||
tickets = SStickets.checkForTicket(C)
|
||||
if(tickets)
|
||||
for(var/datum/admin_ticket/i in tickets)
|
||||
i.addResponse(src, msg) // Add this response to their open tickets.
|
||||
return
|
||||
|
||||
tickets = globAdminTicketHolder.checkForTicket(src)
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets
|
||||
tickets = globAdminTicketHolder.checkForTicket(src)
|
||||
tickets = SStickets.checkForTicket(src)
|
||||
if(tickets)
|
||||
for(var/datum/admin_ticket/i in tickets)
|
||||
i.addResponse(src, msg)
|
||||
@@ -224,7 +223,7 @@
|
||||
to_chat(src, "<font color='blue'>IRC PM to-<b>IRC-Admins</b>: [msg]</font>")
|
||||
|
||||
log_admin("PM: [key_name(src)]->IRC: [msg]")
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(X == src)
|
||||
continue
|
||||
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
log_adminsay(msg, src)
|
||||
|
||||
if(check_rights(R_ADMIN,0))
|
||||
for(var/client/C in admins)
|
||||
for(var/client/C in GLOB.admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
msg = "<span class='emoji_enabled'>[msg]</span>"
|
||||
to_chat(C, "<span class='admin_channel'>ADMIN: <span class='name'>[key_name(usr, 1)]</span> ([admin_jump_link(mob)]): <span class='message'>[msg]</span></span>")
|
||||
@@ -31,7 +31,7 @@
|
||||
if(!msg)
|
||||
return
|
||||
|
||||
for(var/client/C in admins)
|
||||
for(var/client/C in GLOB.admins)
|
||||
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, C.mob))
|
||||
var/display_name = key
|
||||
if(holder.fakekey)
|
||||
@@ -62,7 +62,7 @@
|
||||
enabling = TRUE
|
||||
admin_verbs_mentor += msay
|
||||
|
||||
for(var/client/C in admins)
|
||||
for(var/client/C in GLOB.admins)
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, C.mob))
|
||||
continue
|
||||
if(!check_rights(R_MENTOR, 0, C.mob))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<HR>"}
|
||||
|
||||
if(dbcon.IsConnected())
|
||||
for(var/client/C in clients)
|
||||
for(var/client/C in GLOB.clients)
|
||||
dat += "<p>[C.ckey] (Player Age: <font color = 'red'>[C.player_age]</font>) - <b>[C.computer_id]</b> / <b>[C.address]</b><br>"
|
||||
if(C.related_accounts_cid.len)
|
||||
dat += "--Accounts associated with CID: "
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(holder && holder.fakekey)
|
||||
display_name = holder.fakekey
|
||||
|
||||
for(var/mob/M in mob_list)
|
||||
for(var/mob/M in GLOB.mob_list)
|
||||
if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder && (M.client.holder.rights & R_ADMIN)) )
|
||||
to_chat(M, "<font color='#960018'><span class='ooc'><span class='prefix'>AOOC:</span> <EM>[display_name]:</EM> <span class='message'>[msg]</span></span></font>")
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
custom_event_admin_msg = input
|
||||
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, "<h1 class='alert'>Custom Admin Event Info</h1>")
|
||||
to_chat(X, "<h2 class='alert'>A custom event is starting. OOC Admin Info:</h2>")
|
||||
|
||||
@@ -208,7 +208,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
usr.show_message(t, 1)
|
||||
feedback_add_details("admin_verb","ASL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_robotize(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_robotize(var/mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Robot"
|
||||
|
||||
@@ -226,7 +226,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
/client/proc/cmd_admin_animalize(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_animalize(var/mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Simple Animal"
|
||||
|
||||
@@ -250,7 +250,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.Animalize()
|
||||
|
||||
|
||||
/client/proc/makepAI(var/turf/T in mob_list)
|
||||
/client/proc/makepAI(var/turf/T in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make pAI"
|
||||
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
|
||||
@@ -259,7 +259,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
var/list/available = list()
|
||||
for(var/mob/C in mob_list)
|
||||
for(var/mob/C in GLOB.mob_list)
|
||||
if(C.key)
|
||||
available.Add(C)
|
||||
var/mob/choice = input("Choose a player to play the pAI", "Spawn pAI") in available
|
||||
@@ -271,7 +271,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return 0
|
||||
var/obj/item/paicard/card = new(T)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
|
||||
var/raw_name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
|
||||
var/new_name = reject_bad_name(raw_name, 1)
|
||||
if(new_name)
|
||||
pai.name = new_name
|
||||
pai.real_name = new_name
|
||||
else
|
||||
to_chat(usr, "<font color='red'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</font>")
|
||||
pai.real_name = pai.name
|
||||
pai.key = choice.key
|
||||
card.setPersonality(pai)
|
||||
@@ -280,7 +286,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
paiController.pai_candidates.Remove(candidate)
|
||||
feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_alienize(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_alienize(var/mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Alien"
|
||||
|
||||
@@ -300,7 +306,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
/client/proc/cmd_admin_slimeize(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_slimeize(var/mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make slime"
|
||||
|
||||
@@ -320,7 +326,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
/client/proc/cmd_admin_super(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_super(var/mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Superhero"
|
||||
|
||||
@@ -331,8 +337,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
var/type = input("Pick the Superhero","Superhero") as null|anything in all_superheroes
|
||||
var/datum/superheroes/S = all_superheroes[type]
|
||||
var/type = input("Pick the Superhero","Superhero") as null|anything in GLOB.all_superheroes
|
||||
var/datum/superheroes/S = GLOB.all_superheroes[type]
|
||||
if(S)
|
||||
S.create(M)
|
||||
log_admin("[key_name(src)] has turned [M.key] into a Superhero.")
|
||||
@@ -371,7 +377,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(confirm != "Yes")
|
||||
return
|
||||
|
||||
for(var/I in singularities)
|
||||
for(var/I in GLOB.singularities)
|
||||
var/obj/singularity/S = I
|
||||
if(!is_level_reachable(S.z))
|
||||
continue
|
||||
@@ -392,7 +398,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
|
||||
feedback_add_details("admin_verb","MPWN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_grantfullaccess(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_grantfullaccess(var/mob/M in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Grant Full Access"
|
||||
|
||||
@@ -426,7 +432,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
log_admin("[key_name(src)] has granted [M.key] full access.")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] has granted [M.key] full access.</span>", 1)
|
||||
|
||||
/client/proc/cmd_assume_direct_control(var/mob/M in mob_list)
|
||||
/client/proc/cmd_assume_direct_control(var/mob/M in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Assume direct control"
|
||||
set desc = "Direct intervention"
|
||||
@@ -563,7 +569,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
for(var/areatype in areas_without_camera)
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in mob_list)
|
||||
/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Select equipment"
|
||||
|
||||
@@ -685,11 +691,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
for(var/obj/machinery/power/emitter/E in machines)
|
||||
for(var/obj/machinery/power/emitter/E in GLOB.machines)
|
||||
if(E.anchored)
|
||||
E.active = 1
|
||||
|
||||
for(var/obj/machinery/field/generator/F in machines)
|
||||
for(var/obj/machinery/field/generator/F in GLOB.machines)
|
||||
if(F.active == 0)
|
||||
F.active = 1
|
||||
F.state = 2
|
||||
@@ -700,13 +706,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
F.update_icon()
|
||||
|
||||
spawn(30)
|
||||
for(var/obj/machinery/the_singularitygen/G in machines)
|
||||
for(var/obj/machinery/the_singularitygen/G in GLOB.machines)
|
||||
if(G.anchored)
|
||||
var/obj/singularity/S = new /obj/singularity(get_turf(G))
|
||||
S.energy = 800
|
||||
break
|
||||
|
||||
for(var/obj/machinery/power/rad_collector/Rad in machines)
|
||||
for(var/obj/machinery/power/rad_collector/Rad in GLOB.machines)
|
||||
if(Rad.anchored)
|
||||
if(!Rad.P)
|
||||
var/obj/item/tank/plasma/Plasma = new/obj/item/tank/plasma(Rad)
|
||||
@@ -718,7 +724,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!Rad.active)
|
||||
Rad.toggle_power()
|
||||
|
||||
for(var/obj/machinery/power/smes/SMES in machines)
|
||||
for(var/obj/machinery/power/smes/SMES in GLOB.machines)
|
||||
if(SMES.anchored)
|
||||
SMES.input_attempt = 1
|
||||
|
||||
@@ -732,21 +738,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
|
||||
switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs","Silicons","Clients","Respawnable Mobs"))
|
||||
if("Players")
|
||||
to_chat(usr, jointext(player_list,","))
|
||||
to_chat(usr, jointext(GLOB.player_list,","))
|
||||
if("Admins")
|
||||
to_chat(usr, jointext(admins,","))
|
||||
to_chat(usr, jointext(GLOB.admins,","))
|
||||
if("Mobs")
|
||||
to_chat(usr, jointext(mob_list,","))
|
||||
to_chat(usr, jointext(GLOB.mob_list,","))
|
||||
if("Living Mobs")
|
||||
to_chat(usr, jointext(living_mob_list,","))
|
||||
to_chat(usr, jointext(GLOB.living_mob_list,","))
|
||||
if("Dead Mobs")
|
||||
to_chat(usr, jointext(dead_mob_list,","))
|
||||
to_chat(usr, jointext(GLOB.dead_mob_list,","))
|
||||
if("Silicons")
|
||||
to_chat(usr, jointext(silicon_mob_list,","))
|
||||
to_chat(usr, jointext(GLOB.silicon_mob_list,","))
|
||||
if("Clients")
|
||||
to_chat(usr, jointext(clients,","))
|
||||
to_chat(usr, jointext(GLOB.clients,","))
|
||||
if("Respawnable Mobs")
|
||||
to_chat(usr, jointext(respawnable_list,","))
|
||||
to_chat(usr, jointext(GLOB.respawnable_list,","))
|
||||
|
||||
/client/proc/cmd_display_del_log()
|
||||
set category = "Debug"
|
||||
@@ -860,7 +866,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
var/list/names = list()
|
||||
for(var/i in ruin_landmarks)
|
||||
for(var/i in GLOB.ruin_landmarks)
|
||||
var/obj/effect/landmark/ruin/ruin_landmark = i
|
||||
var/datum/map_template/ruin/template = ruin_landmark.ruin_template
|
||||
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
var/global/list/frozen_mob_list = list()
|
||||
/client/proc/freeze(var/mob/living/M as mob in mob_list)
|
||||
/client/proc/freeze(var/mob/living/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Freeze"
|
||||
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!istype(M))
|
||||
return
|
||||
|
||||
if(!istype(M))
|
||||
return
|
||||
|
||||
if(M in frozen_mob_list)
|
||||
M.admin_unFreeze(src)
|
||||
@@ -84,13 +84,13 @@ var/global/list/frozen_mob_list = list()
|
||||
|
||||
//////////////////////////Freeze Mech
|
||||
|
||||
/client/proc/freezemecha(var/obj/mecha/O as obj in mechas_list)
|
||||
/client/proc/freezemecha(var/obj/mecha/O as obj in GLOB.mechas_list)
|
||||
set category = "Admin"
|
||||
set name = "Freeze Mech"
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
var/obj/mecha/M = O
|
||||
if(!istype(M,/obj/mecha))
|
||||
to_chat(src, "<span class='danger'>This can only be used on mechs!</span>")
|
||||
@@ -105,7 +105,7 @@ var/global/list/frozen_mob_list = list()
|
||||
M.overlays += adminomaly
|
||||
if(M.occupant)
|
||||
M.removeVerb(/obj/mecha/verb/eject)
|
||||
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
|
||||
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]</span>")
|
||||
log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]")
|
||||
else
|
||||
@@ -116,7 +116,7 @@ var/global/list/frozen_mob_list = list()
|
||||
M.overlays -= adminomaly
|
||||
if(M.occupant)
|
||||
M.addVerb(/obj/mecha/verb/eject)
|
||||
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
|
||||
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]</span>")
|
||||
log_admin("[key_name(usr)] unfroze [key_name(M.occupant)] in a [M.name]")
|
||||
else
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/list/players_to_spawn = list()
|
||||
if(pick_manually)
|
||||
var/list/possible_ghosts = list()
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(!G.client.is_afk())
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
possible_ghosts += G
|
||||
|
||||
@@ -38,7 +38,7 @@ var/global/sent_honksquad = 0
|
||||
//Generates a list of HONKsquad from active ghosts. Then the user picks which characters to respawn as the commandos.
|
||||
var/list/candidates = list() //candidates for being a commando out of all the active ghosts in world.
|
||||
var/list/commandos = list() //actual commando ghosts as picked by the user.
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(!G.client.holder && !G.client.is_afk()) //Whoever called/has the proc won't be added to the list.
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
candidates += G.key
|
||||
@@ -48,7 +48,7 @@ var/global/sent_honksquad = 0
|
||||
commandos += candidate//Add their ghost to commandos.
|
||||
|
||||
//Spawns HONKsquad and equips them.
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(honksquad_number<=0) break
|
||||
if(L.name == "HONKsquad")
|
||||
honk_leader_selected = honksquad_number == 1?1:0
|
||||
@@ -77,7 +77,7 @@ var/global/sent_honksquad = 0
|
||||
var/mob/living/carbon/human/new_honksquad = new(spawn_location.loc)
|
||||
var/honksquad_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/honksquad_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/honksquad_name = pick(clown_names)
|
||||
var/honksquad_name = pick(GLOB.clown_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(honk_leader_selected)
|
||||
|
||||
@@ -48,7 +48,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
|
||||
if(pick_manually)
|
||||
var/list/possible_ghosts = list()
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(!G.client.is_afk())
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
possible_ghosts += G
|
||||
@@ -69,7 +69,7 @@ var/global/sent_syndicate_infiltration_team = 0
|
||||
var/list/sit_spawns = list()
|
||||
var/list/sit_spawns_leader = list()
|
||||
var/list/sit_spawns_mgmt = list()
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Syndicate-Infiltrator")
|
||||
sit_spawns += L
|
||||
if(L.name == "Syndicate-Infiltrator-Leader")
|
||||
|
||||
@@ -212,19 +212,19 @@
|
||||
typecache = typecacheof(typecache)
|
||||
. = list()
|
||||
if(ispath(T, /mob))
|
||||
for(var/mob/thing in mob_list)
|
||||
for(var/mob/thing in GLOB.mob_list)
|
||||
if(typecache[thing.type])
|
||||
. += thing
|
||||
CHECK_TICK
|
||||
|
||||
else if(ispath(T, /obj/machinery/door))
|
||||
for(var/obj/machinery/door/thing in airlocks)
|
||||
for(var/obj/machinery/door/thing in GLOB.airlocks)
|
||||
if(typecache[thing.type])
|
||||
. += thing
|
||||
CHECK_TICK
|
||||
|
||||
else if(ispath(T, /obj/machinery))
|
||||
for(var/obj/machinery/thing in machines)
|
||||
for(var/obj/machinery/thing in GLOB.machines)
|
||||
if(typecache[thing.type])
|
||||
. += thing
|
||||
CHECK_TICK
|
||||
@@ -254,7 +254,7 @@
|
||||
CHECK_TICK
|
||||
|
||||
else if(ispath(T, /client))
|
||||
for(var/client/thing in clients)
|
||||
for(var/client/thing in GLOB.clients)
|
||||
if(typecache[thing.type])
|
||||
. += thing
|
||||
CHECK_TICK
|
||||
|
||||
@@ -195,7 +195,7 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height",
|
||||
|
||||
|
||||
if(VV_CLIENT)
|
||||
.["value"] = input("Select reference:", "Reference", current_value) as null|anything in clients
|
||||
.["value"] = input("Select reference:", "Reference", current_value) as null|anything in GLOB.clients
|
||||
if(.["value"] == null)
|
||||
.["class"] = null
|
||||
return
|
||||
@@ -516,6 +516,24 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height",
|
||||
log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]")
|
||||
message_admins("[key_name_admin(src)] modified [original_name]'s varlist [objectvar]: [original_var]=[new_var]")
|
||||
|
||||
/proc/vv_varname_lockcheck(param_var_name)
|
||||
if(param_var_name in VVlocked)
|
||||
if(!check_rights(R_DEBUG))
|
||||
return FALSE
|
||||
if(param_var_name in VVckey_edit)
|
||||
if(!check_rights(R_EVENT | R_DEBUG))
|
||||
return FALSE
|
||||
if(param_var_name in VVicon_edit_lock)
|
||||
if(!check_rights(R_EVENT | R_DEBUG))
|
||||
return FALSE
|
||||
if(param_var_name in VVpixelmovement)
|
||||
if(!check_rights(R_DEBUG))
|
||||
return FALSE
|
||||
var/prompt = alert(usr, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT")
|
||||
if(prompt != "Continue")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/client/proc/modify_variables(atom/O, param_var_name = null, autodetect_class = 0)
|
||||
if(!check_rights(R_VAREDIT))
|
||||
return
|
||||
@@ -544,25 +562,11 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height",
|
||||
if(!O.can_vv_get(variable))
|
||||
return
|
||||
|
||||
if(!vv_varname_lockcheck(variable))
|
||||
return
|
||||
|
||||
var_value = O.vars[variable]
|
||||
|
||||
if(variable in VVlocked)
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
if(variable in VVckey_edit)
|
||||
if(!check_rights(R_EVENT | R_DEBUG))
|
||||
return
|
||||
if(variable in VVicon_edit_lock)
|
||||
if(!check_rights(R_EVENT | R_DEBUG))
|
||||
return
|
||||
if(variable in VVpixelmovement)
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
var/prompt = alert(src, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT")
|
||||
if(prompt != "Continue")
|
||||
return
|
||||
|
||||
|
||||
var/default = vv_get_class(var_value)
|
||||
|
||||
if(isnull(default))
|
||||
|
||||
@@ -32,7 +32,7 @@ client/proc/one_click_antag()
|
||||
if(M.stat || !M.mind || M.mind.special_role)
|
||||
return FALSE
|
||||
if(temp)
|
||||
if(M.mind.assigned_role in temp.restricted_jobs || M.client.prefs.species in temp.protected_species)
|
||||
if((M.mind.assigned_role in temp.restricted_jobs) || (M.client.prefs.species in temp.protected_species))
|
||||
return FALSE
|
||||
if(role) // Don't even bother evaluating if there's no role
|
||||
if(player_old_enough_antag(M.client,role) && (role in M.client.prefs.be_special) && (!jobban_isbanned(M, role)))
|
||||
@@ -57,7 +57,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making [antnum] traitors with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making [antnum] traitors with One-Click-Antag")
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
for(var/mob/living/carbon/human/applicant in GLOB.player_list)
|
||||
if(CandCheck(ROLE_TRAITOR, applicant, temp))
|
||||
candidates += applicant
|
||||
|
||||
@@ -88,7 +88,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making [antnum] changelings with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making [antnum] changelings with One-Click-Antag")
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
for(var/mob/living/carbon/human/applicant in GLOB.player_list)
|
||||
if(CandCheck(ROLE_CHANGELING, applicant, temp))
|
||||
candidates += applicant
|
||||
|
||||
@@ -118,7 +118,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making [antnum] revolutionaries with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making [antnum] revolutionaries with One-Click-Antag")
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
for(var/mob/living/carbon/human/applicant in GLOB.player_list)
|
||||
if(CandCheck(ROLE_REV, applicant, temp))
|
||||
candidates += applicant
|
||||
|
||||
@@ -166,7 +166,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making a Cult with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making a Cult with One-Click-Antag")
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
for(var/mob/living/carbon/human/applicant in GLOB.player_list)
|
||||
if(CandCheck(ROLE_CULTIST, applicant, temp))
|
||||
candidates += applicant
|
||||
|
||||
@@ -195,7 +195,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
|
||||
|
||||
for(var/mob/G in respawnable_list)
|
||||
for(var/mob/G in GLOB.respawnable_list)
|
||||
if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special))
|
||||
if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate"))
|
||||
if(player_old_enough_antag(G.client,ROLE_OPERATIVE))
|
||||
@@ -328,7 +328,7 @@ client/proc/one_click_antag()
|
||||
var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned.
|
||||
|
||||
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
|
||||
for(var/mob/G in respawnable_list)
|
||||
for(var/mob/G in GLOB.respawnable_list)
|
||||
if(!jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
@@ -399,7 +399,7 @@ client/proc/one_click_antag()
|
||||
var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc)
|
||||
var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
var/syndicate_commando_name = pick(GLOB.last_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(syndicate_leader_selected)
|
||||
@@ -437,7 +437,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making Vox Raiders with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making Vox Raiders with One-Click-Antag")
|
||||
//Generates a list of candidates from active ghosts.
|
||||
for(var/mob/G in respawnable_list)
|
||||
for(var/mob/G in GLOB.respawnable_list)
|
||||
if(istype(G) && G.client && (ROLE_RAIDER in G.client.prefs.be_special))
|
||||
if(player_old_enough_antag(G.client,ROLE_RAIDER))
|
||||
if(!jobban_isbanned(G, "raider") && !jobban_isbanned(G, "Syndicate"))
|
||||
@@ -542,7 +542,7 @@ client/proc/one_click_antag()
|
||||
log_admin("[key_name(owner)] tried making Vampires with One-Click-Antag")
|
||||
message_admins("[key_name_admin(owner)] tried making Vampires with One-Click-Antag")
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
for(var/mob/living/carbon/human/applicant in GLOB.player_list)
|
||||
if(CandCheck(ROLE_VAMPIRE, applicant, temp))
|
||||
candidates += applicant
|
||||
|
||||
@@ -567,7 +567,7 @@ client/proc/one_click_antag()
|
||||
message_admins("[key_name_admin(owner)] tried making Thunderdone Teams with One-Click-Antag")
|
||||
|
||||
//Generates a list of candidates from active ghosts.
|
||||
for(var/mob/G in respawnable_list)
|
||||
for(var/mob/G in GLOB.respawnable_list)
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a Thunderdome match about to start?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
var/list/incompatible_species = list("Plasmaman", "Vox")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox)
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
continue
|
||||
if(is_special_character(H))
|
||||
continue
|
||||
if(H.species.name in incompatible_species)
|
||||
H.set_species("Human")
|
||||
if(is_type_in_list(H.dna.species, incompatible_species))
|
||||
H.set_species(/datum/species/human)
|
||||
var/datum/preferences/A = new() // Randomize appearance
|
||||
A.copy_to(H)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
W.assignment = "Highlander"
|
||||
W.registered_name = H.real_name
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
H.species.after_equip_job(null, H)
|
||||
H.dna.species.after_equip_job(null, H)
|
||||
H.regenerate_icons()
|
||||
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
@@ -62,7 +62,7 @@
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(is_special_character(H)) continue
|
||||
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
var/list/incompatible_species = list("Plasmaman", "Vox")
|
||||
var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox)
|
||||
var/team_toggle = 0
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == DEAD || !(H.client))
|
||||
continue
|
||||
if(is_special_character(H))
|
||||
continue
|
||||
if(H.species.name in incompatible_species)
|
||||
H.set_species("Human")
|
||||
if(is_type_in_list(H.dna.species, incompatible_species))
|
||||
H.set_species(/datum/species/human)
|
||||
var/datum/preferences/A = new() // Randomize appearance
|
||||
A.copy_to(H)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
team_toggle = !team_toggle
|
||||
H.species.after_equip_job(null, H)
|
||||
H.dna.species.after_equip_job(null, H)
|
||||
H.regenerate_icons()
|
||||
|
||||
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
|
||||
@@ -10,7 +10,7 @@ var/list/sounds_cache = list()
|
||||
|
||||
log_admin("[key_name(src)] stopped admin sounds.")
|
||||
message_admins("[key_name_admin(src)] stopped admin sounds.", 1)
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
M << awful_sound
|
||||
|
||||
/client/proc/play_sound(S as sound)
|
||||
@@ -28,7 +28,7 @@ var/list/sounds_cache = list()
|
||||
|
||||
log_admin("[key_name(src)] played sound [S]")
|
||||
message_admins("[key_name_admin(src)] played sound [S]", 1)
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M.client.prefs.sound & SOUND_MIDI)
|
||||
M << uploaded_sound
|
||||
|
||||
@@ -92,7 +92,7 @@ var/list/sounds_cache = list()
|
||||
if(C == "Yep")
|
||||
ignore_power = 1
|
||||
|
||||
for(var/O in global_intercoms)
|
||||
for(var/O in GLOB.global_intercoms)
|
||||
var/obj/item/radio/intercom/I = O
|
||||
if(!is_station_level(I.z) && !ignore_z)
|
||||
continue
|
||||
|
||||
@@ -28,20 +28,20 @@
|
||||
prayer_type = "CULTIST PRAYER"
|
||||
deity = ticker.cultdat.entity_name
|
||||
|
||||
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]:</font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=[UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
|
||||
log_say("(PRAYER) [msg]", usr)
|
||||
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]:</font>[key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
|
||||
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, msg)
|
||||
to_chat(usr, "Your prayers have been received by the gods.")
|
||||
|
||||
feedback_add_details("admin_verb","PR") //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(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='boldnotice'><font color=orange>CENTCOMM: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=[Sender.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</span> [msg]"
|
||||
for(var/client/X in admins)
|
||||
msg = "<span class='boldnotice'><font color=orange>CENTCOMM: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")])):</span> [msg]"
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(R_EVENT & X.holder.rights)
|
||||
to_chat(X, msg)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
@@ -49,8 +49,8 @@
|
||||
|
||||
/proc/Syndicate_announce(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='boldnotice'><font color='#DC143C'>SYNDICATE: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=[Sender.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>REPLY</A>):</span> [msg]"
|
||||
for(var/client/X in admins)
|
||||
msg = "<span class='boldnotice'><font color='#DC143C'>SYNDICATE: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]):</span> [msg]"
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, msg)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
@@ -58,8 +58,8 @@
|
||||
|
||||
/proc/HONK_announce(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='boldnotice'><font color=pink>HONK: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=[Sender.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;HONKReply=\ref[Sender]'>RPLY</A>):</span> [msg]"
|
||||
for(var/client/X in admins)
|
||||
msg = "<span class='boldnotice'><font color=pink>HONK: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_BSA(Sender,"BSA")]) (<A HREF='?_src_=holder;HONKReply=[Sender.UID()]'>RPLY</A>):</span> [msg]"
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(R_EVENT & X.holder.rights)
|
||||
to_chat(X, msg)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
@@ -67,10 +67,10 @@
|
||||
|
||||
/proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=[Sender.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;ErtReply=\ref[Sender]'>RESPOND</A>):</b> [msg]</span>"
|
||||
msg = "<span class='adminnotice'><b><font color=orange>ERT REQUEST: </font>[key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_BSA(Sender,"BSA")]) (<A HREF='?_src_=holder;ErtReply=[Sender.UID()]'>RESPOND</A>):</b> [msg]</span>"
|
||||
if(repeat_warning)
|
||||
msg += "<BR><span class='adminnotice'><b>WARNING: ERT request has gone 5 minutes with no reply!</b></span>"
|
||||
for(var/client/X in admins)
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, msg)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
@@ -79,10 +79,10 @@
|
||||
/proc/Nuke_request(text , mob/Sender)
|
||||
var/nuke_code = get_nuke_code()
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='adminnotice'><b><font color=orange>NUKE CODE REQUEST: </font>[key_name(Sender)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=[Sender.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]</span>"
|
||||
for(var/client/X in admins)
|
||||
msg = "<span class='adminnotice'><b><font color=orange>NUKE CODE REQUEST: </font>[key_name(Sender)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")]):</b> [msg]</span>"
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
to_chat(X, msg)
|
||||
to_chat(X, "<span class='adminnotice'><b>The nuke code is [nuke_code].</b></span>")
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/client/proc/cmd_admin_drop_everything(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_drop_everything(mob/M as mob in GLOB.mob_list)
|
||||
set category = null
|
||||
set name = "Drop Everything"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
message_admins("[key_name_admin(usr)] made [key_name_admin(M)] drop everything!", 1)
|
||||
feedback_add_details("admin_verb","DEVR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_prison(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_prison(mob/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Prison"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</span>", 1)
|
||||
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_subtle_message(mob/M as mob in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Subtle Message"
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
var/missing_ages = 0
|
||||
var/msg = ""
|
||||
for(var/client/C in clients)
|
||||
for(var/client/C in GLOB.clients)
|
||||
if(C.player_age == "Requires database")
|
||||
missing_ages = 1
|
||||
continue
|
||||
@@ -141,7 +141,47 @@
|
||||
message_admins("<span class='boldnotice'>DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]<BR></span>", 1)
|
||||
feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_godmode(mob/M as mob in mob_list)
|
||||
|
||||
|
||||
|
||||
/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Headset Message"
|
||||
|
||||
admin_headset_message(M)
|
||||
|
||||
/client/proc/admin_headset_message(mob/M in GLOB.mob_list, sender = null)
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!istype(H))
|
||||
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/radio/headset) && !istype(H.r_ear, /obj/item/radio/headset))
|
||||
to_chat(usr, "The person you are trying to contact is not wearing a headset")
|
||||
return
|
||||
|
||||
if(!sender)
|
||||
sender = input("Who is the message from?", "Sender") as null|anything in list("Centcomm", "Syndicate")
|
||||
if(!sender)
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] has started answering [key_name_admin(H)]'s [sender] request.")
|
||||
var/input = input("Please enter a message to reply to [key_name(H)] via their headset.", "Outgoing message from [sender]", "") as text|null
|
||||
if(!input)
|
||||
message_admins("[key_name_admin(src)] decided not to answer [key_name_admin(H)]'s [sender] request.")
|
||||
return
|
||||
|
||||
log_admin("[key_name(src)] replied to [key_name(H)]'s [sender] message with the message [input].")
|
||||
message_admins("[key_name_admin(src)] replied to [key_name_admin(H)]'s [sender] 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 [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] <span class='bold'>[input].</span> Message ends.\"")
|
||||
|
||||
|
||||
|
||||
|
||||
/client/proc/cmd_admin_godmode(mob/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Godmode"
|
||||
|
||||
@@ -302,7 +342,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
|
||||
var/mob/dead/observer/G_found
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(G.ckey == input)
|
||||
G_found = G
|
||||
break
|
||||
@@ -395,6 +435,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
//Now for special roles and equipment.
|
||||
switch(new_character.mind.special_role)
|
||||
if("traitor")
|
||||
job_master.AssignRank(new_character, new_character.mind.assigned_role, 0)
|
||||
job_master.EquipRank(new_character, new_character.mind.assigned_role, 1)
|
||||
ticker.mode.equip_traitor(new_character)
|
||||
if("Wizard")
|
||||
@@ -425,6 +466,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
call(/datum/game_mode/proc/add_law_zero)(new_character)
|
||||
//Add aliens.
|
||||
else
|
||||
job_master.AssignRank(new_character, new_character.mind.assigned_role, 0)
|
||||
job_master.EquipRank(new_character, new_character.mind.assigned_role, 1)//Or we simply equip them.
|
||||
|
||||
//Announces the character on all the systems, based on the record.
|
||||
@@ -448,7 +490,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
/proc/create_xeno(ckey)
|
||||
if(!ckey)
|
||||
var/list/candidates = list()
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(M.stat != DEAD) continue //we are not dead!
|
||||
if(!(ROLE_ALIEN in M.client.prefs.be_special)) continue //we don't want to be an alium
|
||||
if(jobban_isbanned(M, "alien") || jobban_isbanned(M, "Syndicate")) continue //we are jobbanned
|
||||
@@ -483,7 +525,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
var/list/mobs = list()
|
||||
var/list/ghosts = list()
|
||||
var/list/sortmob = sortAtom(mob_list) // get the mob list.
|
||||
var/list/sortmob = sortAtom(GLOB.mob_list) // get the mob list.
|
||||
/var/any=0
|
||||
for(var/mob/dead/observer/M in sortmob)
|
||||
mobs.Add(M) //filter it where it's only ghosts
|
||||
@@ -522,7 +564,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in GLOB.mob_list)
|
||||
set category = "Event"
|
||||
set name = "Rejuvenate"
|
||||
|
||||
@@ -621,8 +663,17 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
|
||||
if(job_master)
|
||||
var/currentpositiontally
|
||||
var/totalpositiontally
|
||||
to_chat(src, "<span class='notice'>Job Name: Filled job slot / Total job slots <b>(Free job slots)</b></span>")
|
||||
for(var/datum/job/job in job_master.occupations)
|
||||
to_chat(src, "[job.title]: [job.total_positions]")
|
||||
to_chat(src, "<span class='notice'>[job.title]: [job.current_positions] / \
|
||||
[job.total_positions == -1 ? "<b>UNLIMITED</b>" : job.total_positions] \
|
||||
<b>([job.total_positions == -1 ? "UNLIMITED" : job.total_positions - job.current_positions])</b></span>")
|
||||
if(job.total_positions != -1) // Only count position that isn't unlimited
|
||||
currentpositiontally += job.current_positions
|
||||
totalpositiontally += job.total_positions
|
||||
to_chat(src, "<b>Currently filled job slots (Excluding unlimited): [currentpositiontally] / [totalpositiontally] ([totalpositiontally - currentpositiontally])</b>")
|
||||
feedback_add_details("admin_verb","LFS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in view())
|
||||
@@ -679,7 +730,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
else
|
||||
return
|
||||
|
||||
/client/proc/cmd_admin_gib(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_gib(mob/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Gib"
|
||||
|
||||
@@ -719,7 +770,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] used gibself.</span>", 1)
|
||||
feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_check_contents(mob/living/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_check_contents(mob/living/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Check Contents"
|
||||
|
||||
@@ -754,7 +805,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
set category = "Admin"
|
||||
set name = "Call Shuttle"
|
||||
|
||||
if(shuttle_master.emergency.mode >= SHUTTLE_DOCKED)
|
||||
if(SSshuttle.emergency.mode >= SHUTTLE_DOCKED)
|
||||
return
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -764,11 +815,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(confirm != "Yes") return
|
||||
|
||||
if(alert("Set Shuttle Recallable (Select Yes unless you know what this does)", "Recallable?", "Yes", "No") == "Yes")
|
||||
shuttle_master.emergency.canRecall = TRUE
|
||||
SSshuttle.emergency.canRecall = TRUE
|
||||
else
|
||||
shuttle_master.emergency.canRecall = FALSE
|
||||
SSshuttle.emergency.canRecall = FALSE
|
||||
|
||||
shuttle_master.emergency.request()
|
||||
SSshuttle.emergency.request()
|
||||
|
||||
feedback_add_details("admin_verb","CSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] admin-called the emergency shuttle.")
|
||||
@@ -783,20 +834,20 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") return
|
||||
|
||||
if(shuttle_master.emergency.mode >= SHUTTLE_DOCKED)
|
||||
if(SSshuttle.emergency.mode >= SHUTTLE_DOCKED)
|
||||
return
|
||||
|
||||
if(shuttle_master.emergency.canRecall == FALSE)
|
||||
if(SSshuttle.emergency.canRecall == FALSE)
|
||||
if(alert("Shuttle is currently set to be nonrecallable. Recalling may break things. Respect Recall Status?", "Override Recall Status?", "Yes", "No") == "Yes")
|
||||
return
|
||||
else
|
||||
var/keepStatus = alert("Maintain recall status on future shuttle calls?", "Maintain Status?", "Yes", "No") == "Yes" //Keeps or drops recallability
|
||||
shuttle_master.emergency.canRecall = TRUE // must be true for cancel proc to work
|
||||
shuttle_master.emergency.cancel()
|
||||
SSshuttle.emergency.canRecall = TRUE // must be true for cancel proc to work
|
||||
SSshuttle.emergency.cancel()
|
||||
if(keepStatus)
|
||||
shuttle_master.emergency.canRecall = FALSE // restores original status
|
||||
SSshuttle.emergency.canRecall = FALSE // restores original status
|
||||
else
|
||||
shuttle_master.emergency.cancel()
|
||||
SSshuttle.emergency.cancel()
|
||||
|
||||
feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] admin-recalled the emergency shuttle.")
|
||||
@@ -813,13 +864,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(shuttle_master)
|
||||
shuttle_master.emergencyNoEscape = !shuttle_master.emergencyNoEscape
|
||||
if(SSshuttle)
|
||||
SSshuttle.emergencyNoEscape = !SSshuttle.emergencyNoEscape
|
||||
|
||||
log_admin("[key_name(src)] has [shuttle_master.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.")
|
||||
message_admins("[key_name_admin(usr)] has [shuttle_master.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.")
|
||||
log_admin("[key_name(src)] has [SSshuttle.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.")
|
||||
message_admins("[key_name_admin(usr)] has [SSshuttle.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.")
|
||||
|
||||
/client/proc/cmd_admin_attack_log(mob/M as mob in mob_list)
|
||||
/client/proc/cmd_admin_attack_log(mob/M as mob in GLOB.mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Attack Log"
|
||||
|
||||
@@ -916,7 +967,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
var/job_string
|
||||
var/key_string
|
||||
var/role_string
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
for(var/mob/living/carbon/human/H in GLOB.living_mob_list)
|
||||
if(!isLivingSSD(H))
|
||||
continue
|
||||
mins_ssd = round((world.time - H.last_logout) / 600)
|
||||
@@ -934,7 +985,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!H.key && H.mind.key)
|
||||
key_string = H.mind.key
|
||||
msg += "<TR><TD>[key_string]</TD><TD>[H.real_name]</TD><TD>[job_string]</TD><TD>[mins_ssd]</TD><TD>[role_string]</TD>"
|
||||
msg += "<TD>[get_area(H)]</TD><TD><A HREF='?_src_=holder;adminplayeropts=\ref[H]'>PP</A></TD>"
|
||||
msg += "<TD>[get_area(H)]</TD><TD>[ADMIN_PP(H,"PP")]</TD>"
|
||||
if(istype(H.loc, /obj/machinery/cryopod))
|
||||
msg += "<TD>In Cryo</TD>"
|
||||
else
|
||||
|
||||
@@ -48,7 +48,7 @@ var/global/sent_strike_team = 0
|
||||
var/commando_number = commandos_possible //for selecting a leader
|
||||
var/is_leader = TRUE // set to FALSE after leader is spawned
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
|
||||
if(commando_number <= 0)
|
||||
break
|
||||
@@ -108,7 +108,7 @@ var/global/sent_strike_team = 0
|
||||
commando_number--
|
||||
|
||||
//Spawns the rest of the commando gear.
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Commando_Manual")
|
||||
//new /obj/item/gun/energy/pulse_rifle(L.loc)
|
||||
var/obj/item/paper/P = new(L.loc)
|
||||
@@ -119,7 +119,7 @@ var/global/sent_strike_team = 0
|
||||
P.stamp(stamp)
|
||||
qdel(stamp)
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Commando-Bomb")
|
||||
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
|
||||
qdel(L)
|
||||
@@ -132,7 +132,7 @@ var/global/sent_strike_team = 0
|
||||
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
|
||||
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/commando_name = pick(last_names)
|
||||
var/commando_name = pick(GLOB.last_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(is_leader)
|
||||
|
||||
@@ -53,7 +53,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
sent_syndicate_strike_team = 1
|
||||
|
||||
//Spawns commandos and equips them.
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
|
||||
if(syndicate_commando_number <= 0)
|
||||
break
|
||||
@@ -88,7 +88,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
is_leader = FALSE
|
||||
syndicate_commando_number--
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Syndicate-Commando-Bomb")
|
||||
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
|
||||
qdel(L)
|
||||
@@ -101,7 +101,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc)
|
||||
var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
var/syndicate_commando_name = pick(GLOB.last_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(is_leader)
|
||||
|
||||
Reference in New Issue
Block a user