Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into Arntyougoingtosayhello

This commit is contained in:
Aurorablade
2018-10-23 18:17:32 -04:00
1236 changed files with 45153 additions and 25846 deletions
+121 -159
View File
@@ -13,7 +13,7 @@
if(href_list["rejectadminhelp"])
if(!check_rights(R_ADMIN|R_MOD))
return
var/client/C = locate(href_list["rejectadminhelp"])
var/client/C = locateUID(href_list["rejectadminhelp"])
if(!C)
return
@@ -30,7 +30,7 @@
if(!check_rights(R_ADMIN))
return
var/ticketID = text2num(href_list["openadminticket"])
globAdminTicketHolder.showDetailUI(usr, ticketID)
SStickets.showDetailUI(usr, ticketID)
if(href_list["stickyban"])
stickyban(href_list["stickyban"],href_list)
@@ -146,7 +146,7 @@
var/mob/playermob
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
if(M.ckey == banckey)
playermob = M
break
@@ -238,7 +238,7 @@
else
D = new /datum/admins(new_rank, rights, adm_ckey)
var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in)
var/client/C = GLOB.directory[adm_ckey] //find the client with the specified ckey (if they are logged in)
D.associate(C) //link up with the client and add verbs
updateranktodb(adm_ckey, new_rank)
@@ -274,22 +274,22 @@
switch(href_list["call_shuttle"])
if("1")
if(shuttle_master.emergency.mode >= SHUTTLE_DOCKED)
if(SSshuttle.emergency.mode >= SHUTTLE_DOCKED)
return
shuttle_master.emergency.request()
SSshuttle.emergency.request()
log_admin("[key_name(usr)] called the Emergency Shuttle")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] called the Emergency Shuttle to the station</span>")
if("2")
if(shuttle_master.emergency.mode >= SHUTTLE_DOCKED)
if(SSshuttle.emergency.mode >= SHUTTLE_DOCKED)
return
switch(shuttle_master.emergency.mode)
switch(SSshuttle.emergency.mode)
if(SHUTTLE_CALL)
shuttle_master.emergency.cancel()
SSshuttle.emergency.cancel()
log_admin("[key_name(usr)] sent the Emergency Shuttle back")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] sent the Emergency Shuttle back</span>")
else
shuttle_master.emergency.cancel()
SSshuttle.emergency.cancel()
log_admin("[key_name(usr)] called the Emergency Shuttle")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] called the Emergency Shuttle to the station</span>")
@@ -299,10 +299,10 @@
else if(href_list["edit_shuttle_time"])
if(!check_rights(R_SERVER)) return
var/timer = input("Enter new shuttle duration (seconds):","Edit Shuttle Timeleft", shuttle_master.emergency.timeLeft() ) as num
shuttle_master.emergency.setTimer(timer*10)
var/timer = input("Enter new shuttle duration (seconds):","Edit Shuttle Timeleft", SSshuttle.emergency.timeLeft() ) as num
SSshuttle.emergency.setTimer(timer*10)
log_admin("[key_name(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds")
minor_announcement.Announce("The emergency shuttle will reach its destination in [round(shuttle_master.emergency.timeLeft(600))] minutes.")
minor_announcement.Announce("The emergency shuttle will reach its destination in [round(SSshuttle.emergency.timeLeft(600))] minutes.")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds</span>")
href_list["secrets"] = "check_antagonist"
@@ -317,7 +317,7 @@
else if(href_list["simplemake"])
if(!check_rights(R_SPAWN)) return
var/mob/M = locate(href_list["mob"])
var/mob/M = locateUID(href_list["mob"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -426,7 +426,7 @@
else if(href_list["appearanceban"])
if(!check_rights(R_BAN))
return
var/mob/M = locate(href_list["appearanceban"])
var/mob/M = locateUID(href_list["appearanceban"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -475,7 +475,7 @@
else if(href_list["jobban2"])
// if(!check_rights(R_BAN)) return
var/mob/M = locate(href_list["jobban2"])
var/mob/M = locateUID(href_list["jobban2"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -501,17 +501,17 @@
//Regular jobs
//Command (Blue)
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr align='center' bgcolor='ccccff'><th colspan='[length(command_positions)]'><a href='?src=[UID()];jobban3=commanddept;jobban4=\ref[M]'>Command Positions</a></th></tr><tr align='center'>"
jobs += "<tr align='center' bgcolor='ccccff'><th colspan='[length(command_positions)]'><a href='?src=[UID()];jobban3=commanddept;jobban4=[M.UID()]'>Command Positions</a></th></tr><tr align='center'>"
for(var/jobPos in command_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 6) //So things dont get squiiiiished!
@@ -522,17 +522,17 @@
//Security (Red)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffddf0'><th colspan='[length(security_positions)]'><a href='?src=[UID()];jobban3=securitydept;jobban4=\ref[M]'>Security Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffddf0'><th colspan='[length(security_positions)]'><a href='?src=[UID()];jobban3=securitydept;jobban4=[M.UID()]'>Security Positions</a></th></tr><tr align='center'>"
for(var/jobPos in security_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -543,17 +543,17 @@
//Engineering (Yellow)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='fff5cc'><th colspan='[length(engineering_positions)]'><a href='?src=[UID()];jobban3=engineeringdept;jobban4=\ref[M]'>Engineering Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='fff5cc'><th colspan='[length(engineering_positions)]'><a href='?src=[UID()];jobban3=engineeringdept;jobban4=[M.UID()]'>Engineering Positions</a></th></tr><tr align='center'>"
for(var/jobPos in engineering_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -564,17 +564,17 @@
//Medical (White)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeef0'><th colspan='[length(medical_positions)]'><a href='?src=[UID()];jobban3=medicaldept;jobban4=\ref[M]'>Medical Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeef0'><th colspan='[length(medical_positions)]'><a href='?src=[UID()];jobban3=medicaldept;jobban4=[M.UID()]'>Medical Positions</a></th></tr><tr align='center'>"
for(var/jobPos in medical_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -585,17 +585,17 @@
//Science (Purple)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='e79fff'><th colspan='[length(science_positions)]'><a href='?src=[UID()];jobban3=sciencedept;jobban4=\ref[M]'>Science Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='e79fff'><th colspan='[length(science_positions)]'><a href='?src=[UID()];jobban3=sciencedept;jobban4=[M.UID()]'>Science Positions</a></th></tr><tr align='center'>"
for(var/jobPos in science_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -606,17 +606,17 @@
//Support (Grey)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(support_positions)]'><a href='?src=[UID()];jobban3=supportdept;jobban4=\ref[M]'>Support Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(support_positions)]'><a href='?src=[UID()];jobban3=supportdept;jobban4=[M.UID()]'>Support Positions</a></th></tr><tr align='center'>"
for(var/jobPos in support_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -627,17 +627,17 @@
//Non-Human (Green)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(nonhuman_positions)+1]'><a href='?src=[UID()];jobban3=nonhumandept;jobban4=\ref[M]'>Non-human Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(nonhuman_positions)+1]'><a href='?src=[UID()];jobban3=nonhumandept;jobban4=[M.UID()]'>Non-human Positions</a></th></tr><tr align='center'>"
for(var/jobPos in nonhuman_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -646,29 +646,29 @@
//Drone
if(jobban_isbanned(M, "Drone"))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=\ref[M]'><font color=red>Drone</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=[M.UID()]'><font color=red>Drone</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=\ref[M]'>Drone</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=Drone;jobban4=[M.UID()]'>Drone</a></td>"
//pAI
if(jobban_isbanned(M, "pAI"))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=\ref[M]'><font color=red>pAI</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=[M.UID()]'><font color=red>pAI</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=\ref[M]'>pAI</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=pAI;jobban4=[M.UID()]'>pAI</a></td>"
jobs += "</tr></table>"
//Antagonist (Orange)
var/isbanned_dept = jobban_isbanned(M, "Syndicate")
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='?src=[UID()];jobban3=Syndicate;jobban4=\ref[M]'>Antagonist Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='?src=[UID()];jobban3=Syndicate;jobban4=[M.UID()]'>Antagonist Positions</a></th></tr><tr align='center'>"
counter = 0
for(var/role in antag_roles)
if(jobban_isbanned(M, role) || isbanned_dept)
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=\ref[M]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=\ref[M]'>[replacetext(role, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()]'>[replacetext(role, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -683,9 +683,9 @@
counter = 0
for(var/role in other_roles)
if(jobban_isbanned(M, role) || isbanned_dept)
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=\ref[M]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()]'><font color=red>[replacetext(role, " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=\ref[M]'>[replacetext(role, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[role];jobban4=[M.UID()]'>[replacetext(role, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -696,17 +696,17 @@
//Whitelisted positions
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(whitelisted_positions)]'><a href='?src=[UID()];jobban3=whitelistdept;jobban4=\ref[M]'>Whitelisted Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='dddddd'><th colspan='[length(whitelisted_positions)]'><a href='?src=[UID()];jobban3=whitelistdept;jobban4=[M.UID()]'>Whitelisted Positions</a></th></tr><tr align='center'>"
for(var/jobPos in whitelisted_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=\ref[M]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='?src=[UID()];jobban3=[job.title];jobban4=[M.UID()]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if(counter >= 5) //So things dont get squiiiiished!
@@ -723,7 +723,7 @@
else if(href_list["jobban3"])
if(!check_rights(R_BAN)) return
var/mob/M = locate(href_list["jobban4"])
var/mob/M = locateUID(href_list["jobban4"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -885,10 +885,10 @@
return 0 //we didn't do anything!
else if(href_list["boot2"])
var/mob/M = locate(href_list["boot2"])
var/mob/M = locateUID(href_list["boot2"])
if(ismob(M))
if(M.client && M.client.holder && (M.client.holder.rights & R_BAN))
to_chat(src, "<span class='warning'>[key_name_admin(M)] cannot be kicked from the server.</span>")
to_chat(usr, "<span class='warning'>[key_name_admin(M)] cannot be kicked from the server.</span>")
return
to_chat(M, "<span class='warning'>You have been kicked from the server</span>")
log_admin("[key_name(usr)] booted [key_name(M)].")
@@ -958,7 +958,7 @@
else if(href_list["newban"])
if(!check_rights(R_BAN)) return
var/mob/M = locate(href_list["newban"])
var/mob/M = locateUID(href_list["newban"])
if(!ismob(M)) return
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
@@ -1016,7 +1016,7 @@
//Watchlist
else if(href_list["watchadd"])
var/target_ckey = locate(href_list["watchadd"])
var/target_ckey = href_list["watchadd"]
usr.client.watchlist_add(target_ckey)
else if(href_list["watchremove"])
@@ -1062,7 +1062,7 @@
if(!check_rights(R_ADMIN|R_MOD))
return
var/mob/M = locate(href_list["mute"])
var/mob/M = locateUID(href_list["mute"])
if(!ismob(M)) return
if(!M.client) return
@@ -1128,7 +1128,7 @@
else if(href_list["monkeyone"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["monkeyone"])
var/mob/living/carbon/human/H = locateUID(href_list["monkeyone"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1143,7 +1143,7 @@
else if(href_list["corgione"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["corgione"])
var/mob/living/carbon/human/H = locateUID(href_list["corgione"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1158,7 +1158,7 @@
else if(href_list["makePAI"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makePAI"])
var/mob/living/carbon/human/H = locateUID(href_list["makePAI"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1182,7 +1182,7 @@
else if(href_list["forcespeech"])
if(!check_rights(R_SERVER|R_EVENT)) return
var/mob/M = locate(href_list["forcespeech"])
var/mob/M = locateUID(href_list["forcespeech"])
if(!ismob(M))
to_chat(usr, "this can only be used on instances of type /mob")
@@ -1199,7 +1199,7 @@
if(alert(usr, "Send to admin prison for the round?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["sendtoprison"])
var/mob/M = locateUID(href_list["sendtoprison"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1216,8 +1216,7 @@
//strip their stuff and stick it in the crate
for(var/obj/item/I in M)
M.unEquip(I)
if(I)
if(M.unEquip(I))
I.loc = locker
I.layer = initial(I.layer)
I.plane = initial(I.plane)
@@ -1243,7 +1242,7 @@
if(!check_rights(R_ADMIN))
return
var/mob/M = locate(href_list["sendbacktolobby"])
var/mob/M = locateUID(href_list["sendbacktolobby"])
if(!isobserver(M))
to_chat(usr, "<span class='notice'>You can only send ghost players back to the Lobby.</span>")
@@ -1260,7 +1259,7 @@
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] back to the Lobby.")
var/mob/new_player/NP = new()
non_respawnable_keys -= M.ckey
GLOB.non_respawnable_keys -= M.ckey
NP.ckey = M.ckey
qdel(M)
@@ -1270,7 +1269,7 @@
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["tdome1"])
var/mob/M = locateUID(href_list["tdome1"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1300,7 +1299,7 @@
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["tdome2"])
var/mob/M = locateUID(href_list["tdome2"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1330,7 +1329,7 @@
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["tdomeadmin"])
var/mob/M = locateUID(href_list["tdomeadmin"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1352,7 +1351,7 @@
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["tdomeobserve"])
var/mob/M = locateUID(href_list["tdomeobserve"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1386,7 +1385,7 @@
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes")
return
var/mob/M = locate(href_list["aroomwarp"])
var/mob/M = locateUID(href_list["aroomwarp"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob")
return
@@ -1406,7 +1405,7 @@
else if(href_list["revive"])
if(!check_rights(R_REJUVINATE)) return
var/mob/living/L = locate(href_list["revive"])
var/mob/living/L = locateUID(href_list["revive"])
if(!istype(L))
to_chat(usr, "This can only be used on instances of type /mob/living")
return
@@ -1418,7 +1417,7 @@
else if(href_list["makeai"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeai"])
var/mob/living/carbon/human/H = locateUID(href_list["makeai"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1434,7 +1433,7 @@
else if(href_list["makealien"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makealien"])
var/mob/living/carbon/human/H = locateUID(href_list["makealien"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1446,7 +1445,7 @@
else if(href_list["makeslime"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
var/mob/living/carbon/human/H = locateUID(href_list["makeslime"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1458,7 +1457,7 @@
else if(href_list["makesuper"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makesuper"])
var/mob/living/carbon/human/H = locateUID(href_list["makesuper"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1471,7 +1470,7 @@
else if(href_list["makerobot"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
var/mob/living/carbon/human/H = locateUID(href_list["makerobot"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1483,7 +1482,7 @@
else if(href_list["makeanimal"])
if(!check_rights(R_SPAWN)) return
var/mob/M = locate(href_list["makeanimal"])
var/mob/M = locateUID(href_list["makeanimal"])
if(istype(M, /mob/new_player))
to_chat(usr, "This cannot be used on instances of type /mob/new_player")
return
@@ -1495,7 +1494,7 @@
else if(href_list["incarn_ghost"])
if(!check_rights(R_SPAWN)) return
var/mob/dead/observer/G = locate(href_list["incarn_ghost"])
var/mob/dead/observer/G = locateUID(href_list["incarn_ghost"])
if(!istype(G))
to_chat(usr, "This will only work on /mob/dead/observer")
log_admin("[key_name(G)] was incarnated by [key_name(src.owner)]")
@@ -1505,7 +1504,7 @@
else if(href_list["togmutate"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["togmutate"])
var/mob/living/carbon/human/H = locateUID(href_list["togmutate"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1516,25 +1515,14 @@
//H.regenerate_icons()
else if(href_list["adminplayeropts"])
var/mob/M = locate(href_list["adminplayeropts"])
var/mob/M = locateUID(href_list["adminplayeropts"])
show_player_panel(M)
else if(href_list["adminplayerobservejump"])
if(!check_rights(R_ADMIN|R_MOD))
return
var/mob/M = locate(href_list["adminplayerobservejump"])
var/client/C = usr.client
if(!isobserver(usr)) C.admin_ghost()
sleep(2)
C.jumptomob(M)
else if(href_list["adminplayerobservefollow"])
if(!check_rights(R_ADMIN|R_MOD))
return
var/mob/M = locate(href_list["adminplayerobservefollow"])
var/mob/M = locateUID(href_list["adminplayerobservefollow"])
var/client/C = usr.client
if(!isobserver(usr)) C.admin_ghost()
@@ -1553,7 +1541,7 @@
if(is_mhelp)
helptype = "MENTORHELP"
var/take_msg = "<span class='notice'><b>[helptype]</b>: <b>[key_name(usr.client)]</b> is attending to <b>[key_name(M)]'s</b> question.</span>"
for(var/client/X in admins)
for(var/client/X in GLOB.admins)
if(check_rights(R_ADMIN, 0, X.mob))
to_chat(X, take_msg)
else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob))
@@ -1584,7 +1572,7 @@
if (H.current)
to_chat(H.current, "<span class='danger'>[ticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
for(var/mob/dead/observer/O in player_list)
for(var/mob/dead/observer/O in GLOB.player_list)
to_chat(O, "<span class='danger'>[ticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
message_admins("Admin [key_name_admin(usr)] has talked with the Voice of [ticker.cultdat.entity_name].")
@@ -1606,13 +1594,13 @@
output_ai_laws()
else if(href_list["adminmoreinfo"])
var/mob/M = locate(href_list["adminmoreinfo"])
var/mob/M = locateUID(href_list["adminmoreinfo"])
admin_mob_info(M)
else if(href_list["adminspawncookie"])
if(!check_rights(R_ADMIN|R_EVENT)) return
var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"])
var/mob/living/carbon/human/H = locateUID(href_list["adminspawncookie"])
if(!ishuman(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1636,7 +1624,7 @@
else if(href_list["BlueSpaceArtillery"])
if(!check_rights(R_ADMIN|R_EVENT)) return
var/mob/living/M = locate(href_list["BlueSpaceArtillery"])
var/mob/living/M = locateUID(href_list["BlueSpaceArtillery"])
if(!isliving(M))
to_chat(usr, "This can only be used on instances of type /mob/living")
return
@@ -1695,7 +1683,7 @@
else if(href_list["EvilFax"])
if(!check_rights(R_ADMIN))
return
var/mob/living/carbon/human/H = locate(href_list["EvilFax"])
var/mob/living/carbon/human/H = locateUID(href_list["EvilFax"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1918,7 +1906,7 @@
if("Crew Traitor")
logmsg = "crew traitor."
var/list/possible_traitors = list()
for(var/mob/living/player in living_mob_list)
for(var/mob/living/player in GLOB.living_mob_list)
if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H)
if(ishuman(player))
if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate"))
@@ -1987,7 +1975,7 @@
else if(href_list["FaxReplyTemplate"])
if(!check_rights(R_ADMIN))
return
var/mob/living/carbon/human/H = locate(href_list["FaxReplyTemplate"])
var/mob/living/carbon/human/H = locateUID(href_list["FaxReplyTemplate"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -1996,7 +1984,7 @@
P.name = "Central Command - paper"
var/stypes = list("Handle it yourselves!","Illegible fax","Fax not signed","Not Right Now","You are wasting our time", "Keep up the good work", "ERT Instructions")
var/stype = input(src.owner, "Which type of standard reply do you wish to send to [H]?","Choose your paperwork", "") as null|anything in stypes
var/tmsg = "<font face='Verdana' color='black'><center><img src = 'ntlogo.png'><BR><BR><BR><font size='4'><B>Nanotrasen Science Station Cyberiad</B></font><BR><BR><BR><font size='4'>NAS Trurl Communications Department Report</font></center><BR><BR>"
var/tmsg = "<font face='Verdana' color='black'><center><img src = 'ntlogo.png'><BR><BR><BR><font size='4'><B>Nanotrasen Science Station [using_map.station_short]</B></font><BR><BR><BR><font size='4'>NAS Trurl Communications Department Report</font></center><BR><BR>"
if(stype == "Handle it yourselves!")
tmsg += "Greetings, esteemed crewmember. Your fax has been <B><I>DECLINED</I></B> automatically by NAS Trurl Fax Registration.<BR><BR>Please proceed in accordance with Standard Operating Procedure and/or Space Law. You are fully trained to handle this situation without Central Command intervention.<BR><BR><i><small>This is an automatic message.</small>"
else if(stype == "Illegible fax")
@@ -2040,28 +2028,8 @@
log_admin("[key_name(src.owner)] sent [key_name(H)] a standard '[stype]' fax")
message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a standard '[stype]' fax")
else if(href_list["SyndicateReply"])
if(!check_rights(R_ADMIN))
return
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
if(H.stat != 0)
to_chat(usr, "The person you are trying to contact is not conscious.")
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
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via [H.p_their()] headset.","Outgoing message from The Syndicate", "")
if(!input)
return
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
log_admin("[src.owner] replied to [key_name(H)]'s Syndicate message with the message [input].")
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. [input]. Message ends.\"")
else if(href_list["HONKReply"])
var/mob/living/carbon/human/H = locate(href_list["HONKReply"])
var/mob/living/carbon/human/H = locateUID(href_list["HONKReply"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -2081,7 +2049,7 @@
return
if(alert(src.owner, "Accept or Deny ERT request?", "CentComm Response", "Accept", "Deny") == "Deny")
var/mob/living/carbon/human/H = locate(href_list["ErtReply"])
var/mob/living/carbon/human/H = locateUID(href_list["ErtReply"])
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
@@ -2094,7 +2062,7 @@
var/input = input(src.owner, "Please enter a reason for denying [key_name(H)]'s ERT request.","Outgoing message from CentComm", "")
if(!input) return
ert_request_answered = 1
ert_request_answered = TRUE
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
log_admin("[src.owner] denied [key_name(H)]'s ERT request with the message [input].")
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Your ERT request has been denied for the following reasons: [input]. Message ends.\"")
@@ -2310,32 +2278,32 @@
else if(href_list["jumpto"])
if(!check_rights(R_ADMIN)) return
var/mob/M = locate(href_list["jumpto"])
var/mob/M = locateUID(href_list["jumpto"])
usr.client.jumptomob(M)
else if(href_list["getmob"])
if(!check_rights(R_ADMIN)) return
if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return
var/mob/M = locate(href_list["getmob"])
var/mob/M = locateUID(href_list["getmob"])
usr.client.Getmob(M)
else if(href_list["sendmob"])
if(!check_rights(R_ADMIN)) return
var/mob/M = locate(href_list["sendmob"])
var/mob/M = locateUID(href_list["sendmob"])
usr.client.sendmob(M)
else if(href_list["narrateto"])
if(!check_rights(R_ADMIN)) return
var/mob/M = locate(href_list["narrateto"])
var/mob/M = locateUID(href_list["narrateto"])
usr.client.cmd_admin_direct_narrate(M)
else if(href_list["subtlemessage"])
if(!check_rights(R_ADMIN)) return
var/mob/M = locate(href_list["subtlemessage"])
var/mob/M = locateUID(href_list["subtlemessage"])
usr.client.cmd_admin_subtle_message(M)
else if(href_list["traitor"])
@@ -2345,7 +2313,7 @@
alert("The game hasn't started yet!")
return
var/mob/M = locate(href_list["traitor"])
var/mob/M = locateUID(href_list["traitor"])
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob.")
return
@@ -2537,14 +2505,14 @@
if("monkey")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","M")
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
spawn(0)
H.monkeyize()
ok = 1
if("corgi")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","M")
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
spawn(0)
H.corgize()
ok = 1
@@ -2615,7 +2583,7 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","PW")
message_admins("<span class='notice'>[key_name_admin(usr)] teleported all players to the prison station.</span>", 1)
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
var/turf/loc = find_loc(H)
var/security = 0
if(!is_station_level(loc.z) || prisonwarped.Find(H))
@@ -2659,7 +2627,7 @@
return
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","TA([objective])")
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 || !H.mind) continue
if(is_special_character(H)) continue
//traitorize(H, objective, 0)
@@ -2672,7 +2640,7 @@
ticker.mode.greet_traitor(H.mind)
//ticker.mode.forge_traitor_objectives(H.mind)
ticker.mode.finalize_traitor(H.mind)
for(var/mob/living/silicon/A in player_list)
for(var/mob/living/silicon/A in GLOB.player_list)
ticker.mode.traitors += A.mind
A.mind.special_role = SPECIAL_ROLE_TRAITOR
var/datum/objective/new_objective = new
@@ -2709,7 +2677,7 @@
feedback_add_details("admin_secrets_fun_used","FL")
while(!usr.stat)
//knock yourself out to stop the ghosts
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
if(M.stat != 2 && prob(25))
var/area/AffectedArea = get_area(M)
if(AffectedArea.name != "Space" && AffectedArea.name != "Engine Walls" && AffectedArea.name != "Chemical Lab Test Chamber" && AffectedArea.name != "Escape Shuttle" && AffectedArea.name != "Arrival Area" && AffectedArea.name != "Arrival Shuttle" && AffectedArea.name != "start area" && AffectedArea.name != "Engine Combustion Chamber")
@@ -2732,7 +2700,7 @@
if(prob(25) && !W.anchored)
step_rand(W)
sleep(rand(100,1000))
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
if(M.stat != 2)
M.show_message(text("<span class='notice'>The chilling wind suddenly stops...</span>"), 1)
if("lightout")
@@ -2745,13 +2713,13 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","BO")
message_admins("[key_name_admin(usr)] broke all lights", 1)
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
L.broken()
if("whiteout")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","WO")
message_admins("[key_name_admin(usr)] fixed all lights", 1)
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
L.fix()
if("floorlava")
feedback_inc("admin_secrets_fun_used", 1)
@@ -2780,7 +2748,7 @@
if("retardify")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RET")
for(var/mob/living/carbon/human/H in player_list)
for(var/mob/living/carbon/human/H in GLOB.player_list)
to_chat(H, "<span class='danger'>You suddenly feel stupid.</span>")
H.setBrainLoss(60)
message_admins("[key_name_admin(usr)] made everybody retarded")
@@ -2806,7 +2774,7 @@
if("eagles")//SCRAW
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","EgL")
for(var/obj/machinery/door/airlock/W in airlocks)
for(var/obj/machinery/door/airlock/W in GLOB.airlocks)
if(is_station_level(W.z) && !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")
@@ -2887,21 +2855,21 @@
if("moveminingshuttle")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShM")
if(!shuttle_master.toggleShuttle("mining","mining_home","mining_away"))
if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away"))
message_admins("[key_name_admin(usr)] moved mining shuttle")
log_admin("[key_name(usr)] moved the mining shuttle")
if("movelaborshuttle")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShL")
if(!shuttle_master.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away"))
if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away"))
message_admins("[key_name_admin(usr)] moved labor shuttle")
log_admin("[key_name(usr)] moved the labor shuttle")
if("moveferry")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShF")
if(!shuttle_master.toggleShuttle("ferry","ferry_home","ferry_away"))
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")
@@ -2946,7 +2914,7 @@
if("manifest")
var/dat = "<B>Showing Crew Manifest.</B><HR>"
dat += "<table cellspacing=5><tr><th>Name</th><th>Position</th></tr>"
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.ckey)
dat += text("<tr><td>[]</td><td>[]</td></tr>", H.name, H.get_assignment())
dat += "</table>"
@@ -2956,7 +2924,7 @@
if("DNA")
var/dat = "<B>Showing DNA from blood.</B><HR>"
dat += "<table cellspacing=5><tr><th>Name</th><th>DNA</th><th>Blood Type</th></tr>"
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.dna && H.ckey)
dat += "<tr><td>[H]</td><td>[H.dna.unique_enzymes]</td><td>[H.b_type]</td></tr>"
dat += "</table>"
@@ -2964,7 +2932,7 @@
if("fingerprints")
var/dat = "<B>Showing Fingerprints.</B><HR>"
dat += "<table cellspacing=5><tr><th>Name</th><th>Fingerprints</th></tr>"
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.ckey)
if(H.dna && H.dna.uni_identity)
dat += "<tr><td>[H]</td><td>[md5(H.dna.uni_identity)]</td></tr>"
@@ -3010,12 +2978,12 @@
dat += "No-one has done anything this round!"
usr << browse(dat, "window=admin_log")
if("maint_access_brig")
for(var/obj/machinery/door/airlock/maintenance/M in airlocks)
for(var/obj/machinery/door/airlock/maintenance/M in GLOB.airlocks)
if(access_maint_tunnels in M.req_access)
M.req_access = list(access_brig)
message_admins("[key_name_admin(usr)] made all maint doors brig access-only.")
if("maint_access_engiebrig")
for(var/obj/machinery/door/airlock/maintenance/M in airlocks)
for(var/obj/machinery/door/airlock/maintenance/M in GLOB.airlocks)
if(access_maint_tunnels in M.req_access)
M.req_access = list()
M.req_one_access = list(access_brig,access_engine)
@@ -3249,12 +3217,12 @@
return 1
else if(href_list["viewruntime"])
var/datum/ErrorViewer/error_viewer = locate(href_list["viewruntime"])
var/datum/ErrorViewer/error_viewer = locateUID(href_list["viewruntime"])
if(!istype(error_viewer))
to_chat(usr, "<span class='warning'>That runtime viewer no longer exists.</span>")
return
if(href_list["viewruntime_backto"])
error_viewer.showTo(usr, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"])
error_viewer.showTo(usr, locateUID(href_list["viewruntime_backto"]), href_list["viewruntime_linear"])
else
error_viewer.showTo(usr, null, href_list["viewruntime_linear"])
@@ -3392,19 +3360,13 @@
/proc/admin_jump_link(var/atom/target)
if(!target) return
// The way admin jump links handle their src is weirdly inconsistent...
var/source = "_src_=holder"
. = ADMIN_FLW(target,"FLW")
if(isAI(target)) // AI core/eye follow links
var/mob/living/silicon/ai/A = target
. = "<A HREF='?[source];adminplayerobservefollow=\ref[target]'>FLW</A>"
if(A.client && A.eyeobj) // No point following clientless AI eyes
. += "|<A HREF='?[source];adminplayerobservefollow=\ref[A.eyeobj]'>EYE</A>"
return
. += "|[ADMIN_FLW(A.eyeobj,"EYE")]"
else if(istype(target, /mob/dead/observer))
var/mob/dead/observer/O = target
. = "<A HREF='?[source];adminplayerobservefollow=\ref[target]'>FLW</A>"
if(O.mind && O.mind.current)
. += "|<A HREF='?[source];adminplayerobservefollow=\ref[O.mind.current]'>BDY</A>"
return
else
return "<A HREF='?[source];adminplayerobservefollow=\ref[target]'>FLW</A>"
. += "|[ADMIN_FLW(O.mind.current,"BDY")]"