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

Conflicts:
	code/modules/admin/admin_verbs.dm
This commit is contained in:
Tigercat2000
2015-02-20 03:52:58 +01:00
464 changed files with 3343 additions and 2846 deletions
+1 -1
View File
@@ -781,7 +781,7 @@ var/global/nologevent = 0
/datum/admins/proc/unprison(var/mob/M in mob_list)
set category = "Admin"
set name = "Unprison"
if (M.z == 2)
if ((M.z in config.admin_levels))
M.loc = pick(latejoin)
message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]", 1)
log_admin("[key_name(usr)] has unprisoned [key_name(M)]")
+1
View File
@@ -41,6 +41,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
if("sound","sounds") rights |= R_SOUNDS
if("spawn","create") rights |= R_SPAWN
if("mod") rights |= R_MOD
if("mentor") rights |= R_MENTOR
admin_ranks[rank] = rights
previous_rights = rights
+17 -24
View File
@@ -1,10 +1,8 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
// /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/deadmin_self /*destroys our own admin datum so we can play as a regular player*/
// /client/proc/check_antagonists, /*shows all antags*/
/client/proc/cmd_mentor_check_new_players
// /client/proc/deadchat /*toggles deadchat on/off*/
)
var/list/admin_verbs_admin = list(
@@ -46,7 +44,6 @@ var/list/admin_verbs_admin = list(
/client/proc/toggleprayers, /*toggles prayers on/off*/
// /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/
@@ -56,19 +53,17 @@ var/list/admin_verbs_admin = list(
/client/proc/cmd_mod_say,
/datum/admins/proc/show_player_info,
/client/proc/free_slot, /*frees slot for chosen job*/
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleattacklogs,
/client/proc/toggledebuglogs,
/client/proc/update_mob_sprite,
/client/proc/toggledrones,
/client/proc/man_up,
/client/proc/global_man_up,
/client/proc/delbook,
/client/proc/event_manager_panel,
/client/proc/delbook,
/client/proc/empty_ai_core_toggle_latejoin,
/client/proc/fax_panel,
/client/proc/freeze,
/client/proc/freezemecha
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
@@ -101,6 +96,9 @@ var/list/admin_verbs_event = list(
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
/client/proc/response_team, // Response Teams admin verb
/client/proc/cmd_admin_create_centcom_report,
/client/proc/fax_panel,
/client/proc/secrets,
/client/proc/event_manager_panel
)
var/list/admin_verbs_spawn = list(
@@ -125,21 +123,7 @@ var/list/admin_verbs_server = list(
/client/proc/delbook,
/client/proc/toggle_antagHUD_use,
/client/proc/toggle_antagHUD_restrictions,
/client/proc/set_ooc,
//Doubling of certain event verbs for senior admins
/datum/admins/proc/access_news_network, /*allows access of newscasters*/
/client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
/client/proc/toggle_random_events,
/client/proc/toggle_ert_calling,
/client/proc/one_click_antag,
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_admin_dress,
/client/proc/editappear,
/client/proc/response_team, // Response Teams admin verb
/client/proc/nanomapgen_DumpImage
/client/proc/set_ooc
)
var/list/admin_verbs_debug = list(
/client/proc/cmd_admin_list_open_jobs,
@@ -169,7 +153,8 @@ var/list/admin_verbs_permissions = list(
/client/proc/edit_admin_permissions
)
var/list/admin_verbs_rejuv = list(
/client/proc/respawn_character
/client/proc/respawn_character,
/client/proc/cmd_admin_rejuvenate
)
var/list/admin_verbs_mod = list(
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
@@ -184,9 +169,16 @@ var/list/admin_verbs_mod = list(
/client/proc/dsay,
/datum/admins/proc/show_player_panel,
/client/proc/jobbans,
/client/proc/debug_variables /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
// /client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/
)
var/list/admin_verbs_mentor = list(
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/cmd_admin_pm_by_key_panel, /*admin-pm list by key*/
/client/proc/cmd_mentor_check_new_players
)
/client/proc/add_admin_verbs()
if(holder)
@@ -204,6 +196,7 @@ var/list/admin_verbs_mod = list(
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
if(holder.rights & R_MOD) verbs += admin_verbs_mod
if(holder.rights & R_MENTOR) verbs += admin_verbs_mentor
/client/proc/admin_ghost()
set category = "Admin"
+10
View File
@@ -455,6 +455,16 @@
dat += "<td>[mob_loc.loc]</td></tr>"
else
dat += "<tr><td><i>Head not found!</i></td></tr>"
if(ticker.mode.num_players_started() >= 30)
for(var/datum/mind/N in ticker.mode.get_extra_living_heads())
var/mob/M = N.current
if(M)
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
var/turf/mob_loc = get_turf_loc(M)
dat += "<td>[mob_loc.loc]</td></tr>"
else
dat += "<tr><td><i>Head not found!</i></td></tr>"
dat += "</table>"
if(ticker.mode.name == "nations")
+66 -67
View File
@@ -286,7 +286,7 @@
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob )
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob )
if("human") M.change_mob_type( /mob/living/carbon/human/human , null, null, delmob )
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
if("monkey") M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob )
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob )
if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob )
@@ -591,13 +591,13 @@
if(counter >= 5) //So things dont get squiiiiished!
jobs += "</tr><tr align='center'>"
counter = 0
//Drone
if(jobban_isbanned(M, "Drone"))
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Drone;jobban4=\ref[M]'><font color=red>Drone</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Drone;jobban4=\ref[M]'>Drone</a></td>"
//pAI
if(jobban_isbanned(M, "pAI"))
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=pAI;jobban4=\ref[M]'><font color=red>pAI</font></a></td>"
@@ -667,19 +667,19 @@
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=ninja;jobban4=\ref[M]'><font color=red>[replacetext("Ninja", " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=ninja;jobban4=\ref[M]'>[replacetext("Ninja", " ", "&nbsp")]</a></td>"
//Raider
if(jobban_isbanned(M, "raider") || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=raider;jobban4=\ref[M]'><font color=red>[replacetext("Raider", " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=raider;jobban4=\ref[M]'>[replacetext("Raider", " ", "&nbsp")]</a></td>"
//Mutineer
if(jobban_isbanned(M, "mutineer") || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=mutineer;jobban4=\ref[M]'><font color=red>[replacetext("Mutineer", " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=mutineer;jobban4=\ref[M]'>[replacetext("Mutineer", " ", "&nbsp")]</a></td>"
//Blob
if(jobban_isbanned(M, "blob") || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=blob;jobban4=\ref[M]'><font color=red>[replacetext("Blob", " ", "&nbsp")]</font></a></td>"
@@ -698,12 +698,12 @@
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Dionaea;jobban4=\ref[M]'><font color=red>Dionaea Nymph</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Dionaea;jobban4=\ref[M]'>Dionaea Nymph</a></td>"
//NPC
if(jobban_isbanned(M, "NPC"))
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'><font color=red>NPC</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'>NPC</a></td>"
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'>NPC</a></td>"
//ANTAG HUD
if(jobban_isbanned(M, "AntagHUD"))
@@ -1092,6 +1092,7 @@
message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1)
H.monkeyize()
else if(href_list["corgione"])
if(!check_rights(R_SPAWN)) return
@@ -1141,7 +1142,7 @@
//strip their stuff and stick it in the crate
for(var/obj/item/I in M)
M.u_equip(I)
M.unEquip(I)
if(I)
I.loc = locker
I.layer = initial(I.layer)
@@ -1162,7 +1163,7 @@
M << "\red You have been sent to the prison station!"
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
else if(href_list["sendbacktolobby"])
if(!check_rights(R_ADMIN))
return
@@ -1185,7 +1186,7 @@
var/mob/new_player/NP = new()
NP.ckey = M.ckey
qdel(M)
qdel(M)
else if(href_list["tdome1"])
if(!check_rights(R_SERVER|R_EVENT)) return
@@ -1202,7 +1203,7 @@
return
for(var/obj/item/I in M)
M.u_equip(I)
M.unEquip(I)
if(I)
I.loc = M.loc
I.layer = initial(I.layer)
@@ -1231,7 +1232,7 @@
return
for(var/obj/item/I in M)
M.u_equip(I)
M.unEquip(I)
if(I)
I.loc = M.loc
I.layer = initial(I.layer)
@@ -1282,7 +1283,7 @@
return
for(var/obj/item/I in M)
M.u_equip(I)
M.unEquip(I)
if(I)
I.loc = M.loc
I.layer = initial(I.layer)
@@ -1429,7 +1430,7 @@
foo += text("<B>Is an AI</B> | ")
else
foo += text("<A HREF='?src=\ref[];makeai=\ref[]'>Make AI</A> | ", src, M)
if(M.z != 2)
if(!(M.z in config.admin_levels))
foo += text("<A HREF='?src=\ref[];sendtoprison=\ref[]'>Prison</A> | ", src, M)
foo += text("<A HREF='?src=\ref[];sendtomaze=\ref[]'>Maze</A> | ", src, M)
else
@@ -1597,9 +1598,9 @@
M.stuttering = 20
else if(href_list["CentcommReply"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
@@ -1617,16 +1618,16 @@
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\""
else if(href_list["SyndicateReply"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
if(H.stat != 0)
usr << "The person you are trying to contact is not conscious."
return
return
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
usr << "The person you are trying to contact is not wearing a headset"
return
@@ -1655,9 +1656,9 @@
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your HONKbrothers. Message as follows, HONK. [input]. Message ends, HONK.\""
else if(href_list["AdminFaxView"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
var/obj/item/fax = locate(href_list["AdminFaxView"])
if (istype(fax, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = fax
@@ -1670,24 +1671,24 @@
//open a browse window listing the contents instead
var/data = ""
var/obj/item/weapon/paper_bundle/B = fax
for (var/page = 1, page <= B.amount + 1, page++)
var/obj/pageobj = B.contents[page]
data += "<A href='?src=\ref[src];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
usr << browse(data, "window=[B.name]")
else
usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]"
else if (href_list["AdminFaxViewPage"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
var/page = text2num(href_list["AdminFaxViewPage"])
var/obj/item/weapon/paper_bundle/bundle = locate(href_list["paper_bundle"])
if (!bundle) return
if (istype(bundle.contents[page], /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = bundle.contents[page]
P.show_content(src.owner, 1)
@@ -1695,11 +1696,11 @@
var/obj/item/weapon/photo/H = bundle.contents[page]
H.show(src.owner)
return
else if(href_list["AdminFaxCreate"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
var/mob/sender = locate(href_list["AdminFaxCreate"])
var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"])
var/faxtype = href_list["faxtype"]
@@ -1708,7 +1709,7 @@
var/notify
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(null) //hopefully the null loc won't cause trouble for us
if(!fax)
var/list/departmentoptions = alldepartments + "All Departments"
destination = input(usr, "To which department?", "Choose a department", "") as null|anything in departmentoptions
@@ -1718,10 +1719,11 @@
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
if(destination != "All Departments" && F.department == destination)
fax = F
fax = F
var/input = input(src.owner, "Please enter a message to send a fax via secure connection. Use <br> for line breaks. Both pencode and HTML work.", "Outgoing message from Centcomm", "") as message|null
if(!input)
if(!input)
del(P)
return
input = P.parsepencode(input) // Encode everything from pencode to html
@@ -1729,7 +1731,7 @@
var/customname = input(src.owner, "Pick a title for the fax.", "Fax Title") as text|null
if(!customname)
customname = "paper"
var/stampname
var/stamptype
var/stampvalue
@@ -1761,12 +1763,12 @@
else
del(P)
return
sendername = input(src.owner, "What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization") as text|null
if(sender)
notify = alert(src.owner, "Would you like to inform the original sender that a fax has arrived?","Notify Sender","Yes","No")
// Create the reply message
if(sendername)
P.name = "[sendername]- [customname]"
@@ -1775,19 +1777,18 @@
P.info = input
P.update_icon()
P.x = rand(-2, 0)
P.y = rand(-1, 2)
P.y = rand(-1, 2)
P.offset_x += P.x
P.offset_y += P.y
if(stamptype)
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
stampoverlay.pixel_x = P.x
stampoverlay.pixel_y = P.y
if(!P.ico)
P.ico = new
P.ico += "paper_stamp-[stampvalue]"
stampoverlay.icon_state = "paper_stamp-[stampvalue]"
stampoverlay.icon_state = "paper_stamp-[stampvalue]"
if(stamptype == "icon")
if(!P.stamped)
@@ -1795,13 +1796,13 @@
P.stamped += /obj/item/weapon/stamp/centcom
P.overlays += stampoverlay
P.stamps += "<HR><img src=large_stamp-[stampvalue].png>"
else if(stamptype == "text")
else if(stamptype == "text")
if(!P.stamped)
P.stamped = new
P.stamped += /obj/item/weapon/stamp
P.overlays += stampoverlay
P.stamps += "<HR><i>[stampvalue]</i>"
P.stamps += "<HR><i>[stampvalue]</i>"
if(destination != "All Departments")
if(!fax.receivefax(P))
@@ -1809,10 +1810,10 @@
return
else
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
if(F.z == 1)
if((F.z in config.station_levels))
if(!F.receivefax(P))
src.owner << "\red Message transmission to [F.department] failed."
var/datum/fax/admin/A = new /datum/fax/admin()
A.name = P.name
A.from_department = faxtype
@@ -1825,7 +1826,7 @@
A.reply_to = reply_to
A.sent_by = usr
A.sent_at = world.time
src.owner << "\blue Message transmitted successfully."
if(notify == "Yes")
var/mob/living/carbon/human/H = sender
@@ -1833,16 +1834,16 @@
sender << "Your headset pings, notifying you that a reply to your fax has arrived."
if(sender)
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
else
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
else
log_admin("[key_name(src.owner)] sent a fax message to [destination]: [input]")
message_admins("[key_name_admin(src.owner)] sent a fax message to [destination] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
message_admins("[key_name_admin(src.owner)] sent a fax message to [destination] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
return
else if(href_list["refreshfaxpanel"])
if(!check_rights(R_ADMIN))
if(!check_rights(R_ADMIN))
return
fax_panel(usr)
else if(href_list["jumpto"])
@@ -2103,11 +2104,11 @@
if(gravity_is_on)
log_admin("[key_name(usr)] toggled gravity on.", 1)
message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1)
command_alert("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
else
log_admin("[key_name(usr)] toggled gravity off.", 1)
message_admins("\blue [key_name_admin(usr)] toggled gravity off.", 1)
command_alert("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
if("wave")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","Meteor")
@@ -2144,12 +2145,12 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","BLOB")
message_admins("[key_name_admin(usr)] has triggered a blob.")
new /datum/game_mode/blob()
new /datum/game_mode/blob()
if("aliens")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ALIEN")
message_admins("[key_name_admin(usr)] has triggered an alien infestation.")
new /datum/event/alien_infestation()
new /datum/event/alien_infestation()
if("power")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","P")
@@ -2206,7 +2207,7 @@
for(var/mob/living/carbon/human/H in mob_list)
var/turf/loc = find_loc(H)
var/security = 0
if(loc.z > 1 || prisonwarped.Find(H))
if(!(loc.z in config.station_levels) || prisonwarped.Find(H))
//don't warp them if they aren't ready or are already there
continue
@@ -2222,7 +2223,7 @@
if(istype(W, /datum/organ/external))
continue
//don't strip organs
H.u_equip(W)
H.unEquip(W)
if (H.client)
H.client.screen -= W
if (W)
@@ -2519,7 +2520,7 @@
message_admins("[key_name_admin(usr)] made the floor LAVA! It'll last [length] seconds and it will deal [damage] damage to everyone.", 1)
for(var/turf/simulated/floor/F in world)
if(F.z == 1)
if((F.z in config.station_levels))
F.name = "lava"
F.desc = "The floor is LAVA!"
F.overlays += "lava"
@@ -2544,7 +2545,7 @@
sleep(10)
for(var/turf/simulated/floor/F in world) // Reset everything.
if(F.z == 1)
if((F.z in config.station_levels))
F.name = initial(F.name)
F.desc = initial(F.desc)
F.overlays.Cut()
@@ -2592,11 +2593,10 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","EgL")
for(var/obj/machinery/door/airlock/W in world)
if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
if((W.z in config.station_levels) && !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")
command_alert("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.")
world << sound('sound/AI/commandreport.ogg')
command_announcement.Announce("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.", new_sound = 'sound/AI/commandreport.ogg')
if("dorf")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","DF")
@@ -2611,8 +2611,7 @@
message_admins("[key_name_admin(usr)] triggered an ion storm")
var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
world << sound('sound/AI/ionstorm.ogg')
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
if("carp")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","Crp")
+2 -32
View File
@@ -21,7 +21,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell
**/
var/msg
var/list/type = list("Player Complaint","Question","Bug Report","Event")
var/list/type = list("Question","Player Complaint")
var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type
if(selected_type)
msg = input("Please enter your message.", "Admin Help", null, null) as text
@@ -100,11 +100,9 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
var/admin_number_afk = 0
var/list/modholders = list()
var/list/banholders = list()
var/list/debugholders = list()
var/list/adminholders = list()
var/list/eventholders = list()
for(var/client/X in admins)
if(R_MOD & X.holder.rights)
if((R_MOD | R_MENTOR) & X.holder.rights)
if(X.is_afk())
admin_number_afk++
modholders += X
@@ -114,10 +112,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
adminholders += X
if(R_BAN & X.holder.rights)
banholders += X
if(R_DEBUG & X.holder.rights)
debugholders += X
if(R_EVENT & X.holder.rights)
eventholders += X
switch(selected_type)
if("Question")
@@ -132,30 +126,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else if("Bug Report")
if(debugholders.len)
for(var/client/X in debugholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else
if(adminholders.len)
for(var/client/X in adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else if("Event")
if(eventholders.len)
for(var/client/X in eventholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else
if(banholders.len)
for(var/client/X in banholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
else if("Player Complaint")
if(banholders.len)
for(var/client/X in banholders)
+4 -20
View File
@@ -103,7 +103,7 @@
//mod PMs are maroon
//PMs sent from admins and mods display their rank
if(holder)
if( holder.rights & R_MOD && !holder.rights & R_ADMIN )
if( holder.rights & (R_MOD | R_MENTOR) && !holder.rights & R_ADMIN )
recieve_color = "maroon"
else
recieve_color = "red"
@@ -204,20 +204,14 @@
var/list/modholders = list()
var/list/banholders = list()
var/list/debugholders = list()
var/list/adminholders = list()
var/list/eventholders = list()
for(var/client/X in admins)
if(R_MOD & X.holder.rights)
if((R_MOD | R_MENTOR) & X.holder.rights)
modholders += X
if(R_ADMIN & X.holder.rights)
adminholders += X
if(R_DEBUG & X.holder.rights)
debugholders += X
if(R_BAN & X.holder.rights)
banholders += X
if(R_EVENT & X.holder.rights)
eventholders += X
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X in admins)
@@ -227,20 +221,10 @@
if(X.key!=key && X.key!=C.key)
switch(type)
if("Question")
if(X.holder.rights & R_MOD)
if(X.holder.rights & (R_MOD | R_MENTOR))
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!modholders.len && X.holder.rights & R_ADMIN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of mod question
if("Bug Report")
if(X.holder.rights & R_DEBUG)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!debugholders.len && X.holder.rights & R_ADMIN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of bug reports
if("Event")
if(X.holder.rights & R_EVENT)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
else if(!eventholders.len && X.holder.rights & R_BAN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Quality in backup of Event
if("Player Complaint")
if(X.holder.rights & R_BAN)
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]-&gt;[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //There should always be at least 1 person with +BAN on
@@ -273,6 +257,6 @@
for(var/client/X in admins)
if(X == src)
continue
if((X.holder.rights & R_ADMIN) || (X.holder.rights & R_MOD))
if((X.holder.rights & R_ADMIN) || (X.holder.rights & (R_MOD | R_MENTOR)))
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;IRC-Admins:</B> \blue [msg]</font>"
+1 -2
View File
@@ -51,5 +51,4 @@
message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
nologevent = 1
log_admin("[key_name(usr)] used there can be only one.")
world << sound('sound/music/highlander.ogg')
log_admin("[key_name(usr)] used there can be only one.")
-1
View File
@@ -58,7 +58,6 @@
message_admins("\blue [key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
nologevent = 1
log_admin("[key_name(usr)] used dodgeball.")
world << sound('sound/music/nowyouman.ogg')
/obj/item/weapon/beach_ball/dodgeball
name = "dodgeball"
+7 -9
View File
@@ -10,7 +10,7 @@
return
for(var/obj/item/W in M)
M.drop_from_inventory(W)
M.unEquip(W)
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")
message_admins("[key_name_admin(usr)] made [key_name_admin(M)] drop everything!", 1)
@@ -28,7 +28,7 @@
return
//strip their stuff before they teleport into a cell :downs:
for(var/obj/item/W in M)
M.drop_from_inventory(W)
M.unEquip(W)
//teleport person to cell
M.Paralyse(5)
sleep(5) //so they black out before warping
@@ -209,8 +209,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
world << sound('sound/AI/ionstorm.ogg')
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
IonStorm(0)
feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -642,8 +641,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
world << sound('sound/AI/ionstorm.ogg')
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
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)
@@ -686,7 +684,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
switch(alert("Should this be announced to the general population?",,"Yes","No"))
if("Yes")
command_alert(input, customname);
command_announcement.Announce(input, customname);
if("No")
world << "\red New Nanotrasen Update available at all communication consoles."
@@ -914,7 +912,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set desc = "switches between 1x and custom views"
if(view == world.view)
view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
view = input("Select view range:", "View Range", 9) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
else
view = world.view
@@ -941,7 +939,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
choice = input("The shuttle will just return if you call it. Call anyway?") in list("Confirm", "Cancel")
if(choice != "Confirm")
return
if(emergency_shuttle.no_escape)
choice = input("The shuttle will not be able to leave if you call it. Call anyway?") in list("Confirm", "Cancel")
if(choice != "Confirm")