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