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"