Merge pull request #11318 from AffectedArc07/die-master-controller

Kills off the master controller
This commit is contained in:
Fox McCloud
2019-04-21 15:44:54 -04:00
committed by GitHub
27 changed files with 717 additions and 773 deletions
-42
View File
@@ -1,42 +0,0 @@
// old deprecated rusted piece of shit MC
// All this does now is misc. world init stuff because too lazy to put it somewhere else
// It used to run all of the repeating processes controlling the game but now the SMC and Process Scheduler do that
var/global/datum/controller/game_controller/master_controller //Set in world.New()
var/global/controller_iteration = 0
var/global/last_tick_duration = 0
var/global/air_processing_killed = 0
var/global/pipe_processing_killed = 0
/datum/controller/game_controller
var/list/shuttle_list // For debugging and VV
/datum/controller/game_controller/New()
//There can be only one master_controller. Out with the old and in with the new.
if(master_controller != src)
if(istype(master_controller))
qdel(master_controller)
master_controller = src
var/watch=0
if(!job_master)
watch = start_watch()
job_master = new /datum/controller/occupations()
job_master.SetupOccupations()
job_master.LoadJobs("config/jobs.txt")
log_startup_progress("Job setup complete in [stop_watch(watch)]s.")
if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase()
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
/datum/controller/game_controller/Destroy()
..()
return QDEL_HINT_HARDDEL_NOW
/datum/controller/game_controller/proc/setup()
setupfactions()
setup_economy()
populate_spawn_points()
-1
View File
@@ -14,7 +14,6 @@ SUBSYSTEM_DEF(air)
wait = 5
flags = SS_BACKGROUND
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/cost_turfs = 0
var/cost_groups = 0
var/cost_highpressure = 0
File diff suppressed because it is too large Load Diff
+2 -6
View File
@@ -17,8 +17,7 @@
message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
return
/client/proc/debug_controller(controller in list("Master",
"failsafe","Scheduler","StonedMaster","Ticker","Air","Jobs","Sun","Radio","Configuration","pAI",
/client/proc/debug_controller(controller in list("failsafe","Scheduler","StonedMaster","Ticker","Air","Jobs","Sun","Radio","Configuration","pAI",
"Cameras","Garbage", "Transfer Controller","Event","Alarm","Nano","Vote","Fires",
"Mob","NPC AI","Shuttle","Timer","Weather","Space","Mob Hunt Server"))
set category = "Debug"
@@ -27,9 +26,6 @@
if(!holder) return
switch(controller)
if("Master")
debug_variables(master_controller)
feedback_add_details("admin_verb","DMC")
if("failsafe")
debug_variables(Failsafe)
feedback_add_details("admin_verb", "dfailsafe")
@@ -46,7 +42,7 @@
debug_variables(SSair)
feedback_add_details("admin_verb","DAir")
if("Jobs")
debug_variables(job_master)
debug_variables(SSjobs)
feedback_add_details("admin_verb","DJobs")
if("Sun")
debug_variables(SSsun)
+2 -2
View File
@@ -357,7 +357,7 @@ proc/display_roundstart_logout_report()
if(L.stat)
if(L.suiciding) //Suicider
msg += "<b>[L.name]</b> ([L.ckey]), the [L.job] (<font color='red'><b>Suicide</b></font>)\n"
job_master.FreeRole(L.job)
SSjobs.FreeRole(L.job)
message_admins("<b>[key_name_admin(L)]</b>, the [L.job] has been freed due to (<font color='#ffcc00'><b>Early Round Suicide</b></font>)\n")
continue //Disconnected client
if(L.stat == UNCONSCIOUS)
@@ -383,7 +383,7 @@ proc/display_roundstart_logout_report()
continue //Lolwhat
else
msg += "<b>[L.name]</b> ([ckey(D.mind.key)]), the [L.job] (<font color='red'><b>Ghosted</b></font>)\n"
job_master.FreeRole(L.job)
SSjobs.FreeRole(L.job)
message_admins("<b>[key_name_admin(L)]</b>, the [L.job] has been freed due to (<font color='#ffcc00'><b>Early Round Ghosted While Alive</b></font>)\n")
continue //Ghosted while alive
+8 -6
View File
@@ -95,7 +95,7 @@ var/round_start_time = 0
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
if(M.can_start())
src.mode = config.pick_mode(secret_force_mode)
job_master.ResetOccupations()
SSjobs.ResetOccupations()
if(!src.mode)
src.mode = pickweight(runnable_modes)
if(src.mode)
@@ -107,7 +107,7 @@ var/round_start_time = 0
to_chat(world, "<B>Unable to start [mode.name].</B> Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby.")
mode = null
current_state = GAME_STATE_PREGAME
job_master.ResetOccupations()
SSjobs.ResetOccupations()
Master.SetRunLevel(RUNLEVEL_LOBBY)
return 0
@@ -115,12 +115,12 @@ var/round_start_time = 0
src.mode.pre_pre_setup()
var/can_continue
can_continue = src.mode.pre_setup()//Setup special modes
job_master.DivideOccupations() //Distribute jobs
SSjobs.DivideOccupations() //Distribute jobs
if(!can_continue)
qdel(mode)
current_state = GAME_STATE_PREGAME
to_chat(world, "<B>Error setting up [master_mode].</B> Reverting to pre-game lobby.")
job_master.ResetOccupations()
SSjobs.ResetOccupations()
Master.SetRunLevel(RUNLEVEL_LOBBY)
return 0
@@ -135,6 +135,7 @@ var/round_start_time = 0
src.mode.announce()
create_characters() //Create player characters and transfer them
populate_spawn_points()
collect_minds()
equip_characters()
data_core.manifest()
@@ -145,6 +146,7 @@ var/round_start_time = 0
//here to initialize the random events nicely at round start
setup_economy()
setupfactions()
//shuttle_controller.setup_shuttle_docks()
@@ -375,8 +377,8 @@ var/round_start_time = 0
if(player.mind.assigned_role == "Captain")
captainless=0
if(player.mind.assigned_role != player.mind.special_role)
job_master.AssignRank(player, player.mind.assigned_role, 0)
job_master.EquipRank(player, player.mind.assigned_role, 0)
SSjobs.AssignRank(player, player.mind.assigned_role, 0)
SSjobs.EquipRank(player, player.mind.assigned_role, 0)
EquipCustomItems(player)
if(captainless)
for(var/mob/M in GLOB.player_list)
@@ -26,7 +26,7 @@
explanation_text = "Capture"
/datum/objective/abductee/capture/New()
var/list/jobs = job_master.occupations.Copy()
var/list/jobs = SSjobs.occupations.Copy()
for(var/datum/job/J in jobs)
if(J.current_positions < 1)
jobs -= J
+2 -2
View File
@@ -235,9 +235,9 @@
return 1
/datum/outfit/job/proc/imprint_idcard(mob/living/carbon/human/H)
var/datum/job/J = job_master.GetJobType(jobtype)
var/datum/job/J = SSjobs.GetJobType(jobtype)
if(!J)
J = job_master.GetJob(H.job)
J = SSjobs.GetJob(H.job)
var/alt_title
if(H.mind)
+2 -2
View File
@@ -72,7 +72,7 @@ var/global/list/role_playtime_requirements = list(
jtext = "-"
if(C.mob.mind && C.mob.mind.assigned_role)
theirjob = job_master.GetJob(C.mob.mind.assigned_role)
theirjob = SSjobs.GetJob(C.mob.mind.assigned_role)
if(theirjob)
jtext = theirjob.title
msg += "<TD>[jtext]</TD>"
@@ -180,7 +180,7 @@ var/global/list/role_playtime_requirements = list(
if(config.use_exp_restrictions)
var/list/jobs_locked = list()
var/list/jobs_unlocked = list()
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(job.exp_requirements && job.exp_type)
if(!job.available_in_playtime(mob.client))
jobs_unlocked += job.title
+1 -1
View File
@@ -5,7 +5,7 @@
if(playercount >= highpop_trigger)
log_debug("Playercount: [playercount] versus trigger: [highpop_trigger] - loading highpop job config");
job_master.LoadJobs("config/jobs_highpop.txt")
SSjobs.LoadJobs("config/jobs_highpop.txt")
else
log_debug("Playercount: [playercount] versus trigger: [highpop_trigger] - keeping standard job config");
return 1
+16 -16
View File
@@ -69,7 +69,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/format_jobs(list/jobs)
var/list/formatted = list()
for(var/job in jobs)
if(job_in_department(job_master.GetJob(job)))
if(job_in_department(SSjobs.GetJob(job)))
formatted.Add(list(list(
"display_name" = replacetext(job, " ", "&nbsp;"),
"target_rank" = get_target_rank(),
@@ -79,7 +79,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/format_job_slots()
var/list/formatted = list()
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(job_blacklisted_full(job))
continue
if(!job_in_department(job))
@@ -166,7 +166,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/can_close_job(datum/job/job)
if(job)
if(!job_blacklisted_full(job) && !job_blacklisted_partial(job) && job_in_department(job, FALSE))
if(job.total_positions > job.current_positions && !(job in job_master.prioritized_jobs))
if(job.total_positions > job.current_positions && !(job in SSjobs.prioritized_jobs))
var/delta = (world.time / 10) - time_last_changed_position
if((change_position_cooldown < delta) || (opened_positions[job.title] > 0))
return 1
@@ -177,10 +177,10 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/can_prioritize_job(datum/job/job)
if(job)
if(!job_blacklisted_full(job) && job_in_department(job, FALSE))
if(job in job_master.prioritized_jobs)
if(job in SSjobs.prioritized_jobs)
return 2
else
if(job_master.prioritized_jobs.len >= 3)
if(SSjobs.prioritized_jobs.len >= 3)
return 0
if(job.total_positions <= job.current_positions)
return 0
@@ -205,7 +205,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/get_subordinates(rank, addcivs)
var/list/jobs_returned = list()
for(var/datum/job/thisjob in job_master.occupations)
for(var/datum/job/thisjob in SSjobs.occupations)
if(rank in thisjob.department_head)
jobs_returned += thisjob.title
if(addcivs)
@@ -364,10 +364,10 @@ var/time_last_changed_position = 0
if(target_dept && modify.assignment == "Unassigned")
visible_message("<span class='notice'>[src]: Demoted individuals must see the HoP for a new job.</span>")
return 0
if(!job_in_department(job_master.GetJob(modify.rank), FALSE))
if(!job_in_department(SSjobs.GetJob(modify.rank), FALSE))
visible_message("<span class='notice'>[src]: Cross-department job transfers must be done by the HoP.</span>")
return 0
if(!job_in_department(job_master.GetJob(t1)))
if(!job_in_department(SSjobs.GetJob(t1)))
return 0
if(t1 == "Custom")
var/temp_t = sanitize(copytext(input("Enter a custom job assignment.","Assignment"),1,MAX_MESSAGE_LEN))
@@ -473,7 +473,7 @@ var/time_last_changed_position = 0
if(modify.assignment == "Unassigned")
visible_message("<span class='notice'>[src]: Unassigned crew cannot be demoted any further. If further action is warranted, ask the Captain about Termination.</span>")
return 0
if(!job_in_department(job_master.GetJob(modify.rank), FALSE))
if(!job_in_department(SSjobs.GetJob(modify.rank), FALSE))
visible_message("<span class='notice'>[src]: Heads may only demote members of their own department.</span>")
return 0
@@ -494,7 +494,7 @@ var/time_last_changed_position = 0
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(is_authenticated(usr))
var/edit_job_target = href_list["job"]
var/datum/job/j = job_master.GetJob(edit_job_target)
var/datum/job/j = SSjobs.GetJob(edit_job_target)
if(!job_in_department(j, FALSE))
return 0
if(!j)
@@ -513,7 +513,7 @@ var/time_last_changed_position = 0
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
if(is_authenticated(usr))
var/edit_job_target = href_list["job"]
var/datum/job/j = job_master.GetJob(edit_job_target)
var/datum/job/j = SSjobs.GetJob(edit_job_target)
if(!job_in_department(j, FALSE))
return 0
if(!j)
@@ -533,17 +533,17 @@ var/time_last_changed_position = 0
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
if(is_authenticated(usr) && !target_dept)
var/priority_target = href_list["job"]
var/datum/job/j = job_master.GetJob(priority_target)
var/datum/job/j = SSjobs.GetJob(priority_target)
if(!j)
return 0
if(!job_in_department(j))
return 0
var/priority = TRUE
if(j in job_master.prioritized_jobs)
job_master.prioritized_jobs -= j
if(j in SSjobs.prioritized_jobs)
SSjobs.prioritized_jobs -= j
priority = FALSE
else if(job_master.prioritized_jobs.len < 3)
job_master.prioritized_jobs += j
else if(SSjobs.prioritized_jobs.len < 3)
SSjobs.prioritized_jobs += j
else
return 0
log_game("[key_name(usr)] [priority ? "prioritized" : "unprioritized"] the job \"[j.title]\".")
+1 -1
View File
@@ -397,7 +397,7 @@
//Handle job slot/tater cleanup.
var/job = occupant.mind.assigned_role
job_master.FreeRole(job)
SSjobs.FreeRole(job)
if(occupant.mind.objectives.len)
occupant.mind.objectives.Cut()
+1 -1
View File
@@ -284,7 +284,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(12)
var/list/jobs = list()
data["jobs"] = jobs
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(job_blacklisted(job))
continue
if(job.is_position_available())
+4 -2
View File
@@ -31,13 +31,15 @@ var/global/list/map_transition_config = MAP_TRANSITION_CONFIG
Master.Initialize(10, FALSE)
processScheduler = new
master_controller = new /datum/controller/game_controller()
spawn(1)
processScheduler.deferSetupFor(/datum/controller/process/ticker)
processScheduler.setup()
master_controller.setup()
if(!syndicate_code_phrase)
syndicate_code_phrase = generate_code_phrase()
if(!syndicate_code_response)
syndicate_code_response = generate_code_phrase()
if(using_map && using_map.name)
map_name = "[using_map.name]"
else
+2 -20
View File
@@ -681,24 +681,6 @@ var/list/admin_verbs_ticket = list(
feedback_add_details("admin_verb","OT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/kill_air() // -- TLE
set category = "Debug"
set name = "Kill Air"
set desc = "Toggle Air Processing"
if(!check_rights(R_DEBUG))
return
if(air_processing_killed)
air_processing_killed = 0
to_chat(usr, "<b>Enabled air processing.</b>")
else
air_processing_killed = 1
to_chat(usr, "<b>Disabled air processing.</b>")
feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] used 'kill air'.")
message_admins("<span class='notice'>[key_name_admin(usr)] used 'kill air'.</span>", 1)
/client/proc/deadmin_self()
set name = "De-admin self"
set category = "Admin"
@@ -888,7 +870,7 @@ var/list/admin_verbs_ticket = list(
return
var/list/jobs = list()
for(var/datum/job/J in job_master.occupations)
for(var/datum/job/J in SSjobs.occupations)
if(J.current_positions >= J.total_positions && J.total_positions != -1)
jobs += J.title
if(!jobs.len)
@@ -896,7 +878,7 @@ var/list/admin_verbs_ticket = list(
return
var/job = input("Please select job slot to free", "Free Job Slot") as null|anything in jobs
if(job)
job_master.FreeRole(job)
SSjobs.FreeRole(job)
log_admin("[key_name(usr)] has freed a job slot for [job].")
message_admins("[key_name_admin(usr)] has freed a job slot for [job].")
+24 -24
View File
@@ -491,8 +491,8 @@
if(!M.ckey) //sanity
to_chat(usr, "This mob has no ckey")
return
if(!job_master)
to_chat(usr, "Job Master has not been setup!")
if(!SSjobs)
to_chat(usr, "SSjobs has not been setup!")
return
var/dat = ""
@@ -512,7 +512,7 @@
jobs += "<tr align='center' bgcolor='ccccff'><th colspan='[length(command_positions)]'><a href='?src=[UID()];jobban3=commanddept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Command Positions</a></th></tr><tr align='center'>"
for(var/jobPos in command_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -533,7 +533,7 @@
jobs += "<tr bgcolor='ffddf0'><th colspan='[length(security_positions)]'><a href='?src=[UID()];jobban3=securitydept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Security Positions</a></th></tr><tr align='center'>"
for(var/jobPos in security_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -554,7 +554,7 @@
jobs += "<tr bgcolor='fff5cc'><th colspan='[length(engineering_positions)]'><a href='?src=[UID()];jobban3=engineeringdept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Engineering Positions</a></th></tr><tr align='center'>"
for(var/jobPos in engineering_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -575,7 +575,7 @@
jobs += "<tr bgcolor='ffeef0'><th colspan='[length(medical_positions)]'><a href='?src=[UID()];jobban3=medicaldept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Medical Positions</a></th></tr><tr align='center'>"
for(var/jobPos in medical_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -596,7 +596,7 @@
jobs += "<tr bgcolor='e79fff'><th colspan='[length(science_positions)]'><a href='?src=[UID()];jobban3=sciencedept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Science Positions</a></th></tr><tr align='center'>"
for(var/jobPos in science_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -617,7 +617,7 @@
jobs += "<tr bgcolor='dddddd'><th colspan='[length(support_positions)]'><a href='?src=[UID()];jobban3=supportdept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Support Positions</a></th></tr><tr align='center'>"
for(var/jobPos in support_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -638,7 +638,7 @@
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(nonhuman_positions)+1]'><a href='?src=[UID()];jobban3=nonhumandept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Non-human Positions</a></th></tr><tr align='center'>"
for(var/jobPos in nonhuman_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -707,7 +707,7 @@
jobs += "<tr bgcolor='dddddd'><th colspan='[length(whitelisted_positions)]'><a href='?src=[UID()];jobban3=whitelistdept;jobban4=[M.UID()];dbbanaddckey=[M.ckey]'>Whitelisted Positions</a></th></tr><tr align='center'>"
for(var/jobPos in whitelisted_positions)
if(!jobPos) continue
var/datum/job/job = job_master.GetJob(jobPos)
var/datum/job/job = SSjobs.GetJob(jobPos)
if(!job) continue
if(jobban_isbanned(M, job.title))
@@ -743,8 +743,8 @@
var/ban_ckey_param = href_list["dbbanaddckey"]
if(!job_master)
to_chat(usr, "Job Master has not been setup!")
if(!SSjobs)
to_chat(usr, "SSjobs has not been setup!")
return
//get jobs for department if specified, otherwise just returnt he one job in a list.
@@ -753,50 +753,50 @@
if("commanddept")
for(var/jobPos in command_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("securitydept")
for(var/jobPos in security_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("engineeringdept")
for(var/jobPos in engineering_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("medicaldept")
for(var/jobPos in medical_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("sciencedept")
for(var/jobPos in science_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("supportdept")
for(var/jobPos in support_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("nonhumandept")
joblist += "pAI"
for(var/jobPos in nonhuman_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
if("whitelistdept")
for(var/jobPos in whitelisted_positions)
if(!jobPos) continue
var/datum/job/temp = job_master.GetJob(jobPos)
var/datum/job/temp = SSjobs.GetJob(jobPos)
if(!temp) continue
joblist += temp.title
else
@@ -2935,11 +2935,11 @@
usr << browse(dat, "window=lawchanges;size=800x500")
if("list_job_debug")
var/dat = "<B>Job Debug info.</B><HR>"
if(job_master)
for(var/line in job_master.job_debug)
if(SSjobs)
for(var/line in SSjobs.job_debug)
dat += "[line]<BR>"
dat+= "*******<BR><BR>"
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(!job) continue
dat += "job: [job.title], current_positions: [job.current_positions], total_positions: [job.total_positions] <BR>"
usr << browse(dat, "window=jobdebug;size=600x500")
@@ -3029,7 +3029,7 @@
M.req_one_access = list(access_brig,access_engine)
message_admins("[key_name_admin(usr)] made all maint doors engineering and brig access-only.")
if("infinite_sec")
var/datum/job/J = job_master.GetJob("Security Officer")
var/datum/job/J = SSjobs.GetJob("Security Officer")
if(!J) return
J.total_positions = -1
J.spawn_positions = -1
+1 -1
View File
@@ -612,7 +612,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
var/datum/job/jobdatum
if(dresscode == "as job...")
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
jobdatum = job_master.GetJob(jobname)
jobdatum = SSjobs.GetJob(jobname)
feedback_add_details("admin_verb", "SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(dostrip)
+6 -6
View File
@@ -435,8 +435,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
//Now for special roles and equipment.
switch(new_character.mind.special_role)
if("traitor")
job_master.AssignRank(new_character, new_character.mind.assigned_role, 0)
job_master.EquipRank(new_character, new_character.mind.assigned_role, 1)
SSjobs.AssignRank(new_character, new_character.mind.assigned_role, 0)
SSjobs.EquipRank(new_character, new_character.mind.assigned_role, 1)
ticker.mode.equip_traitor(new_character)
if("Wizard")
new_character.loc = pick(wizardstart)
@@ -466,8 +466,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
call(/datum/game_mode/proc/add_law_zero)(new_character)
//Add aliens.
else
job_master.AssignRank(new_character, new_character.mind.assigned_role, 0)
job_master.EquipRank(new_character, new_character.mind.assigned_role, 1)//Or we simply equip them.
SSjobs.AssignRank(new_character, new_character.mind.assigned_role, 0)
SSjobs.EquipRank(new_character, new_character.mind.assigned_role, 1)//Or we simply equip them.
//Announces the character on all the systems, based on the record.
if(!issilicon(new_character))//If they are not a cyborg/AI.
@@ -662,11 +662,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_ADMIN))
return
if(job_master)
if(SSjobs)
var/currentpositiontally
var/totalpositiontally
to_chat(src, "<span class='notice'>Job Name: Filled job slot / Total job slots <b>(Free job slots)</b></span>")
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
to_chat(src, "<span class='notice'>[job.title]: [job.current_positions] / \
[job.total_positions == -1 ? "<b>UNLIMITED</b>" : job.total_positions] \
<b>([job.total_positions == -1 ? "UNLIMITED" : job.total_positions - job.current_positions])</b></span>")
+2 -2
View File
@@ -6,8 +6,8 @@
to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.")
return
if(job_master && ticker)
var/datum/job/job = job_master.GetJob("AI")
if(SSjobs && ticker)
var/datum/job/job = SSjobs.GetJob("AI")
if(!job)
to_chat(usr, "Unable to locate the AI job")
return
@@ -576,7 +576,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/SetChoices(mob/user, limit = 13, list/splitJobs = list("Civilian","Research Director","AI","Bartender"), width = 760, height = 790)
if(!job_master)
if(!SSjobs)
return
//limit - The amount of jobs allowed per column. Defaults to 17 to make it look nice.
@@ -597,8 +597,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
//The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows.
var/datum/job/lastJob
if(!job_master) return
for(var/datum/job/job in job_master.occupations)
if(!SSjobs)
return
for(var/datum/job/job in SSjobs.occupations)
if(job.admin_only)
continue
@@ -802,7 +803,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return 0
/datum/preferences/proc/UpdateJobPreference(mob/user, role, desiredLvl)
var/datum/job/job = job_master.GetJob(role)
var/datum/job/job = SSjobs.GetJob(role)
if(!job)
user << browse(null, "window=mob_occupation")
@@ -908,7 +909,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
player_alt_titles[job.title] = new_title
/datum/preferences/proc/SetJob(mob/user, role)
var/datum/job/job = job_master.GetJob(role)
var/datum/job/job = SSjobs.GetJob(role)
if(!job)
user << browse(null, "window=mob_occupation")
ShowChoices(user)
@@ -165,7 +165,7 @@
var/mob/living/carbon/human/H = user
for(var/obj/item/W in H)
H.unEquip(W)
var/datum/job/clown/C = job_master.GetJob("Clown")
var/datum/job/clown/C = SSjobs.GetJob("Clown")
C.equip(H)
affected_targets.Add(H)
@@ -166,7 +166,7 @@
return
var/list/jobs[0]
for(var/datum/job/j in job_master.occupations)
for(var/datum/job/j in SSjobs.occupations)
if(j.title != "AI" && j.title != "Cyborg")
jobs[j.title] = j
jobs = sortAssoc(jobs)
@@ -27,7 +27,7 @@ var/global/list/empty_playable_ai_cores = list()
//Handle job slot/tater cleanup.
var/job = mind.assigned_role
job_master.FreeRole(job)
SSjobs.FreeRole(job)
if(mind.objectives.len)
mind.objectives.Cut()
+18 -18
View File
@@ -256,7 +256,7 @@
new_player_panel()
/mob/new_player/proc/IsJobAvailable(rank)
var/datum/job/job = job_master.GetJob(rank)
var/datum/job/job = SSjobs.GetJob(rank)
if(!job) return 0
if(!job.is_position_available()) return 0
if(jobban_isbanned(src,rank)) return 0
@@ -269,9 +269,9 @@
if(config.assistantlimit)
if(job.title == "Civilian")
var/count = 0
var/datum/job/officer = job_master.GetJob("Security Officer")
var/datum/job/warden = job_master.GetJob("Warden")
var/datum/job/hos = job_master.GetJob("Head of Security")
var/datum/job/officer = SSjobs.GetJob("Security Officer")
var/datum/job/warden = SSjobs.GetJob("Warden")
var/datum/job/hos = SSjobs.GetJob("Head of Security")
count += (officer.current_positions + warden.current_positions + hos.current_positions)
if(job.current_positions > (config.assistantratio * count))
if(count >= 5) // if theres more than 5 security on the station just let assistants join regardless, they should be able to handle the tide
@@ -280,21 +280,21 @@
return 1
/mob/new_player/proc/IsAdminJob(rank)
var/datum/job/job = job_master.GetJob(rank)
var/datum/job/job = SSjobs.GetJob(rank)
if(job.admin_only)
return 1
else
return 0
/mob/new_player/proc/IsERTSpawnJob(rank)
var/datum/job/job = job_master.GetJob(rank)
var/datum/job/job = SSjobs.GetJob(rank)
if(job.spawn_ert)
return 1
else
return 0
/mob/new_player/proc/IsSyndicateCommand(rank)
var/datum/job/job = job_master.GetJob(rank)
var/datum/job/job = SSjobs.GetJob(rank)
if(job.syndicate_command)
return 1
else
@@ -312,15 +312,15 @@
if(!IsJobAvailable(rank))
to_chat(src, alert("[rank] is not available. Please try another."))
return 0
var/datum/job/thisjob = job_master.GetJob(rank)
var/datum/job/thisjob = SSjobs.GetJob(rank)
if(thisjob.barred_by_disability(client))
to_chat(src, alert("[rank] is not available due to your character's disability. Please try another."))
return 0
job_master.AssignRole(src, rank, 1)
SSjobs.AssignRole(src, rank, 1)
var/mob/living/character = create_character() //creates the human and transfers vars and mind
character = job_master.AssignRank(character, rank, 1) //equips the human
character = SSjobs.AssignRank(character, rank, 1) //equips the human
// AIs don't need a spawnpoint, they must spawn at an empty core
if(character.mind.assigned_role == "AI")
@@ -367,7 +367,7 @@
character.buckled.loc = character.loc
character.buckled.dir = character.dir
character = job_master.EquipRank(character, rank, 1) //equips the human
character = SSjobs.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
ticker.mode.latespawn(character)
@@ -384,8 +384,8 @@
callHook("latespawn", list(character))
AddEmploymentContract(character)
if(!thisjob.is_position_available() && thisjob in job_master.prioritized_jobs)
job_master.prioritized_jobs -= thisjob
if(!thisjob.is_position_available() && thisjob in SSjobs.prioritized_jobs)
SSjobs.prioritized_jobs -= thisjob
qdel(src)
@@ -452,11 +452,11 @@
else if(SSshuttle.emergency.mode >= SHUTTLE_CALL)
dat += "<font color='red'>The station is currently undergoing evacuation procedures.</font><br>"
if(length(job_master.prioritized_jobs))
if(length(SSjobs.prioritized_jobs))
dat += "<font color='lime'>The station has flagged these jobs as high priority: "
var/amt = length(job_master.prioritized_jobs)
var/amt = length(SSjobs.prioritized_jobs)
var/amt_count
for(var/datum/job/a in job_master.prioritized_jobs)
for(var/datum/job/a in SSjobs.prioritized_jobs)
amt_count++
if(amt_count != amt)
dat += " [a.title], "
@@ -478,7 +478,7 @@
"Science" = list(jobs = list(), titles = science_positions, color = "#e6b3e6"),
"Supply" = list(jobs = list(), titles = supply_positions, color = "#ead4ae"),
)
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(job && IsJobAvailable(job.title) && !job.barred_by_disability(client))
activePlayers[job] = 0
var/categorized = 0
@@ -512,7 +512,7 @@
dat += "<fieldset style='border: 2px solid [color]; display: inline'>"
dat += "<legend align='center' style='color: [color]'>[jobcat]</legend>"
for(var/datum/job/job in categorizedJobs[jobcat]["jobs"])
if(job in job_master.prioritized_jobs)
if(job in SSjobs.prioritized_jobs)
dat += "<a href='byond://?src=[UID()];SelectedJob=[job.title]'><font color='lime'><B>[job.title] ([job.current_positions]) (Active: [activePlayers[job]])</B></font></a><br>"
else
dat += "<a href='byond://?src=[UID()];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [activePlayers[job]])</a><br>"
@@ -72,7 +72,7 @@
/datum/computer_file/program/card_mod/proc/format_job_slots()
var/list/formatted = list()
for(var/datum/job/job in job_master.occupations)
for(var/datum/job/job in SSjobs.occupations)
if(job_blacklisted(job))
continue
formatted.Add(list(list(
@@ -127,10 +127,10 @@
/datum/computer_file/program/card_mod/proc/can_prioritize_job(datum/job/job)
if(job)
if(!job_blacklisted(job))
if(job in job_master.prioritized_jobs)
if(job in SSjobs.prioritized_jobs)
return 2
else
if(job_master.prioritized_jobs.len >= 3)
if(SSjobs.prioritized_jobs.len >= 3)
return 0
if(job.total_positions <= job.current_positions)
return 0
@@ -320,7 +320,7 @@
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(is_authenticated(usr))
var/edit_job_target = href_list["job"]
var/datum/job/j = job_master.GetJob(edit_job_target)
var/datum/job/j = SSjobs.GetJob(edit_job_target)
if(!j)
return 1
if(can_open_job(j) != 1)
@@ -335,7 +335,7 @@
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
if(is_authenticated(usr))
var/edit_job_target = href_list["job"]
var/datum/job/j = job_master.GetJob(edit_job_target)
var/datum/job/j = SSjobs.GetJob(edit_job_target)
if(!j)
return 1
if(can_close_job(j) != 1)
@@ -352,16 +352,16 @@
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
if(is_authenticated(usr))
var/priority_target = href_list["job"]
var/datum/job/j = job_master.GetJob(priority_target)
var/datum/job/j = SSjobs.GetJob(priority_target)
if(!j)
return 0
// Unlike the proper ID computer, this does not check job_in_department
var/priority = TRUE
if(j in job_master.prioritized_jobs)
job_master.prioritized_jobs -= j
if(j in SSjobs.prioritized_jobs)
SSjobs.prioritized_jobs -= j
priority = FALSE
else if(job_master.prioritized_jobs.len < 3)
job_master.prioritized_jobs += j
else if(SSjobs.prioritized_jobs.len < 3)
SSjobs.prioritized_jobs += j
else
return 0
log_game("[key_name(usr)] [priority ? "prioritized" : "unprioritized"] the job \"[j.title]\".")
+1 -1
View File
@@ -178,7 +178,7 @@ var/ert_request_answered = FALSE
ticker.mode.ert += M.mind
M.forceMove(spawn_location)
job_master.CreateMoneyAccount(M, class, null)
SSjobs.CreateMoneyAccount(M, class, null)
active_team.equip_officer(class, M)
+1 -2
View File
@@ -195,7 +195,6 @@
#include "code\controllers\hooks-defs.dm"
#include "code\controllers\hooks.dm"
#include "code\controllers\master.dm"
#include "code\controllers\master_controller.dm"
#include "code\controllers\subsystem.dm"
#include "code\controllers\verbs.dm"
#include "code\controllers\voting.dm"
@@ -214,6 +213,7 @@
#include "code\controllers\subsystem\fires.dm"
#include "code\controllers\subsystem\garbage.dm"
#include "code\controllers\subsystem\icon_smooth.dm"
#include "code\controllers\subsystem\jobs.dm"
#include "code\controllers\subsystem\machinery.dm"
#include "code\controllers\subsystem\mapping.dm"
#include "code\controllers\subsystem\mobs.dm"
@@ -567,7 +567,6 @@
#include "code\game\gamemodes\wizard\spellbook.dm"
#include "code\game\gamemodes\wizard\wizard.dm"
#include "code\game\jobs\access.dm"
#include "code\game\jobs\job_controller.dm"
#include "code\game\jobs\job_exp.dm"
#include "code\game\jobs\job_objective.dm"
#include "code\game\jobs\job_scaling.dm"