diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index 033d5af6152..72831cff075 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -29,7 +29,14 @@ var/global/list/frills_list = list()
var/global/list/spines_list = list()
var/global/list/animated_spines_list = list()
//Backpacks
-var/global/list/backbaglist = list("Backpack", "Satchel")
+#define GBACKPACK "Grey Backpack"
+#define GSATCHEL "Grey Satchel"
+#define GDUFFLEBAG "Grey Dufflebag"
+#define LSATCHEL "Leather Satchel"
+#define DBACKPACK "Department Backpack"
+#define DSATCHEL "Department Satchel"
+#define DDUFFLEBAG "Department Dufflebag"
+var/global/list/backbaglist = list(GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL, DBACKPACK, DSATCHEL, DDUFFLEBAG)
//Female Uniforms
var/global/list/female_clothing_icons = list()
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index 56ca7d875d0..65cb20bee21 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -172,9 +172,9 @@
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
..()
contents = list()
- new /obj/item/weapon/storage/backpack/dufflebag(src)
- new /obj/item/weapon/storage/backpack/satchel_norm(src)
- new /obj/item/weapon/storage/backpack(src)
+ new /obj/item/weapon/storage/backpack/dufflebag/engineering(src)
+ new /obj/item/weapon/storage/backpack/satchel_eng(src)
+ new /obj/item/weapon/storage/backpack/industrial(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src)
for(var/i in 1 to 3)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index debbc249b61..0f86df990ba 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -49,7 +49,7 @@ var/list/preferences_datums = list()
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
- var/backbag = 1 //backpack type
+ var/backbag = GBACKPACK //backpack type
var/hair_style = "Bald" //Hair type
var/hair_color = "000" //Hair color
var/facial_hair_style = "Shaved" //Face hair type
@@ -193,7 +193,7 @@ var/list/preferences_datums = list()
dat += "Underwear:
[underwear]
"
dat += "Undershirt:
[undershirt]
"
dat += "Socks:
[socks]
"
- dat += "Backpack:
[backbaglist[backbag]]
"
+ dat += "Backpack:
[backbag]
"
if(pref_species.use_skintones)
@@ -735,7 +735,7 @@ var/list/preferences_datums = list()
if("s_tone")
skin_tone = random_skin_tone()
if("bag")
- backbag = rand(1,2)
+ backbag = pick(backbaglist)
if("all")
random_character()
@@ -934,7 +934,7 @@ var/list/preferences_datums = list()
if("bag")
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
if(new_backbag)
- backbag = backbaglist.Find(new_backbag)
+ backbag = new_backbag
if("clown_name")
var/new_clown_name = reject_bad_name( input(user, "Choose your character's clown name:", "Character Preference") as text|null )
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index cc0bad052bf..b4dd406850a 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -2,7 +2,7 @@
#define SAVEFILE_VERSION_MIN 8
//This is the current version, anything below this will attempt to update (if it's not obsolete)
-#define SAVEFILE_VERSION_MAX 12
+#define SAVEFILE_VERSION_MAX 13
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
This proc checks if the current directory of the savefile S needs updating
@@ -375,7 +375,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
eye_color = sanitize_hexcolor(eye_color, 3, 0)
skin_tone = sanitize_inlist(skin_tone, skin_tones)
- backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
+ backbag = sanitize_inlist(backbag, backbaglist)
features["mcolor"] = sanitize_hexcolor(features["mcolor"], 3, 0)
features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], tails_list_lizard)
features["tail_human"] = sanitize_inlist(features["tail_human"], tails_list_human, "None")
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index 1a559fd9fcd..7f7d5312e29 100644
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -39,6 +39,7 @@ Captain
backpack = /obj/item/weapon/storage/backpack/captain
satchel = /obj/item/weapon/storage/backpack/satchel_cap
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/captain
/datum/outfit/job/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm
index f22bd2daed4..304dfe42bc6 100644
--- a/code/modules/jobs/job_types/cargo_service.dm
+++ b/code/modules/jobs/job_types/cargo_service.dm
@@ -86,6 +86,7 @@ Shaft Miner
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
/*
@@ -186,6 +187,9 @@ Botanist
gloves =/obj/item/clothing/gloves/botanic_leather
suit_store = /obj/item/device/analyzer/plant_analyzer
+ backpack = /obj/item/weapon/storage/backpack/botany
+ satchel = /obj/item/weapon/storage/backpack/satchel_hyd
+
/*
Janitor
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index 0289a76ace8..4acd3ecb4d8 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -30,6 +30,7 @@ Clown
backpack = /obj/item/weapon/storage/backpack/clown
satchel = /obj/item/weapon/storage/backpack/clown
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/clown //strangely has a duffle
/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -84,6 +85,7 @@ Mime
backpack = /obj/item/weapon/storage/backpack/mime
satchel = /obj/item/weapon/storage/backpack/mime
+
/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm
index f614fec9b14..ac3f3ecfe10 100644
--- a/code/modules/jobs/job_types/civilian_chaplain.dm
+++ b/code/modules/jobs/job_types/civilian_chaplain.dm
@@ -24,6 +24,8 @@ Chaplain
belt = /obj/item/device/pda/chaplain
uniform = /obj/item/clothing/under/rank/chaplain
backpack_contents = list(/obj/item/device/camera/spooky = 1)
+ backpack = /obj/item/weapon/storage/backpack/cultpack
+ satchel = /obj/item/weapon/storage/backpack/cultpack
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm
index 069654285f4..2ac0a986a14 100644
--- a/code/modules/jobs/job_types/engineering.dm
+++ b/code/modules/jobs/job_types/engineering.dm
@@ -40,6 +40,7 @@ Chief Engineer
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
@@ -85,6 +86,7 @@ Station Engineer
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel_eng
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
@@ -117,5 +119,8 @@ Atmospheric Technician
uniform = /obj/item/clothing/under/rank/atmospheric_technician
r_pocket = /obj/item/device/analyzer
+ backpack = /obj/item/weapon/storage/backpack/industrial
+ satchel = /obj/item/weapon/storage/backpack/satchel_eng
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
\ No newline at end of file
diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm
index 8cc678b35a8..bef2b0d0daa 100644
--- a/code/modules/jobs/job_types/job.dm
+++ b/code/modules/jobs/job_types/job.dm
@@ -142,15 +142,28 @@
var/backpack = /obj/item/weapon/storage/backpack
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
+ var/dufflebag = /obj/item/weapon/storage/backpack/dufflebag
var/box = /obj/item/weapon/storage/box/survival
var/pda_slot = slot_belt
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- if(H.backbag == 1) //Backpack
- back = backpack
- else //Satchel
- back = satchel
+ switch(H.backbag)
+ //Grey backpacks are handled later.
+ if(GSATCHEL)
+ back = /obj/item/weapon/storage/backpack/satchel_norm //Grey satchel
+ if(GDUFFLEBAG)
+ back = /obj/item/weapon/storage/backpack/dufflebag //Grey Dufflebag
+ if(LSATCHEL)
+ back = /obj/item/weapon/storage/backpack/satchel //Leather Satchel
+ if(DBACKPACK)
+ back = backpack //Department backpack
+ if(DSATCHEL)
+ back = satchel //Department satchel
+ if(DDUFFLEBAG)
+ back = dufflebag //Department dufflebag
+ else
+ back = /obj/item/weapon/storage/backpack //Grey backpack
backpack_contents[box] = 1
diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm
index 19e778ebd5b..b90ea4e5b98 100644
--- a/code/modules/jobs/job_types/medical.dm
+++ b/code/modules/jobs/job_types/medical.dm
@@ -38,6 +38,7 @@ Chief Medical Officer
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/datum/outfit/job/cmo/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -79,6 +80,7 @@ Medical Doctor
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel_med
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
/*
Chemist
@@ -109,6 +111,10 @@ Chemist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/chemist
+ backpack = /obj/item/weapon/storage/backpack/chemistry
+ satchel = /obj/item/weapon/storage/backpack/satchel_chem
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+
/*
Geneticist
*/
@@ -138,6 +144,10 @@ Geneticist
suit = /obj/item/clothing/suit/toggle/labcoat/genetics
suit_store = /obj/item/device/flashlight/pen
+ backpack = /obj/item/weapon/storage/backpack/genetics
+ satchel = /obj/item/weapon/storage/backpack/satchel_gen
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+
/*
Virologist
*/
@@ -168,5 +178,6 @@ Virologist
suit = /obj/item/clothing/suit/toggle/labcoat/virologist
suit_store = /obj/item/device/flashlight/pen
- backpack = /obj/item/weapon/storage/backpack/medic
- satchel = /obj/item/weapon/storage/backpack/satchel_med
\ No newline at end of file
+ backpack = /obj/item/weapon/storage/backpack/virology
+ satchel = /obj/item/weapon/storage/backpack/satchel_vir
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
\ No newline at end of file
diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm
index 4773a01664b..9e63d2993f9 100644
--- a/code/modules/jobs/job_types/science.dm
+++ b/code/modules/jobs/job_types/science.dm
@@ -40,6 +40,9 @@ Research Director
l_pocket = /obj/item/device/laser_pointer
backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
+ backpack = /obj/item/weapon/storage/backpack/science
+ satchel = /obj/item/weapon/storage/backpack/satchel_tox
+
/datum/outfit/job/rd/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -76,6 +79,9 @@ Scientist
shoes = /obj/item/clothing/shoes/sneakers/white
suit = /obj/item/clothing/suit/toggle/labcoat/science
+ backpack = /obj/item/weapon/storage/backpack/science
+ satchel = /obj/item/weapon/storage/backpack/satchel_tox
+
/*
Roboticist
*/
@@ -104,4 +110,7 @@ Roboticist
uniform = /obj/item/clothing/under/rank/roboticist
suit = /obj/item/clothing/suit/toggle/labcoat
+ backpack = /obj/item/weapon/storage/backpack/science
+ satchel = /obj/item/weapon/storage/backpack/satchel_tox
+
pda_slot = slot_l_store
diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm
index ed23478ceb9..7f47d287f3c 100644
--- a/code/modules/jobs/job_types/security.dm
+++ b/code/modules/jobs/job_types/security.dm
@@ -49,6 +49,7 @@ Head of Security
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
/datum/outfit/job/hos/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -104,6 +105,7 @@ Warden
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
/datum/outfit/job/warden/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -210,6 +212,7 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel_sec
+ dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec
box = /obj/item/weapon/storage/box/security
var/department = null