From cbcc52beeb4ad901998399a73a0676752e56e182 Mon Sep 17 00:00:00 2001 From: Incoming Date: Tue, 24 Feb 2015 16:06:36 -0500 Subject: [PATCH] Updates Manage Job Slots to work with assistant slots Any (non-silicon) job can now be set to be an unlimited slot job from Manage Job Slots People will be allowed to join as assistant if no other jobs are availible Removes a redundant sanity check from AssignRole() --- code/controllers/subsystem/jobs.dm | 11 +++++----- code/modules/admin/admin.dm | 19 +++++++++++------ code/modules/admin/topic.dm | 25 +++++++++++++++++++++++ code/modules/mob/new_player/new_player.dm | 13 +++++++++++- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index ef35a1923ee..ee3c35642f8 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -59,12 +59,11 @@ var/datum/subsystem/job/SSjob var/position_limit = job.total_positions if(!latejoin) position_limit = job.spawn_positions - if((job.current_positions < position_limit) || position_limit == -1) - Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") - player.mind.assigned_role = rank - unassigned -= player - job.current_positions++ - return 1 + Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") + player.mind.assigned_role = rank + unassigned -= player + job.current_positions++ + return 1 Debug("AR has failed, Player: [player], Rank: [rank]") return 0 diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a05337f3f68..2b2672214c7 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -815,22 +815,29 @@ var/global/floorIsLava = 0 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) - if(job.total_positions <= 0) - dat += "[J_title]: [J_opPos]" + if(job.total_positions < 0) + dat += "[J_title]: [J_opPos] (unlimited)" else dat += "[J_title]: [J_opPos]/[J_totPos]" - if(initial(job.total_positions) > 0) + + if(job.title == "AI" || job.title == "Cyborg") + dat += " (Cannot Late Join)
" + continue + if(job.total_positions >= 0) dat += " Add | " if(job.total_positions > job.current_positions) - dat += "Remove" + dat += "Remove | " else - dat += "Remove" + dat += "Remove | " + dat += "Unlimit" + else + dat += " Limit" dat += "
" dat += "" var/winheight = 100 + (count * 20) winheight = min(winheight, 690) - usr << browse(dat, "window=players;size=316x[winheight]") + usr << browse(dat, "window=players;size=375x[winheight]") // // diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 4a374790b41..f34a896e3c5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1404,6 +1404,31 @@ src.manage_free_slots() + else if(href_list["unlimitjobslot"]) + if(!check_rights(R_ADMIN)) return + + var/Unlimit = href_list["unlimitjobslot"] + + for(var/datum/job/job in SSjob.occupations) + if(job.title == Unlimit) + job.total_positions = -1 + break + + src.manage_free_slots() + + else if(href_list["limitjobslot"]) + if(!check_rights(R_ADMIN)) return + + var/Limit = href_list["limitjobslot"] + + for(var/datum/job/job in SSjob.occupations) + if(job.title == Limit) + job.total_positions = job.current_positions + break + + src.manage_free_slots() + + else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_FUN)) return diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index d228a9df1b7..c7f88dcc376 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -246,7 +246,13 @@ if(!job) return 0 if((job.current_positions >= job.total_positions) && job.total_positions != -1) - return 0 + if(job.title == "Assistant") + for(var/datum/job/J in SSjob.occupations) + if(J && J.current_positions < J.total_positions && J.title != job.title) + world << "[J.title]" + return 0 + else + return 0 if(jobban_isbanned(src,rank)) return 0 if(!job.player_old_enough(src.client)) @@ -329,6 +335,11 @@ if (job.title in command_positions) position_class = "commandPosition" dat += "[job.title] ([job.current_positions])
" + if(!job_count) //if there's nowhere to go, assistant opens up. + for(var/datum/job/job in SSjob.occupations) + if(job.title != "Assistant") continue + dat += "[job.title] ([job.current_positions])
" + break dat += "" // Removing the old window method but leaving it here for reference