diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index affe1171419..22ce356bf12 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -246,12 +246,15 @@ client
if(ismob(D))
body += ""
body += ""
- body += ""
body += ""
body += ""
- body += ""
+
+ body += ""
body += ""
+
+ body += ""
body += ""
+
body += ""
if(ishuman(D))
body += ""
@@ -399,6 +402,7 @@ client
return html
/client/proc/view_var_Topic(href, href_list, hsrc)
+ testing("[href]")
//This should all be moved over to datum/admins/Topic() or something ~Carn
if( (usr.client != src) || !src.holder )
return
@@ -407,7 +411,7 @@ client
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
else if(href_list["rename"])
- if(!check_rights(0)) return
+ if(!check_rights(R_VAREDIT)) return
var/mob/M = locate(href_list["rename"])
if(!istype(M))
@@ -422,7 +426,7 @@ client
href_list["datumrefresh"] = href_list["rename"]
else if(href_list["varnameedit"] && href_list["datumedit"])
- if(!check_rights(0)) return
+ if(!check_rights(R_VAREDIT)) return
var/D = locate(href_list["datumedit"])
if(!istype(D,/datum) && !istype(D,/client))
@@ -432,7 +436,7 @@ client
modify_variables(D, href_list["varnameedit"], 1)
else if(href_list["varnamechange"] && href_list["datumchange"])
- if(!check_rights(0)) return
+ if(!check_rights(R_VAREDIT)) return
var/D = locate(href_list["datumchange"])
if(!istype(D,/datum) && !istype(D,/client))
@@ -442,7 +446,7 @@ client
modify_variables(D, href_list["varnamechange"], 0)
else if(href_list["varnamemass"] && href_list["datummass"])
- if(!check_rights(0)) return
+ if(!check_rights(R_VAREDIT)) return
var/atom/A = locate(href_list["datummass"])
if(!istype(A))
@@ -463,7 +467,7 @@ client
href_list["datumrefresh"] = href_list["mob_player_panel"]
else if(href_list["give_spell"])
- if(!check_rights(0)) return
+ if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/M = locate(href_list["give_spell"])
if(!istype(M))
@@ -474,7 +478,7 @@ client
href_list["datumrefresh"] = href_list["give_spell"]
else if(href_list["give_disease"])
- if(!check_rights(0)) return
+ if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/M = locate(href_list["give_disease"])
if(!istype(M))
@@ -485,7 +489,7 @@ client
href_list["datumrefresh"] = href_list["give_spell"]
else if(href_list["ninja"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/M = locate(href_list["ninja"])
if(!istype(M))
@@ -528,7 +532,7 @@ client
href_list["datumrefresh"] = href_list["build_mode"]
else if(href_list["drop_everything"])
- if(!check_rights(0)) return
+ if(!check_rights(R_DEBUG|R_ADMIN)) return
var/mob/M = locate(href_list["drop_everything"])
if(!istype(M))
@@ -550,7 +554,7 @@ client
usr.client.cmd_assume_direct_control(M)
else if(href_list["make_skeleton"])
- if(!check_rights(0)) return
+ if(!check_rights(R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["make_skeleton"])
if(!istype(H))
@@ -604,7 +608,7 @@ client
message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
else if(href_list["explode"])
- if(!check_rights(0)) return
+ if(!check_rights(R_DEBUG|R_FUN)) return
var/atom/A = locate(href_list["explode"])
if(!isobj(A) && !ismob(A) && !isturf(A))
@@ -615,7 +619,7 @@ client
href_list["datumrefresh"] = href_list["explode"]
else if(href_list["emp"])
- if(!check_rights(0)) return
+ if(!check_rights(R_DEBUG|R_FUN)) return
var/atom/A = locate(href_list["emp"])
if(!isobj(A) && !ismob(A) && !isturf(A))
@@ -650,7 +654,7 @@ client
href_list["datumrefresh"] = href_list["rotatedatum"]
else if(href_list["makemonkey"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makemonkey"])
if(!istype(H))
@@ -664,7 +668,7 @@ client
holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
else if(href_list["makerobot"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
if(!istype(H))
@@ -678,7 +682,7 @@ client
holder.Topic(href, list("makerobot"=href_list["makerobot"]))
else if(href_list["makealien"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makealien"])
if(!istype(H))
@@ -692,7 +696,7 @@ client
holder.Topic(href, list("makealien"=href_list["makealien"]))
else if(href_list["makeslime"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
@@ -706,7 +710,7 @@ client
holder.Topic(href, list("makeslime"=href_list["makeslime"]))
else if(href_list["makeai"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeai"])
if(!istype(H))
@@ -720,7 +724,7 @@ client
holder.Topic(href, list("makeai"=href_list["makeai"]))
else if(href_list["setmutantrace"])
- if(!check_rights(0)) return
+ if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["setmutantrace"])
if(!istype(H))
@@ -750,7 +754,7 @@ client
M.regenerate_icons()
else if(href_list["adjustDamage"] && href_list["mobToDamage"])
- if(!check_rights(0)) return
+ if(!check_rights(R_DEBUG|R_ADMIN|R_FUN)) return
var/mob/living/L = locate(href_list["mobToDamage"])
if(!istype(L)) return
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index b33b954b0d4..03f577659a5 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -324,11 +324,10 @@ var/global/datum/controller/occupations/job_master
if(istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf))
H.loc = S.loc
-
+ var/alt_title = null
if(H.mind)
H.mind.assigned_role = rank
- if (H.mind.role_alt_title)
- rank = H.mind.role_alt_title
+ alt_title = H.mind.role_alt_title
switch(rank)
if("Cyborg")
@@ -352,12 +351,12 @@ var/global/datum/controller/occupations/job_master
new /obj/item/weapon/storage/box(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
- H << "You are the [rank]."
- H << "As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this."
+ H << "You are the [alt_title ? alt_title : rank]."
+ H << "As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this."
if(job.req_admin_notify)
H << "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp."
- spawnId(H, rank, H.mind.role_alt_title)
+ spawnId(H, rank, alt_title)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears)
// H.update_icons()
return 1
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 9c501cb52cc..1f08c112306 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -336,6 +336,8 @@
if(M.loc != location) return //Person has moved away from the sink
M.clean_blood()
+ if(ishuman(M))
+ M:update_inv_gloves()
for(var/mob/V in viewers(src, null))
V.show_message("\blue [M] washes their hands using \the [src].")
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index ef41b515c6f..c2b27b37165 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -407,6 +407,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)) 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/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index cc6acf89abf..975c623e9b4 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -513,9 +513,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "Explosion"
- if (!holder)
- src << "Only administrators may use this command."
- return
+ if(!check_rights(R_DEBUG|R_FUN)) return
var/devastation = input("Range of total devastation. -1 to none", text("Input")) as num|null
if(devastation == null) return
@@ -543,9 +541,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "EM Pulse"
- if (!holder)
- src << "Only administrators may use this command."
- return
+ if(!check_rights(R_DEBUG|R_FUN)) return
var/heavy = input("Range of heavy pulse.", text("Input")) as num|null
if(heavy == null) return
@@ -567,9 +563,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "Gib"
- if (!holder)
- src << "Only administrators may use this command."
- return
+ if(!check_rights(R_ADMIN|R_FUN)) return
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm != "Yes") return
@@ -725,9 +719,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if ((!( ticker ) || emergency_shuttle.location))
return
- if (!holder)
- src << "Only administrators may use this command."
- return
+ if(!check_rights(R_ADMIN)) return
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm != "Yes") return
@@ -750,7 +742,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/admin_cancel_shuttle()
set category = "Admin"
set name = "Cancel Shuttle"
- if(!check_rights(0)) return
+
+ if(!check_rights(R_ADMIN)) return
+
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") return
if(!ticker || emergency_shuttle.location || emergency_shuttle.direction == 0)
@@ -770,9 +764,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if (!ticker)
return
- if (!holder)
- src << "Only administrators may use this command."
- return
+ if(!check_rights(R_ADMIN)) return
emergency_shuttle.deny_shuttle = !emergency_shuttle.deny_shuttle
@@ -794,6 +786,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "Make Everyone Random"
set desc = "Make everyone have a random appearance. You can only use this before rounds!"
+ if(!check_rights(R_FUN)) return
+
if (ticker && ticker.mode)
usr << "Nope you can't do this, the game's already started. This only works before rounds!"
return
@@ -824,7 +818,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/toggle_random_events()
set category = "Server"
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(!config.allow_random_events)
config.allow_random_events = 1
usr << "Random events enabled"
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index c518b27a02d..70786c605eb 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -101,7 +101,8 @@
message = "[uppertext(message)]!!" //because I don't know how to code properly in getting vars from other files -Bro
if (src.slurring)
- message = slur(message)
+ if(copytext(message, 1, 2) != "*")
+ message = slur(message)
..(message)
/mob/living/carbon/human/say_understands(var/other)
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index d45c2ddb0b0..201154b316a 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1651,7 +1651,7 @@ datum
description = "A highly addictive stimulant extracted from the tobacco plant."
reagent_state = LIQUID
color = "#181818" // rgb: 24, 24, 24
-
+/*
ethanol
name = "Ethanol"
id = "ethanol"
@@ -1685,7 +1685,7 @@ datum
else
usr << "It wasn't enough..."
return
-
+*/
ammonia
name = "Ammonia"
id = "ammonia"
@@ -2593,7 +2593,7 @@ datum
if(A.data) d += A.data
M.dizziness +=dizzy_adj.
- if(d >= slur_start && d < confused_start)
+ if(d >= slur_start && d < pass_out)
if (!M:slurring) M:slurring = 1
M:slurring += slurr_adj
if(d >= confused_start && prob(33))