diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index 5c61e81a0e8..ecddf358ab0 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -301,7 +301,7 @@ src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) @@ -321,7 +321,7 @@ if ("Clown") src.equip_if_possible(new /obj/item/weapon/storage/backpack/clown (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/clown(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes) @@ -335,7 +335,7 @@ if ("Mime") src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/mime(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/mime(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) @@ -352,7 +352,7 @@ if ("Station Engineer") src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit/engineer(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit/engineer(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform) @@ -364,7 +364,7 @@ if ("Shaft Miner") src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/radio/headset/headset_mine (src), slot_ears) src.equip_if_possible(new /obj/item/clothing/under/rank/miner(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) @@ -379,7 +379,7 @@ if ("Detective") src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/det(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) @@ -388,7 +388,7 @@ CIG.light("") src.equip_if_possible(CIG, slot_wear_mask) // sorry, no more cigar src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/weapon/fcardholder(src), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/suit/det_suit(src), slot_wear_suit) src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack) @@ -399,7 +399,7 @@ src.equip_if_possible(new /obj/item/device/radio/headset/headset_med (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) @@ -409,7 +409,7 @@ if ("Captain") src.equip_if_possible(new /obj/item/device/radio/headset/heads/captain (src), slot_ears) src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/captain(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/captain(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/armor/captain(src), slot_wear_suit) @@ -422,7 +422,7 @@ if ("Security Officer") src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/security(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) @@ -435,7 +435,7 @@ if ("Warden") src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/warden(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) @@ -466,7 +466,7 @@ src.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(src), slot_head) src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask) src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) src.equip_if_possible(new /obj/item/weapon/gun/energy(src), slot_s_store) @@ -475,7 +475,7 @@ if ("Head of Personnel") src.equip_if_possible(new /obj/item/device/radio/headset/heads/hop (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/pda/heads/hop(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) @@ -494,7 +494,7 @@ src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) @@ -512,7 +512,7 @@ src.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) src.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(src), slot_l_hand) @@ -535,7 +535,7 @@ src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/suit/suit(src), slot_wear_suit) src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack) src.equip_if_possible(new /obj/item/weapon/storage/briefcase(src), slot_l_hand) @@ -557,7 +557,7 @@ if ("Chief Engineer") src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit/engineer(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit/engineer(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/device/radio/headset/heads/ce (src), slot_ears) src.equip_if_possible(new /obj/item/device/pda/heads/ce(src), slot_belt) src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) //changed to black as part of dangercon 2011, approved by Urist_McDorf --Errorage @@ -584,7 +584,7 @@ src.equip_if_possible(new /obj/item/device/radio/headset/heads/cmo (src), slot_ears) src.equip_if_possible(new /obj/item/device/pda/heads/cmo(src), slot_belt) src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/labcoat_cmo(src), slot_wear_suit) @@ -595,7 +595,7 @@ src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit(src.back), slot_in_backpack) src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/mask/surgical(src), slot_wear_mask) src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) @@ -656,7 +656,7 @@ src.equip_if_possible(new /obj/item/device/radio/headset(src), slot_ears) var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(src) new /obj/item/weapon/storage/survival_kit(BPK) - src.equip_if_possible(BPK, slot_back) + src.equip_if_possible(BPK, slot_back,1) /* diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index 9e1e9563a7b..d87ff1a1997 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -1,3 +1,158 @@ +//WORK IN PROGRESS CONTENT + +//Project coder: Errorage + +//Readme: As part of the UI upgrade project, the intention here is for each job to have +//somewhat customizable loadouts. Players will be able to pick between jumpsuits, shoes, +//and other items. This datum will be used for all jobs and code will reference it. +//adding new jobs will be a matter of adding this datum.to a list of jobs. + +/datum/job + //Basic information + var/title = "Untitled" //The main (default) job title/name + var/list/alternative_titles = list() //Alternative job titles/names (alias) + var/job_number_at_round_start = 0 //Number of jobs that can be assigned at round start + var/job_number_total = 0 //Number of jobs that can be assigned total + var/list/bosses = list() //List of jobs which have authority over this job by default. + var/admin_only = 0 //If this is set to 1, the job is not available on the spawn screen + var/description = "" //A description of the job to be displayed when requested on the spawn screen + var/guides = "" //A string with links to relevent guides (likely the wiki) + + //Available equipment - The first thing listed is understood as the default setup. + var/list/equipment_ears = list() //list of possible ear-wear items + var/list/equipment_glasses = list() //list of possible glasses + var/list/equipment_gloves = list() //list of possible gloves + var/list/equipment_head = list() //list of possible headgear/helmets/hats + var/list/equipment_mask = list() //list of possible masks + var/list/equipment_shoes = list() //list of possible shoes + var/list/equipment_suit = list() //list of possible suits + var/list/equipment_under = list() //list of possible jumpsuits + var/list/equipment_belt = list() //list of possible belt-slot items + var/list/equipment_back = list() //list of possible back-slot items + var/obj/equipment_pda //default pda type + var/obj/equipment_id //default id type + + New(var/param_title, var/list/param_alternative_titles = list(), var/param_jobs_at_round_start = 0, var/param_global_max = 0, var/list/param_bosses = list(), var/param_admin_only = 0) + title = param_title + alternative_titles = param_alternative_titles + job_number_at_round_start = param_jobs_at_round_start + job_number_total = param_global_max + bosses = param_bosses + admin_only = param_admin_only + + //This proc tests to see if the given alias (job title/alternative job title) corresponds to this job. + //Returns 1 if it is, else returns 0 + proc/is_job_alias(var/alias) + if(alias == title) + return 1 + if(alias in alternative_titles) + return 1 + return 0 + +/datum/jobs + var/list/datum/job/all_jobs = list() + + proc/get_all_jobs() + return all_jobs + + //This proc returns all the jobs which are NOT admin only + proc/get_normal_jobs() + var/list/datum/job/normal_jobs = list() + for(var/datum/job/J in all_jobs) + if(!J.admin_only) + normal_jobs += J + return normal_jobs + + //This proc returns all the jobs which are admin only + proc/get_admin_jobs() + var/list/datum/job/admin_jobs = list() + for(var/datum/job/J in all_jobs) + if(J.admin_only) + admin_jobs += J + return admin_jobs + + //This proc returns the job datum of the job with the alias or job title given as the argument. Returns an empty string otherwise. + proc/get_job(var/alias) + for(var/datum/job/J in all_jobs) + if(J.is_job_alias(alias)) + return J + return "" + + //This proc returns a string with the default job title for the job with the given alias. Returns an empty string otherwise. + proc/get_job_title(var/alias) + for(var/datum/job/J in all_jobs) + if(J.is_job_alias(alias)) + return J.title + return "" + + //This proc returns all the job datums of the workers whose boss has the alias provided. (IE Engineer under Chief Engineer, etc.) + proc/get_jobs_under(var/boss_alias) + var/boss_title = get_job_title(boss_alias) + var/list/datum/job/employees = list() + for(var/datum/job/J in all_jobs) + if(boss_title in J.bosses) + employees += J + return employees + +var/datum/jobs/jobs = new/datum/jobs() + +proc/setup_jobs() + var/datum/job/JOB + + JOB = new/datum/job("Station Engineer") + JOB.alternative_titles = list("Structural Engineer","Engineer","Student of Engineering") + JOB.job_number_at_round_start = 5 + JOB.job_number_total = 5 + JOB.bosses = list("Chief Engineer") + JOB.admin_only = 0 + JOB.description = "Engineers are tasked with the maintenance of the station. Be it maintaining the power grid or rebuilding damaged sections." + JOB.guides = "" + JOB.equipment_ears = list(/obj/item/device/radio/headset/headset_eng) + JOB.equipment_glasses = list() + JOB.equipment_gloves = list() + JOB.equipment_head = list(/obj/item/clothing/head/helmet/hardhat) + JOB.equipment_mask = list() + JOB.equipment_shoes = list(/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/black) + JOB.equipment_suit = list(/obj/item/clothing/suit/hazardvest) + JOB.equipment_under = list(/obj/item/clothing/under/rank/engineer,/obj/item/clothing/under/color/yellow) + JOB.equipment_belt = list(/obj/item/weapon/storage/utilitybelt/full) + JOB.equipment_back = list(/obj/item/weapon/storage/backpack/industrial,/obj/item/weapon/storage/backpack) + JOB.equipment_pda = /obj/item/device/pda/engineering + JOB.equipment_id = /obj/item/weapon/card/id + + jobs.all_jobs += JOB + +//This proc will dress the mob (employee) in the default way for the specified job title/job alias +proc/dress_for_job_default(var/mob/living/carbon/human/employee as mob, var/job_alias) + if(!ishuman(employee)) + return + + //UNFINISHED + var/datum/job/JOB = jobs.get_job(job_alias) + if(JOB) + var/item = JOB.equipment_ears[1] + employee.equip_if_possible(new item(employee), employee.slot_ears) + item = JOB.equipment_under[1] + employee.equip_if_possible(new item(employee), employee.slot_w_uniform) + + + /* + src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) + src.equip_if_possible(new /obj/item/weapon/storage/survival_kit/engineer(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE + src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt) + src.equip_if_possible(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform) + src.equip_if_possible(new /obj/item/clothing/shoes/orange(src), slot_shoes) + src.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(src), slot_head) + src.equip_if_possible(new /obj/item/weapon/storage/utilitybelt/full(src), slot_l_hand) //currently spawns in hand due to traitor assignment requiring a PDA to be on the belt. --Errorage + //src.equip_if_possible(new /obj/item/clothing/gloves/yellow(src), slot_gloves) removed as part of Dangercon 2011, approved by Urist_McDorf --Errorage + src.equip_if_possible(new /obj/item/device/t_scanner(src), slot_r_store) + */ + +//END OF WORK IN PROGRESS CONTENT + + + var/list/occupations = list( //Civilian jobs "Head of Personnel" = 1,