diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 7412a768e39..95ec12426c6 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -794,26 +794,39 @@ var/global/floorIsLava = 0
if(!ai_number)
usr << "No AIs located" //Just so you know the thing is actually working and not just ignoring you.
-/datum/admins/proc/list_free_slots()
+/datum/admins/proc/manage_free_slots()
if(!check_rights())
return
- var/dat = "
List Free Slots"
+ var/dat = "Manage Free Slots"
var/count = 0
+ if(ticker && !ticker.mode)
+ alert(usr, "You cannot manage jobs before the round starts!")
+ return
+
if(job_master)
for(var/datum/job/job in job_master.occupations)
count++
var/J_title = html_encode(job.title)
+ var/J_opPos = html_encode(job.total_positions - (job.total_positions - job.current_positions))
var/J_totPos = html_encode(job.total_positions)
- dat += "[J_title]: [J_totPos]
"
+ if(job.total_positions <= 0)
+ dat += "[J_title]: [J_opPos]"
+ else
+ dat += "[J_title]: [J_opPos]/[J_totPos]"
+ if(initial(job.total_positions) > 0)
+ dat += " Add | "
+ if(job.total_positions > job.current_positions)
+ dat += "Remove"
+ else
+ dat += "Remove"
+ dat += "
"
dat += ""
var/winheight = 100 + (count * 20)
winheight = min(winheight, 690)
usr << browse(dat, "window=players;size=316x[winheight]")
-
-
//
//
//ALL DONE
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index f188e1f34ff..d40e4a1a1d3 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1324,6 +1324,30 @@
src.owner << "[special_role_description]"
src.owner << "(PM) (PP) (VV) (SM) (JMP) (CA)"
+ else if(href_list["addjobslot"])
+ if(!check_rights(R_ADMIN)) return
+
+ var/Add = href_list["addjobslot"]
+
+ for(var/datum/job/job in job_master.occupations)
+ if(job.title == Add)
+ job.total_positions += 1
+ break
+
+ src.manage_free_slots()
+
+ else if(href_list["removejobslot"])
+ if(!check_rights(R_ADMIN)) return
+
+ var/Remove = href_list["removejobslot"]
+
+ for(var/datum/job/job in job_master.occupations)
+ if(job.title == Remove && job.total_positions - job.current_positions > 0)
+ job.total_positions -= 1
+ break
+
+ src.manage_free_slots()
+
else if(href_list["adminspawncookie"])
if(!check_rights(R_ADMIN|R_FUN)) return
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 1e63312b6f2..67d8d55ff8a 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -449,13 +449,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_list_open_jobs()
set category = "Admin"
- set name = "List free slots"
+ set name = "Manage Job Slots"
if (!holder)
src << "Only administrators may use this command."
return
- holder.list_free_slots()
- feedback_add_details("admin_verb","LFS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ holder.manage_free_slots()
+ feedback_add_details("admin_verb","MFS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world)
set category = "Special Verbs"