diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 95639c2a..e0b253a4 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -225,6 +225,9 @@ datum/controller/vote choices.Add(config.votable_modes) if("crew_transfer") if(check_rights(R_ADMIN|R_MOD, 0)) + if (get_security_level() == "red" || get_security_level() == "delta") + if(alert("It's code [get_security_level()], are you sure?",,"Yes","No")!="Yes") + return 0 question = "End the shift?" choices.Add("Initiate Crew Transfer", "Continue The Round") else @@ -243,6 +246,8 @@ datum/controller/vote var/option = capitalize(html_encode(input(usr,"Please enter an option or hit cancel to finish") as text|null)) if(!option || mode || !usr.client) break choices.Add(option) + if(!choices.len) + choices.Add("Yes","No") else return 0 mode = vote_type initiator = initiator_key @@ -302,10 +307,13 @@ datum/controller/vote if(!C) return var/admin = 0 var/trialmin = 0 + var/funmin = 0 if(C.holder) admin = 1 if(C.holder.rights & R_ADMIN) trialmin = 1 + else if(C.holder.rights & R_FUN) + funmin = 1 voting |= C . = "Voting Panel" @@ -349,7 +357,7 @@ datum/controller/vote . += "" //custom - if(trialmin) + if(trialmin||funmin) . += "
  • Custom
  • " . += "
    " . += "Close" diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a7400e74..861d2941 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -466,7 +466,7 @@ client cmd_mass_modify_object_variables(A, href_list["varnamemass"]) else if(href_list["mob_player_panel"]) - if(!check_rights(R_ADMIN|R_MOD)) return + if(!check_rights(R_ADMIN|R_MOD|R_FUN)) return var/mob/M = locate(href_list["mob_player_panel"]) if(!istype(M)) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index ac7b4ac5..a87caf20 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -49,8 +49,10 @@ var/msg = "" var/modmsg = "" var/devmsg = "" + var/eventmsg = "" var/num_devs_online = 0 var/num_mods_online = 0 + var/num_event_online = 0 var/num_admins_online = 0 if(holder) for(var/client/C in admins) @@ -76,7 +78,7 @@ msg += "\n" num_admins_online++ - else if(R_MOD & C.holder.rights) + else if((R_MOD & C.holder.rights) && !(R_FUN & C.holder.rights)) modmsg += "\t[C] is a [C.holder.rank]" if(isobserver(C.mob)) @@ -90,6 +92,20 @@ modmsg += " (AFK)" modmsg += "\n" num_mods_online++ + else if ((R_FUN & C.holder.rights) && !(R_ADMIN & C.holder.rights)) + eventmsg += "\t[C] is a [C.holder.rank]" + + if(isobserver(C.mob)) + eventmsg += " - Observing" + else if(istype(C.mob,/mob/new_player)) + eventmsg += " - Lobby" + else + eventmsg += " - Playing" + + if(C.is_afk()) + eventmsg += " (AFK)" + eventmsg += "\n" + num_event_online++ else if(R_DEV & C.holder.rights) devmsg += "\t[C] is a [C.holder.rank]" @@ -114,9 +130,16 @@ else if (R_MOD & C.holder.rights) modmsg += "\t[C] is a [C.holder.rank]\n" num_mods_online++ + else if ((R_FUN & C.holder.rights) && !(R_MOD & C.holder.rights)) + eventmsg += "\t[C] is a [C.holder.rank]\n" + num_event_online++ else if(R_DEV & C.holder.rights) devmsg += "\t[C] is a [C.holder.rank]\n" num_devs_online++ - msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Moderators([num_mods_online]):\n" + modmsg + "\n Current Developers([num_devs_online]):\n" + devmsg + var/eventwho = "" + if(num_event_online) + eventwho += "\n Current Event Hosts([num_event_online]):\n" + eventmsg + + msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Moderators([num_mods_online]):\n" + modmsg + eventwho + "\n Current Developers([num_devs_online]):\n" + devmsg src << msg \ No newline at end of file diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index dc6aa228..f3f22854 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -63,7 +63,21 @@ var/global/floorIsLava = 0 PM "} - if(check_rights(R_ADMIN|R_MOD)) + if(check_rights(R_FUN,0) && !check_rights(R_ADMIN|R_MOD,0)) + body += {" + -TP - + SM - + JMP\]
    + Mob type = [M.type]

    + Jump to | + Get | + Send To +

    \[ + Narrate to | + Subtle message + "} + + if(check_rights(R_ADMIN|R_MOD,0)) body += {" -TP - SM - @@ -77,7 +91,11 @@ var/global/floorIsLava = 0 "} if(M.client) - body += "| Prison | " + body += {" + | Prison | + Wind +
    + "} var/muted = M.client.prefs.muted body += {"
    Mute: \[IC | diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 3f4eb773..a148f2a9 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -6,7 +6,7 @@ var/list/admin_verbs_default = list( /client/proc/hide_verbs, /*hides all our adminverbs*/ /client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/ /client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/ - /client/proc/cmd_mentor_check_new_players +// /client/proc/cmd_mentor_check_new_players //redundant // /client/proc/deadchat /*toggles deadchat on/off*/ ) var/list/admin_verbs_admin = list( @@ -85,7 +85,9 @@ var/list/admin_verbs_admin = list( /client/proc/response_team, // Response Teams admin verb /client/proc/toggle_antagHUD_use, /client/proc/toggle_antagHUD_restrictions, - /client/proc/allow_character_respawn /* Allows a ghost to respawn */ + /client/proc/allow_character_respawn, /* Allows a ghost to respawn */ + /client/proc/set_ooc, + /client/proc/cleartox ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, @@ -96,23 +98,44 @@ var/list/admin_verbs_sounds = list( /client/proc/play_sound ) var/list/admin_verbs_fun = list( - /client/proc/object_talk, - /client/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/everyone_random, - /client/proc/cinematic, - /client/proc/one_click_antag, +//Hey look it's in order of letters ^_^ + /datum/admins/proc/access_news_network, /datum/admins/proc/toggle_aliens, /datum/admins/proc/toggle_space_ninja, - /client/proc/send_space_ninja, + /client/proc/admin_ghost, + /client/proc/alertlevels, + /client/proc/check_ai_laws, + /client/proc/cinematic, /client/proc/cmd_admin_add_freeform_ai_law, /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, + /client/proc/cmd_admin_change_custom_event, + /client/proc/cmd_admin_create_centcom_report, + /client/proc/cmd_admin_delete, + /client/proc/cmd_admin_direct_narrate, + /client/proc/cmd_admin_dress, + /client/proc/cmd_admin_gib_self, + /client/proc/cmd_admin_pm_context, + /client/proc/cmd_admin_pm_panel, + /client/proc/cmd_admin_subtle_message, + /client/proc/cmd_admin_world_narrate, + /client/proc/cmd_debug_tog_aliens, + /client/proc/cmd_mod_say, + /client/proc/drop_bomb, + /client/proc/dsay, + /client/proc/editappear, + /client/proc/everyone_random, + /client/proc/Getmob, + /client/proc/Getkey, + /client/proc/Jump, + /client/proc/jumptokey, + /client/proc/jumptomob, /client/proc/make_area_sound, - /client/proc/toggle_random_events, - /client/proc/set_ooc, - /client/proc/editappear + /client/proc/make_sound, + /client/proc/object_talk, + /client/proc/one_click_antag, + /client/proc/secrets, + /client/proc/send_space_ninja, + /client/proc/toggle_random_events ) var/list/admin_verbs_dev = list( /client/proc/dsay, @@ -130,7 +153,6 @@ var/list/admin_verbs_dev = list( /client/proc/cmd_debug_mob_lists, /client/proc/cmd_admin_delete, /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, /datum/admins/proc/restart, /client/proc/air_report, /client/proc/reload_admins, @@ -195,7 +217,6 @@ var/list/admin_verbs_debug = list( /client/proc/SDQL2_query, /client/proc/cmd_dev_reset_gravity, /client/proc/cmd_dev_reset_floating, - /client/proc/cleartox, /client/proc/fillspace ) var/list/admin_verbs_possess = list( @@ -974,7 +995,7 @@ var/list/admin_verbs_mod = list( /client/proc/cleartox() set category = "Special Verbs" set name = "Clear Toxin/Fire in Zone" - if(!check_rights(R_DEBUG)) + if(!check_rights(R_ADMIN)) return var/datum/gas_mixture/environment = usr.loc.return_air() @@ -997,6 +1018,10 @@ var/list/admin_verbs_mod = list( /client/proc/fillspace() set category = "Special Verbs" set name = "Fill Space with floor" + + return + +/* if(!check_rights(R_DEBUG)) return var/area/location = usr.loc.loc @@ -1005,4 +1030,5 @@ var/list/admin_verbs_mod = list( S.ChangeTurf(/turf/simulated/floor/plating) if(location.name == "Space") for(var/turf/space/S in range(2,usr.loc)) - S.ChangeTurf(/turf/simulated/floor/plating) \ No newline at end of file + S.ChangeTurf(/turf/simulated/floor/plating) +*/ \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 2d0b72b0..df3574f4 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -197,7 +197,10 @@ permissionlist[rights2text(i)] = i var/new_permission = input("Select a permission to turn on/off", "Permission toggle", null, null) as null|anything in permissionlist if(!new_permission) return + var/client/C = directory[adm_ckey] + D.disassociate() D.rights ^= permissionlist[new_permission] + D.associate(C) message_admins("[key_name_admin(usr)] toggled the [new_permission] permission of [adm_ckey]") log_admin("[key_name(usr)] toggled the [new_permission] permission of [adm_ckey]") @@ -1188,7 +1191,7 @@ message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1) else if(href_list["revive"]) - if(!check_rights(R_REJUVINATE)) return + if(!check_rights(R_REJUVINATE|R_FUN)) return var/mob/living/L = locate(href_list["revive"]) if(!istype(L)) @@ -1310,7 +1313,7 @@ show_player_panel(M) else if(href_list["adminplayerobservejump"]) - if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_MOD|R_FUN)) return var/mob/M = locate(href_list["adminplayerobservejump"]) @@ -1323,7 +1326,7 @@ check_antagonists() else if(href_list["adminplayerobservecoodjump"]) - if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_MOD|R_FUN)) return var/x = text2num(href_list["X"]) var/y = text2num(href_list["Y"]) @@ -1545,13 +1548,13 @@ else if(href_list["jumpto"]) - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_FUN)) return var/mob/M = locate(href_list["jumpto"]) usr.client.jumptomob(M) else if(href_list["getmob"]) - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_FUN)) return if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return var/mob/M = locate(href_list["getmob"]) @@ -1564,19 +1567,19 @@ usr.client.sendmob(M) else if(href_list["narrateto"]) - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN|R_FUN)) return var/mob/M = locate(href_list["narrateto"]) usr.client.cmd_admin_direct_narrate(M) else if(href_list["subtlemessage"]) - if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return + if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN|R_FUN)) return var/mob/M = locate(href_list["subtlemessage"]) usr.client.cmd_admin_subtle_message(M) else if(href_list["traitor"]) - if(!check_rights(R_ADMIN|R_MOD)) return + if(!check_rights(R_ADMIN|R_MOD|R_FUN)) return if(!ticker || !ticker.mode) alert("The game hasn't started yet!") @@ -2783,5 +2786,8 @@ if(alert("Wind [M]?",,"Yes","No")!="Yes") return - M.weakened = 500 + M.SetWeakened(200) + log_admin("[key_name(usr)] winded [key_name(M)]!") + message_admins("[key_name_admin(usr)] winded [key_name_admin(M)]!", 1) + message_mods("[key_name_admin(usr)] winded [key_name_admin(M)]!") return diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index c5a17f72..a35c8aa1 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -104,6 +104,11 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(X.prefs.toggles & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' X << msg + continue + if((R_FUN) & X.holder.rights) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg //show it to the person adminhelping too src << "PM to-Admins: [original_msg]" diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 841297b5..e82effe2 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -22,7 +22,7 @@ set name = "Msay" set hidden = 1 - if(!check_rights(R_ADMIN|R_MOD)) return + if(!check_rights(R_ADMIN|R_MOD|R_FUN)) return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) log_admin("MOD: [key_name(src)] : [msg]") @@ -33,7 +33,7 @@ if (check_rights(R_ADMIN,0)) color = "adminmod" for(var/client/C in admins) - if((R_ADMIN|R_MOD) & C.holder.rights) + if((R_ADMIN|R_MOD|R_FUN) & C.holder.rights) C << "MOD: [key_name(src,1)] (JMP): [msg]" /client/proc/cmd_dev_say(msg as text) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 2fb5076e..83a7420c 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -22,11 +22,12 @@ if (src.holder.rights & R_MOD) stafftype = "MOD" - if (src.holder.rights & R_ADMIN) stafftype = "ADMIN" if (src.holder.rights & R_DEV) stafftype = "DEV" // lol I find it necessary k? <.< + if ((src.holder.rights & R_FUN) && !(R_ADMIN & src.holder.rights)) + stafftype = "EVENT" msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) log_admin("[key_name(src)] : [msg]") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index e8a6fe25..e4effdd9 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -409,7 +409,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that set name = "Assume direct control" set desc = "Direct intervention" - if(!check_rights(R_DEBUG|R_ADMIN|R_DEV)) return + if(!check_rights(R_DEBUG|R_ADMIN|R_DEV|R_FUN)) return if(M.ckey) if(alert("This mob is being controlled by [M.ckey]. Are you sure you wish to assume control of it? [M.ckey] will be made a ghost.",,"Yes","No") != "Yes") return diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 570745e2..4980fbc4 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -147,7 +147,7 @@ var/list/forbidden_varedit_object_types = list( var/dir if(variable in locked) - if(!check_rights(R_DEBUG|R_DEV)) return + if(!check_rights(R_DEBUG|R_DEV|R_FUN)) return if(isnull(variable)) usr << "Unable to determine variable type." @@ -291,7 +291,7 @@ var/list/forbidden_varedit_object_types = list( return if(param_var_name == "holder" || (param_var_name in locked)) - if(!check_rights(R_DEBUG|R_DEV)) return + if(!check_rights(R_DEBUG|R_DEV|R_FUN)) return variable = param_var_name @@ -349,7 +349,7 @@ var/list/forbidden_varedit_object_types = list( var_value = O.vars[variable] if(variable == "holder" || (variable in locked)) - if(!check_rights(R_DEBUG|R_DEV)) return + if(!check_rights(R_DEBUG|R_DEV|R_FUN)) return if(!autodetect_class) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 7b214020..90c5cca9 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -20,7 +20,7 @@ msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" for(var/client/C in admins) - if(((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) && (C.prefs.toggles & CHAT_PRAYER)) + if(((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) || (R_FUN & C.holder.rights) && (C.prefs.toggles & CHAT_PRAYER)) C << msg usr << "Your prayers have been received by the gods." @@ -35,12 +35,12 @@ else msg = "\blue CENTCOMM[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" for(var/client/C in admins) - if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) + if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights) || (R_FUN & C.holder.rights)) C << msg /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" for(var/client/C in admins) - if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) + if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights) || (R_FUN & C.holder.rights)) C << msg \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 92cbd8bc..1e3f6614 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -992,7 +992,7 @@ Traitors and the like can also be revived with the previous role mostly intact. set name = "Toggle random events on/off" set desc = "Toggles random events such as meteors, black holes, blob (but not space dust) on/off" - if(!check_rights(R_SERVER)) return + if(!check_rights(R_SERVER|R_FUN)) return if(!config.allow_random_events) config.allow_random_events = 1