diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index 289a68cbf1..850b299ed0 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -591,9 +591,9 @@
switch(child)
if(/datum)
return null
- if(/obj || /mob)
+ if(/obj, /mob)
return /atom/movable
- if(/area || /turf)
+ if(/area, /turf)
return /atom
else
return /datum
diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm
index 4b0b4eea72..3699331eda 100644
--- a/code/datums/brain_damage/severe.dm
+++ b/code/datums/brain_damage/severe.dm
@@ -224,6 +224,7 @@
else
to_chat(owner, "You feel your heart lurching in your chest...")
owner.adjustOxyLoss(8)
+ else
/datum/brain_trauma/severe/discoordination
name = "Discoordination"
diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm
index 3a67230d36..07b3d5fe8a 100644
--- a/code/datums/diseases/dna_spread.dm
+++ b/code/datums/diseases/dna_spread.dm
@@ -30,7 +30,7 @@
return
switch(stage)
- if(2 || 3) //Pretend to be a cold and give time to spread.
+ if(2, 3) //Pretend to be a cold and give time to spread.
if(prob(8))
affected_mob.emote("sneeze")
if(prob(8))
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index d4807e377c..a273aad0dd 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -374,7 +374,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
radio_freq = FREQ_ENGINEERING
if("security")
radio_freq = FREQ_SECURITY
- if("cargobay" || "mining")
+ if("cargobay", "mining")
radio_freq = FREQ_SUPPLY
Radio.set_frequency(radio_freq)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 458fcc0121..17bad60945 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -53,15 +53,6 @@
return
cmd_show_exp_panel(M.client)
- else if(href_list["toggleexempt"])
- if(!check_rights(R_ADMIN))
- return
- var/client/C = locate(href_list["toggleexempt"]) in GLOB.clients
- if(!C)
- to_chat(usr, "ERROR: Client not found.")
- return
- toggle_exempt_status(C)
-
else if(href_list["makeAntag"])
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm
index bc8fd6777d..d019a03140 100644
--- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm
+++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm
@@ -70,9 +70,9 @@
/obj/machinery/atmospherics/pipe/layer_manifold/SetInitDirections()
switch(dir)
- if(NORTH || SOUTH)
+ if(NORTH, SOUTH)
initialize_directions = NORTH|SOUTH
- if(EAST || WEST)
+ if(EAST, WEST)
initialize_directions = EAST|WEST
/obj/machinery/atmospherics/pipe/layer_manifold/isConnectable(obj/machinery/atmospherics/target, given_layer)
diff --git a/code/modules/hydroponics/hydroponics_chemreact.dm b/code/modules/hydroponics/hydroponics_chemreact.dm
index a4ef78a21f..640784aed8 100644
--- a/code/modules/hydroponics/hydroponics_chemreact.dm
+++ b/code/modules/hydroponics/hydroponics_chemreact.dm
@@ -12,21 +12,16 @@
/obj/machinery/hydroponics/proc/mutation_roll(mob/user)
- switch(rand(100))
+ switch(rand(1, 100))
if(91 to 100)
adjustHealth(-10)
visible_message("\The [myseed.plantname] starts to wilt and burn!")
- return
if(41 to 90)
if(myseed && !self_sustaining) //Stability
myseed.adjust_instability(5)
- return
if(21 to 40)
visible_message("\The [myseed.plantname] appears unusually reactive...")
- return
if(11 to 20)
mutateweed()
- return
if(1 to 10)
mutatepest(user)
- return
diff --git a/code/modules/jobs/job_report.dm b/code/modules/jobs/job_report.dm
index 88c7f7ad19..016e34f525 100644
--- a/code/modules/jobs/job_report.dm
+++ b/code/modules/jobs/job_report.dm
@@ -17,6 +17,13 @@
ui = new(user, src, "TrackedPlaytime")
ui.open()
+/datum/job_report_menu/ui_data(mob/user)
+ var/list/data = list()
+
+ data["exemptStatus"] = (owner.prefs?.db_flags & DB_FLAG_EXEMPT)
+
+ return data
+
/datum/job_report_menu/ui_static_data()
if (!CONFIG_GET(flag/use_exp_tracking))
return list("failReason" = JOB_REPORT_MENU_FAIL_REASON_TRACKING_DISABLED)
@@ -42,8 +49,39 @@
data["livingTime"] = play_records[EXP_TYPE_LIVING]
data["ghostTime"] = play_records[EXP_TYPE_GHOST]
+ data["adminTime"] = play_records[EXP_TYPE_ADMIN] ? play_records[EXP_TYPE_ADMIN] : 0
+
+ data["isAdmin"] = check_rights(R_ADMIN, show_msg = FALSE)
return data
+/datum/job_report_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if(.)
+ return
+
+ switch(action)
+ if("toggle_exempt")
+ if(!check_rights(R_ADMIN))
+ message_admins("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin rights.")
+ log_admin("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin rights.")
+ to_chat(usr, span_danger("ERROR: Insufficient admin rights."), confidential = TRUE)
+ return TRUE
+
+ var/datum/admins/viewer_admin_datum = GLOB.admin_datums[usr.ckey]
+
+ if(!viewer_admin_datum)
+ message_admins("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin datum for their ckey.")
+ log_admin("[ADMIN_LOOKUPFLW(usr)] attempted to toggle job playtime exempt status without admin datum for their ckey.")
+ to_chat(usr, span_danger("ERROR: Insufficient admin rights."), confidential = TRUE)
+ return TRUE
+
+ if(QDELETED(owner))
+ to_chat(usr, span_danger("ERROR: Client not found."), confidential = TRUE)
+ return TRUE
+
+ viewer_admin_datum.toggle_exempt_status(owner)
+ return TRUE
+
#undef JOB_REPORT_MENU_FAIL_REASON_TRACKING_DISABLED
#undef JOB_REPORT_MENU_FAIL_REASON_NO_RECORDS
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 5bfc6fe652..561425c710 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -144,6 +144,7 @@
newletter = "nglu"
if(5)
newletter = "glor"
+ else
. += newletter
return sanitize(.)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 256e128ff4..8490daa681 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -347,10 +347,10 @@
var/dir2 = 0
var/dir3 = 0
switch(direction)
- if(NORTH||SOUTH)
+ if(NORTH, SOUTH)
dir2 = 4
dir3 = 8
- if(EAST||WEST)
+ if(EAST, WEST)
dir2 = 1
dir3 = 2
var/turf/T2 = T
diff --git a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
index 088683ccd2..d9dfdd8c19 100644
--- a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
+++ b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
@@ -145,6 +145,8 @@
if(7)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/mask/cigarette/rollie(src)
+ else
+ return
/obj/structure/closet/crate/grave/open(mob/living/user, obj/item/S)
if(!opened)
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index 4a52e446bc..b3b3b4aa1d 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -41,13 +41,14 @@
target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY)
if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed))
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
- switch(rand(1,6))//Now let's see what hopefully-not-important part of the brain we cut off
- if(1)
- target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY)
- if(2)
- target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY)
- if(3)
- target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_SURGERY)
+ if(prob(50))
+ switch(rand(1,3))//Now let's see what hopefully-not-important part of the brain we cut off
+ if(1)
+ target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY)
+ if(2)
+ target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY)
+ if(3)
+ target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_SURGERY)
// you're cutting off a part of the brain.w
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
B.applyOrganDamage(50, 100)
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 16caef5b4e..cea7502540 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -469,6 +469,7 @@ GLOBAL_LIST_EMPTY(vending_products)
freebie(user, 2)
if(16 to 25)
freebie(user, 1)
+ if(26 to 75)
if(76 to 90)
tilt(user)
if(91 to 100)
diff --git a/html/changelogs/AutoChangeLog-pr-15504.yml b/html/changelogs/AutoChangeLog-pr-15504.yml
new file mode 100644
index 0000000000..9875b2b633
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15504.yml
@@ -0,0 +1,4 @@
+author: "[Timberpoes](https://github.com/Timberpoes)"
+delete-after: True
+changes:
+ - admin: "Re-added the button to the player playtime panel that lets admins toggle a player's job playtime exemption status."
diff --git a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
index e3f23a4992..dbf5ad0648 100644
--- a/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
+++ b/modular_citadel/code/modules/eventmaps/Spookystation/JTGSZwork.dm
@@ -630,19 +630,19 @@ GLOBAL_LIST_EMPTY(rain_sounds)
playchime = 1
switch(hour)
- if(1 || 2)
+ if(1, 2)
HRimgstate = "asshouroverlay-2" //Now it is ass, mostly because someones going to kill me for the other names.
if(3)
HRimgstate = "asshouroverlay-3"
- if(4 || 5)
+ if(4, 5)
HRimgstate = "asshouroverlay-4"
if(6)
HRimgstate = "asshouroverlay-6"
- if(7 || 8)
+ if(7, 8)
HRimgstate = "asshouroverlay-7"
if(9)
HRimgstate = "asshouroverlay-9"
- if(10 || 11)
+ if(10, 11)
HRimgstate = "asshouroverlay-10"
else
HRimgstate = "asshouroverlay-0" //Station time wraps to 0, and so does our hours.