diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index ba81080cc80e..081fcec5a137 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -919,8 +919,9 @@ world
// From /datum/preferences/proc/copy_appearance_to
body.age = original.age
body.gender = original.gender
- body.ethnicity = original.ethnicity
+ body.skin_color = original.skin_color
body.body_type = original.body_type
+ body.body_size = original.body_size
body.r_eyes = original.r_eyes
body.g_eyes = original.g_eyes
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 663d72fd5079..b5bf7a02d026 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -1,11 +1,14 @@
#define isdeaf(A) (ismob(A) && ((A?:sdisabilities & DISABILITY_DEAF) || A?:ear_deaf))
#define xeno_hivenumber(A) (isxeno(A) ? A?:hivenumber : FALSE)
-/proc/random_ethnicity()
- return pick(GLOB.ethnicities_list)
+/proc/random_skin_color()
+ return pick(GLOB.skin_color_list)
/proc/random_body_type()
- return pick(GLOB.body_types_list)
+ return pick(GLOB.body_type_list)
+
+/proc/random_body_size()
+ return pick(GLOB.body_size_list)
/proc/random_hair_style(gender, species = "Human")
var/h_style = "Crewcut"
diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm
index 35df8644ad61..eddb326568c0 100644
--- a/code/__HELPERS/sanitize_values.dm
+++ b/code/__HELPERS/sanitize_values.dm
@@ -45,18 +45,24 @@
else return default
return default
-/proc/sanitize_ethnicity(ethnicity, default = "Western")
- if (ethnicity in GLOB.ethnicities_list)
- return ethnicity
+/proc/sanitize_skin_color(skin_color, default = "Pale 2")
+ if(skin_color in GLOB.skin_color_list)
+ return skin_color
return default
-/proc/sanitize_body_type(body_type, default = "Mesomorphic (Average)")
- if (body_type in GLOB.body_types_list)
+/proc/sanitize_body_type(body_type, default = "Lean")
+ if(body_type in GLOB.body_type_list)
return body_type
return default
+/proc/sanitize_body_size(body_size, default = "Average")
+ if(body_size in GLOB.body_size_list)
+ return body_size
+
+ return default
+
/proc/sanitize_hexcolor(color, default="#000000")
if(!istext(color)) return default
var/len = length(color)
diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm
index c0fd361c6203..2bd24af5a0ff 100644
--- a/code/_globalvars/global_lists.dm
+++ b/code/_globalvars/global_lists.dm
@@ -198,10 +198,11 @@ GLOBAL_LIST_INIT(custom_event_info_list, setup_custom_event_info())
GLOBAL_LIST_INIT(poster_designs, subtypesof(/datum/poster))
//Preferences stuff
- // Ethnicities
-GLOBAL_REFERENCE_LIST_INDEXED(ethnicities_list, /datum/ethnicity, name) // Stores /datum/ethnicity indexed by name
- // Body Types
-GLOBAL_REFERENCE_LIST_INDEXED(body_types_list, /datum/body_type, name) // Stores /datum/body_type indexed by name
+ // Skin colors
+GLOBAL_REFERENCE_LIST_INDEXED(skin_color_list, /datum/skin_color, name) // Stores /datum/skin_color indexed by name
+ // Body
+GLOBAL_REFERENCE_LIST_INDEXED(body_type_list, /datum/body_type, name) // Stores /datum/body_type indexed by name
+GLOBAL_REFERENCE_LIST_INDEXED(body_size_list, /datum/body_size, name) // Stores /datum/body_size indexed by name
//Hairstyles
GLOBAL_REFERENCE_LIST_INDEXED(hair_styles_list, /datum/sprite_accessory/hair, name) //stores /datum/sprite_accessory/hair indexed by name
GLOBAL_REFERENCE_LIST_INDEXED(facial_hair_styles_list, /datum/sprite_accessory/facial_hair, name) //stores /datum/sprite_accessory/facial_hair indexed by name
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index dfc4149660ca..4cc173dc4dd1 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -256,31 +256,38 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new)
var/icon/icobase = H.species.icobase
var/icon/temp
- var/datum/ethnicity/ET = GLOB.ethnicities_list[H.ethnicity]
- var/datum/body_type/B = GLOB.body_types_list[H.body_type]
+ var/datum/skin_color/set_skin_color = GLOB.skin_color_list[H.skin_color]
+ var/datum/body_type/set_body_type = GLOB.body_type_list[H.body_type]
+ var/datum/body_size/set_body_size = GLOB.body_size_list[H.body_size]
- var/e_icon
- var/b_icon
+ var/skin_color_icon
+ var/body_type_icon
+ var/body_size_icon
- if (!ET)
- e_icon = "western"
+ if(!set_skin_color)
+ skin_color_icon = "pale2"
else
- e_icon = ET.icon_name
+ skin_color_icon = set_skin_color.icon_name
- if (!B)
- b_icon = "mesomorphic"
+ if(!set_body_type)
+ body_type_icon = "lean"
else
- b_icon = B.icon_name
+ body_type_icon = set_body_type.icon_name
- preview_icon = new /icon(icobase, get_limb_icon_name(H.species, b_icon, H.gender, "torso", e_icon))
- temp = new /icon(icobase, get_limb_icon_name(H.species, b_icon, H.gender, "groin", e_icon))
+ if(!set_body_size)
+ body_size_icon = "avg"
+ else
+ body_size_icon = set_body_size.icon_name
+
+ preview_icon = new /icon(icobase, get_limb_icon_name(H.species, body_size_icon, body_type_icon, H.gender, "torso", skin_color_icon))
+ temp = new /icon(icobase, get_limb_icon_name(H.species, body_size_icon, body_type_icon, H.gender, "groin", skin_color_icon))
preview_icon.Blend(temp, ICON_OVERLAY)
- temp = new /icon(icobase, get_limb_icon_name(H.species, b_icon, H.gender, "head", e_icon))
+ temp = new /icon(icobase, get_limb_icon_name(H.species, body_size_icon, body_type_icon, H.gender, "head", skin_color_icon))
preview_icon.Blend(temp, ICON_OVERLAY)
for(var/obj/limb/E in H.limbs)
if(E.status & LIMB_DESTROYED) continue
- temp = new /icon(icobase, get_limb_icon_name(H.species, b_icon, H.gender, E.name, e_icon))
+ temp = new /icon(icobase, get_limb_icon_name(H.species, body_size_icon, body_type_icon, H.gender, E.name, skin_color_icon))
if(E.status & LIMB_ROBOT)
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
preview_icon.Blend(temp, ICON_OVERLAY)
diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm
index 14ad047c7edb..aeede447e0f9 100644
--- a/code/datums/supply_packs/black_market.dm
+++ b/code/datums/supply_packs/black_market.dm
@@ -722,6 +722,143 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted
contains = list(/obj/item/storage/box/guncase/m1911/socom)
containertype = /obj/structure/largecrate/black_market
+/* --- AMMO --- */
+
+/datum/supply_packs/contraband/ammo
+ group = "Contraband Ammo"
+
+/datum/supply_packs/contraband/ammo/r4t
+ name = "45-70 bullet box crate (x300 rounds)"
+ dollar_cost = 135
+ contains = list(/obj/item/ammo_box/magazine/lever_action)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/r4t/training
+ name = "45-70 bullet box crate (x300 training rounds)"
+ dollar_cost = 35
+ contains = list(/obj/item/ammo_box/magazine/lever_action/training)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/m16
+ name = "Magazine box (M16, 12x regular mags)"
+ dollar_cost = 100
+ contains = list(/obj/item/ammo_box/magazine/M16)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/ar10
+ name = "Magazine box (AR10, 12x regular mags)"
+ dollar_cost = 115
+ contains = list(/obj/item/ammo_box/magazine/ar10)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/deagle
+ name = "Magazine box (Desert Eagle, 16x regular mags)"
+ dollar_cost = 180
+ contains = list(/obj/item/ammo_box/magazine/deagle)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/deagle/hiap
+ name = "Magazine box (Desert Eagle, 16x HIAP mags)"
+ dollar_cost = 260
+ contains = list(/obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/type73
+ name = "Magazine box (Type 73, 16x regular mags)"
+ dollar_cost = 60
+ contains = list(/obj/item/ammo_box/magazine/type73)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/nsg
+ name = "Magazine box (NSG-23, 16x regular mags)"
+ dollar_cost = 140
+ contains = list(/obj/item/ammo_box/magazine/nsg23)
+ containertype = /obj/structure/largecrate/black_market
+/datum/supply_packs/contraband/ammo/mar30
+ name = "Magazines box (MAR30, 10x regular mags)"
+ dollar_cost = 60
+ contains = list(/obj/item/ammo_box/magazine/mar30)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/fp9000
+ name = "Magazines box (FN FP9000, 10x mags)"
+ dollar_cost = 35
+ contains = list(/obj/item/ammo_box/magazine/fp9000)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/mp27
+ name = "Magazines box (MP-27, 12x mags)"
+ dollar_cost = 45
+ contains = list(/obj/item/ammo_box/magazine/mp27)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/uzi
+ name = "Magazines box (UZI, 12x mags)"
+ dollar_cost = 25
+ contains = list(/obj/item/ammo_box/magazine/uzi)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/mac15
+ name = "Magazines box (MAC-15, 12x mags)"
+ dollar_cost = 15
+ contains = list(/obj/item/ammo_box/magazine/mac15)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/pps43
+ name = "Magazines box (Type-19, 10x regular mags)"
+ dollar_cost = 40
+ contains = list(/obj/item/ammo_box/magazine/type19)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/b92fs
+ name = "Magazines box (Beretta 92FS, 16x mags)"
+ dollar_cost = 30
+ contains = list(/obj/item/ammo_box/magazine/b92fs)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/kt42
+ name = "Magazines box (KT-42, 16x mags)"
+ dollar_cost = 45
+ contains = list(/obj/item/ammo_box/magazine/kt42)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/bizon
+ name = "Magazines box (Type 64, 10x mags)"
+ dollar_cost = 40
+ contains = list(/obj/item/ammo_box/magazine/type64)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/m1911
+ name = "Magazines box (M1911, 16x mags)"
+ dollar_cost = 40
+ contains = list(/obj/item/ammo_box/magazine/m1911)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/mk45
+ name = "Magazines box (MK-45 Automagnum, 16x mags)"
+ dollar_cost = 80
+ contains = list(/obj/item/ammo_box/magazine/mk45)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/cmb
+ name = "Speed loaders box (CMB Spearhead, 16x HP loaders)"
+ dollar_cost = 70
+ contains = list(/obj/item/ammo_box/magazine/spearhead)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/smw
+ name = "Speed loaders box (Smith and Wesson revolver, 12x loaders)"
+ dollar_cost = 30
+ contains = list(/obj/item/ammo_box/magazine/snw)
+ containertype = /obj/structure/largecrate/black_market
+
+/datum/supply_packs/contraband/ammo/zhnk
+ name = "Speed loaders box (ZHNK-72, 12x loaders)"
+ dollar_cost = 30
+ contains = list(/obj/item/ammo_box/magazine/zhnk)
+ containertype = /obj/structure/largecrate/black_market
+
+
/* --- DEEP STORAGE --- */
/*
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
index 276f0b760842..b703654cd51a 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
@@ -187,6 +187,7 @@
list("M10 Helmet Netting", floor(scale * 10), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR),
list("M10 Helmet Rain Cover", floor(scale * 10), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR),
list("Firearm Lubricant", floor(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR),
+ list("Attachable Dogtags", floor(scale * 15), /obj/item/clothing/accessory/dogtags, VENDOR_ITEM_REGULAR),
list("USCM Flair", floor(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR),
list("Falling Falcons Shoulder Patch", floor(scale * 15), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR),
list("USCM Shoulder Patch", floor(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR),
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index d984f01ae1be..f579917fed49 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -328,6 +328,34 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \
null, \
new/datum/stack_recipe("empty magazine box (MP5)", /obj/item/ammo_box/magazine/mp5/empty), \
null, \
+ new/datum/stack_recipe("empty magazine box (MAR30)", /obj/item/ammo_box/magazine/mar30/empty), \
+ new/datum/stack_recipe("empty magazine box (MAR30 EX)", /obj/item/ammo_box/magazine/mar30/ext/empty), \
+ new/datum/stack_recipe("empty magazine box (MAR50)", /obj/item/ammo_box/magazine/mar50/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (UZI)", /obj/item/ammo_box/magazine/uzi/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (MAC-15)", /obj/item/ammo_box/magazine/mac15/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (MP27)", /obj/item/ammo_box/magazine/mp27/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (M1911)", /obj/item/ammo_box/magazine/m1911/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (MK-45)", /obj/item/ammo_box/magazine/mk45/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (KT-42)", /obj/item/ammo_box/magazine/kt42/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (Beretta 92FS)", /obj/item/ammo_box/magazine/b92fs/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (FN FP9000)", /obj/item/ammo_box/magazine/fp9000/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (Type19)", /obj/item/ammo_box/magazine/type19/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (ZhNK-72)", /obj/item/ammo_box/magazine/zhnk/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (Type64 Bizon)", /obj/item/ammo_box/magazine/type64/empty), \
+ null, \
+ new/datum/stack_recipe("empty magazine box (S&W .38)", /obj/item/ammo_box/magazine/snw/empty), \
+ null, \
new/datum/stack_recipe("empty magazine box (NSG 23)", /obj/item/ammo_box/magazine/nsg23/empty), \
new/datum/stack_recipe("empty magazine box (NSG 23 AP)", /obj/item/ammo_box/magazine/nsg23/ap/empty), \
new/datum/stack_recipe("empty magazine box (NSG 23 EX)", /obj/item/ammo_box/magazine/nsg23/ex/empty), \
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index f5ae552ea1df..3e61939cb1ca 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -437,6 +437,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new())
"Seized Items",
"Shipside Contraband",
"Surplus Equipment",
+ "Contraband Ammo",
"Deep Storage",
"Miscellaneous"
)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 702890e36189..be184c0fa117 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -154,8 +154,10 @@ GLOBAL_LIST_INIT(bgstate_options, list(
var/g_eyes = 0 //Eye color
var/b_eyes = 0 //Eye color
var/species = "Human" //Species datum to use.
- var/ethnicity = "Western" // Ethnicity
- var/body_type = "Mesomorphic (Average)" // Body Type
+ var/ethnicity = "Western" //Legacy, kept to update save files
+ var/skin_color = "Pale 2" // Skin color
+ var/body_size = "Average" // Body Size
+ var/body_type = "Lean" // Body Type
var/language = "None" //Secondary language
var/list/gear //Custom/fluff item loadout.
var/preferred_squad = "None"
@@ -337,8 +339,9 @@ GLOBAL_LIST_INIT(bgstate_options, list(
dat += "®"
dat += "Age: [age]
"
dat += "Gender: [gender == MALE ? "Male" : "Female"]
"
- dat += "Ethnicity: [ethnicity]
"
- dat += "Body Type: [body_type]
"
+ dat += "Skin Color: [skin_color]
"
+ dat += "Body Size: [body_size]
"
+ dat += "Body Muscularity: [body_type]
"
dat += "Traits: Character Traits"
dat += "
"
@@ -1178,10 +1181,12 @@ GLOBAL_LIST_INIT(bgstate_options, list(
real_name = character_origin.generate_human_name(gender)
if ("age")
age = rand(AGE_MIN, AGE_MAX)
- if ("ethnicity")
- ethnicity = random_ethnicity()
+ if ("skin_color")
+ skin_color = random_skin_color()
if ("body_type")
body_type = random_body_type()
+ if ("body_size")
+ body_size = random_body_size()
if ("hair")
r_hair = rand(0,255)
g_hair = rand(0,255)
@@ -1552,14 +1557,20 @@ GLOBAL_LIST_INIT(bgstate_options, list(
if(new_h_gradient_style)
grad_style = new_h_gradient_style
- if ("ethnicity")
- var/new_ethnicity = tgui_input_list(user, "Choose your character's ethnicity:", "Character Preferences", GLOB.ethnicities_list)
+ if ("skin_color")
+ var/new_skin_color = tgui_input_list(user, "Choose your character's skin color:", "Character Preferences", GLOB.skin_color_list)
- if (new_ethnicity)
- ethnicity = new_ethnicity
+ if (new_skin_color)
+ skin_color = new_skin_color
+
+ if ("body_size")
+ var/new_body_size = tgui_input_list(user, "Choose your character's body size:", "Character Preferences", GLOB.body_size_list)
+
+ if (new_body_size)
+ body_size = new_body_size
if ("body_type")
- var/new_body_type = tgui_input_list(user, "Choose your character's body type:", "Character Preferences", GLOB.body_types_list)
+ var/new_body_type = tgui_input_list(user, "Choose your character's body type:", "Character Preferences", GLOB.body_type_list)
if (new_body_type)
body_type = new_body_type
@@ -2062,8 +2073,9 @@ GLOBAL_LIST_INIT(bgstate_options, list(
character.age = age
character.gender = gender
- character.ethnicity = ethnicity
+ character.skin_color = skin_color
character.body_type = body_type
+ character.body_size = body_size
character.r_eyes = r_eyes
character.g_eyes = g_eyes
@@ -2135,15 +2147,16 @@ GLOBAL_LIST_INIT(bgstate_options, list(
message_admins("[character] ([character.ckey]) has spawned with their gender as plural or neuter. Please notify coders.")
character.gender = MALE
-// Transfers the character's physical characteristics (age, gender, ethnicity, etc) to the mob
+// Transfers the character's physical characteristics (age, gender, skin_color, etc) to the mob
/datum/preferences/proc/copy_appearance_to(mob/living/carbon/human/character, safety = 0)
if(!istype(character))
return
character.age = age
character.gender = gender
- character.ethnicity = ethnicity
+ character.skin_color = skin_color
character.body_type = body_type
+ character.body_size = body_size
character.r_eyes = r_eyes
character.g_eyes = g_eyes
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index c822bedd0f7b..13a31b59fa97 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -952,6 +952,13 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name)
cost = 1 //The cadmium poisoning pays for the discounted cost longterm
allowed_origins = USCM_ORIGINS
+/datum/gear/misc/dogtags
+ display_name = "Attachable Dogtags"
+ path = /obj/item/clothing/accessory/dogtags
+ cost = 1
+ slot = WEAR_IN_ACCESSORY
+ allowed_origins = USCM_ORIGINS
+
/datum/gear/misc/patch_uscm
display_name = "USCM shoulder patch"
path = /obj/item/clothing/accessory/patch
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index ec3f156c220f..db52f58acc68 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -1,5 +1,5 @@
#define SAVEFILE_VERSION_MIN 8
-#define SAVEFILE_VERSION_MAX 22
+#define SAVEFILE_VERSION_MAX 23
//handles converting savefiles to new formats
//MAKE SURE YOU KEEP THIS UP TO DATE!
@@ -95,6 +95,53 @@
sound_toggles |= SOUND_OBSERVER_ANNOUNCEMENTS
S["toggles_sound"] << sound_toggles
+ if(savefile_version < 23)
+ var/ethnicity
+ var/skin_color = "pale2"
+ S["ethnicity"] >> ethnicity
+ switch(ethnicity)
+ if("anglo")
+ skin_color = "pale2"
+ if("western")
+ skin_color = "tan2"
+ if("germanic")
+ skin_color = "pale2"
+ if("scandinavian")
+ skin_color = "pale3"
+ if("baltic")
+ skin_color = "pale3"
+ if("sinoorient")
+ skin_color = "pale1"
+ if("southorient")
+ skin_color = "tan1"
+ if("indian")
+ skin_color = "tan3"
+ if("sino")
+ skin_color = "tan1"
+ if("mesoamerican")
+ skin_color = "tan3"
+ if("northamerican")
+ skin_color = "tan3"
+ if("southamerican")
+ skin_color = "tan2"
+ if("circumpolar")
+ skin_color = "tan1"
+ if("northafrican")
+ skin_color = "tan3"
+ if("centralafrican")
+ skin_color = "dark1"
+ if("costalafrican")
+ skin_color = "dark3"
+ if("persian")
+ skin_color = "tan3"
+ if("levant")
+ skin_color = "tan3"
+ if("australasian")
+ skin_color = "dark2"
+ if("polynesian")
+ skin_color = "tan3"
+ S["skin_color"] << skin_color
+
savefile_version = SAVEFILE_VERSION_MAX
return 1
@@ -429,7 +476,9 @@
S["gender"] >> gender
S["age"] >> age
S["ethnicity"] >> ethnicity
+ S["skin_color"] >> skin_color
S["body_type"] >> body_type
+ S["body_size"] >> body_size
S["language"] >> language
S["spawnpoint"] >> spawnpoint
@@ -508,8 +557,9 @@
be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body))
gender = sanitize_gender(gender)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
- ethnicity = sanitize_ethnicity(ethnicity)
+ skin_color = sanitize_skin_color(skin_color)
body_type = sanitize_body_type(body_type)
+ body_size = sanitize_body_size(body_size)
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
b_hair = sanitize_integer(b_hair, 0, 255, initial(b_hair))
@@ -580,7 +630,9 @@
S["gender"] << gender
S["age"] << age
S["ethnicity"] << ethnicity
+ S["skin_color"] << skin_color
S["body_type"] << body_type
+ S["body_size"] << body_size
S["language"] << language
S["hair_red"] << r_hair
S["hair_green"] << g_hair
diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm
index d95c0a593d34..d78c0faeeca8 100644
--- a/code/modules/clothing/under/ties.dm
+++ b/code/modules/clothing/under/ties.dm
@@ -400,6 +400,14 @@
desc = "A fire-resistant shoulder patch, worn by the men and women of the UPP Naval Infantry."
icon_state = "navalpatch"
+//misc
+
+/obj/item/clothing/accessory/dogtags
+ name = "Attachable Dogtags"
+ desc = "A robust pair of dogtags to be worn around the neck of the United States Colonial Marines, however due to a combination of budget reallocation, Marines losing their dogtags, and multiple incidents of marines swallowing their tags, they now attach to the uniform or armor."
+ icon_state = "dogtag"
+ slot = ACCESSORY_SLOT_MEDAL
+
/obj/item/clothing/accessory/poncho
name = "USCM Poncho"
desc = "The standard USCM poncho has variations for every climate. Custom fitted to be attached to standard USCM armor variants it is comfortable, warming or cooling as needed, and well-fit. A marine couldn't ask for more. Affectionately referred to as a \"woobie\"."
diff --git a/code/modules/gear_presets/fun.dm b/code/modules/gear_presets/fun.dm
index 9811699d5974..f24f7f9a2029 100644
--- a/code/modules/gear_presets/fun.dm
+++ b/code/modules/gear_presets/fun.dm
@@ -300,7 +300,7 @@
new_human.change_real_name(new_human, "Ivan")
new_human.f_style = "Shaved"
new_human.h_style = "Shaved Head"
- new_human.ethnicity = "Scandinavian"
+ new_human.skin_color = "pale3"
new_human.r_hair = 165
new_human.g_hair = 42
new_human.b_hair = 42
@@ -363,7 +363,7 @@
new_human.b_facial = 51
new_human.h_style = "Mullet"
new_human.f_style = "Full English"
- new_human.ethnicity = "Anglo"
+ new_human.skin_color = "pale2"
new_human.r_eyes = 102 //Brown eyes.
new_human.g_eyes = 51
new_human.b_eyes = 0
diff --git a/code/modules/gear_presets/yautja.dm b/code/modules/gear_presets/yautja.dm
index 27eac7215ff3..8ffd8664a977 100644
--- a/code/modules/gear_presets/yautja.dm
+++ b/code/modules/gear_presets/yautja.dm
@@ -12,13 +12,13 @@
/datum/equipment_preset/yautja/load_race(mob/living/carbon/human/new_human, client/mob_client)
new_human.set_species(SPECIES_YAUTJA)
- new_human.ethnicity = "tan"
+ new_human.skin_color = "tan"
new_human.body_type = "pred" //can be removed in future for body types
if(!mob_client)
mob_client = new_human.client
if(mob_client?.prefs)
new_human.h_style = mob_client.prefs.predator_h_style
- new_human.ethnicity = mob_client.prefs.predator_skin_color
+ new_human.skin_color = mob_client.prefs.predator_skin_color
/datum/equipment_preset/yautja/load_id(mob/living/carbon/human/new_human)
new_human.job = rank
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 728094548067..0ade3e95b426 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -25,8 +25,9 @@
var/g_eyes = 0
var/b_eyes = 0
- var/ethnicity = "Western" // Ethnicity
- var/body_type = "Mesomorphic (Average)" // Body Type
+ var/skin_color = "Pale 2" // Skin color
+ var/body_size = "Average" // Body Size
+ var/body_type = "Lean" // Body Buffness
//Skin color
var/r_skin = 0
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index d6d438441d20..00a388d7fcba 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -9,71 +9,65 @@
g = "f"
return g
-/proc/get_limb_icon_name(datum/species/S, body_type, gender, limb_name, ethnicity)
- if(S.uses_ethnicity)
- switch(limb_name)
- if ("torso")
- return "[ethnicity]_torso_[body_type]_[get_gender_name(gender)]"
-
- if ("chest")
- return "[ethnicity]_torso_[body_type]_[get_gender_name(gender)]"
-
- if ("head")
- return "[ethnicity]_[limb_name]_[get_gender_name(gender)]"
-
- if ("groin")
- return "[ethnicity]_[limb_name]_[get_gender_name(gender)]"
+/proc/get_limb_icon_name(datum/species/S, body_size, body_type, gender, limb_name, skin_color)
+ if(S.uses_skin_color)
+ if(S.special_body_types)
+ switch(limb_name)
+ if("torso")
+ return "[skin_color]_torso_[body_size]_[body_type]"
+ if("chest")
+ return "[skin_color]_torso_[body_size]_[body_type]"
+ if("head")
+ return "[skin_color]_[limb_name]"
+ if("groin")
+ return "[skin_color]_[limb_name]_[body_size]"
+
+ if(!S.special_body_types)
+ switch(limb_name)
+ if("torso")
+ return "[skin_color]_torso_[body_type]_[get_gender_name(gender)]"
+ if("chest")
+ return "[skin_color]_torso_[body_type]_[get_gender_name(gender)]"
+ if("head")
+ return "[skin_color]_[limb_name]_[get_gender_name(gender)]"
+ if("groin")
+ return "[skin_color]_[limb_name]__[body_type]_[get_gender_name(gender)]"
+ switch(limb_name)
if("synthetic head")
return "head_[get_gender_name(gender)]"
-
- if ("r_arm")
- return "[ethnicity]_right_arm"
-
- if ("right arm")
- return "[ethnicity]_right_arm"
-
- if ("l_arm")
- return "[ethnicity]_left_arm"
-
- if ("left arm")
- return "[ethnicity]_left_arm"
-
- if ("r_leg")
- return "[ethnicity]_right_leg"
-
- if ("right leg")
- return "[ethnicity]_right_leg"
-
- if ("l_leg")
- return "[ethnicity]_left_leg"
-
- if ("left leg")
- return "[ethnicity]_left_leg"
-
- if ("r_hand")
- return "[ethnicity]_right_hand"
-
- if ("right hand")
- return "[ethnicity]_right_hand"
-
- if ("l_hand")
- return "[ethnicity]_left_hand"
-
- if ("left hand")
- return "[ethnicity]_left_hand"
-
- if ("r_foot")
- return "[ethnicity]_right_foot"
-
- if ("right foot")
- return "[ethnicity]_right_foot"
-
- if ("l_foot")
- return "[ethnicity]_left_foot"
-
- if ("left foot")
- return "[ethnicity]_left_foot"
+ if("r_arm")
+ return "[skin_color]_right_arm"
+ if("right arm")
+ return "[skin_color]_right_arm"
+ if("l_arm")
+ return "[skin_color]_left_arm"
+ if("left arm")
+ return "[skin_color]_left_arm"
+ if("r_leg")
+ return "[skin_color]_right_leg"
+ if("right leg")
+ return "[skin_color]_right_leg"
+ if("l_leg")
+ return "[skin_color]_left_leg"
+ if("left leg")
+ return "[skin_color]_left_leg"
+ if("r_hand")
+ return "[skin_color]_right_hand"
+ if("right hand")
+ return "[skin_color]_right_hand"
+ if("l_hand")
+ return "[skin_color]_left_hand"
+ if("left hand")
+ return "[skin_color]_left_hand"
+ if("r_foot")
+ return "[skin_color]_right_foot"
+ if("right foot")
+ return "[skin_color]_right_foot"
+ if("l_foot")
+ return "[skin_color]_left_foot"
+ if("left foot")
+ return "[skin_color]_left_foot"
else
message_admins("DEBUG: Something called get_limb_icon_name() incorrectly, they use the name [limb_name]")
@@ -147,28 +141,37 @@
return null
/mob/living/carbon/human/proc/set_limb_icons()
- var/datum/ethnicity/E = GLOB.ethnicities_list[ethnicity]
- var/datum/body_type/B = GLOB.body_types_list[body_type]
+ var/datum/skin_color/set_skin_color = GLOB.skin_color_list[skin_color]
+ var/datum/body_size/set_body_size = GLOB.body_size_list[body_size]
+ var/datum/body_type/set_body_type = GLOB.body_type_list[body_type]
- var/e_icon
- var/b_icon
+ var/skin_color_icon
+ var/body_size_icon
+ var/body_type_icon
- if (!E)
- e_icon = "western"
+ if(!set_skin_color)
+ skin_color_icon = "pale2"
else
- e_icon = E.icon_name
+ skin_color_icon = set_skin_color.icon_name
- if (!B)
- b_icon = "mesomorphic"
+ if(!set_body_size)
+ body_size_icon = "avg"
else
- b_icon = B.icon_name
+ body_size_icon = set_body_size.icon_name
+
+
+ if(!set_body_type)
+ body_type_icon = "lean"
+ else
+ body_type_icon = set_body_type.icon_name
if(isspeciesyautja(src))
- e_icon = src.ethnicity
- b_icon = src.body_type
+ skin_color_icon = skin_color
+ body_size_icon = body_size
+ body_type_icon = body_type
- for(var/obj/limb/L in limbs)
- L.icon_name = get_limb_icon_name(species, b_icon, gender, L.display_name, e_icon)
+ for(var/obj/limb/L as anything in limbs)
+ L.icon_name = get_limb_icon_name(species, body_size_icon, body_type_icon, gender, L.display_name, skin_color_icon)
/mob/living/carbon/human/can_inject(mob/user, error_msg, target_zone)
if(species?.flags & IS_SYNTHETIC)
diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm
index d02a2c3be5bb..320aa9504826 100644
--- a/code/modules/mob/living/carbon/human/species/human.dm
+++ b/code/modules/mob/living/carbon/human/species/human.dm
@@ -88,7 +88,8 @@
unarmed_type = /datum/unarmed_attack/punch
flags = HAS_SKIN_TONE|HAS_LIPS|HAS_UNDERWEAR|HAS_HARDCRIT
mob_flags = KNOWS_TECHNOLOGY
- uses_ethnicity = TRUE
+ uses_skin_color = TRUE
+ special_body_types = TRUE
/datum/species/human/handle_on_fire(humanoidmob)
. = ..()
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 4392c3359596..4e2a58190f98 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -14,7 +14,8 @@
var/icobase_source // if we want to use sourcing system
var/deform_source
var/eyes = "eyes_s" // Icon for eyes.
- var/uses_ethnicity = FALSE //Set to TRUE to load proper ethnicities and what have you
+ var/uses_skin_color = FALSE //Set to TRUE to load proper skin_colors and what have you
+ var/special_body_types = FALSE
var/primitive // Lesser form, if any (ie. monkey for humans)
var/tail // Name of tail image in species effects icon file.
diff --git a/code/modules/mob/living/carbon/human/species/synthetic.dm b/code/modules/mob/living/carbon/human/species/synthetic.dm
index 38b7e935268d..f2d5c50f7391 100644
--- a/code/modules/mob/living/carbon/human/species/synthetic.dm
+++ b/code/modules/mob/living/carbon/human/species/synthetic.dm
@@ -2,7 +2,8 @@
group = SPECIES_SYNTHETIC
name = SYNTH_GEN_THREE
name_plural = "synthetics"
- uses_ethnicity = TRUE //Uses ethnic presets
+ uses_skin_color = TRUE //Uses skin color presets
+ special_body_types = TRUE
unarmed_type = /datum/unarmed_attack/punch/synthetic
pain_type = /datum/pain/synthetic
@@ -61,7 +62,8 @@
/datum/species/synthetic/gen_one
name = SYNTH_GEN_ONE
- uses_ethnicity = FALSE
+ uses_skin_color = FALSE
+ special_body_types = FALSE
mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES)
hair_color = "#000000"
@@ -70,12 +72,14 @@
/datum/species/synthetic/gen_two
name = SYNTH_GEN_TWO
- uses_ethnicity = FALSE //2nd gen uses generic human look
+ uses_skin_color = FALSE //2nd gen uses generic human look
+ special_body_types = FALSE
/datum/species/synthetic/colonial
name = SYNTH_COLONY
name_plural = "Colonial Synthetics"
- uses_ethnicity = TRUE
+ uses_skin_color = TRUE
+ special_body_types = TRUE
burn_mod = 0.8
mob_inherent_traits = list(TRAIT_SUPER_STRONG)
@@ -92,11 +96,13 @@
/datum/species/synthetic/colonial/colonial_gen_two
name = SYNTH_COLONY_GEN_TWO
- uses_ethnicity = FALSE //2nd gen uses generic human look
+ uses_skin_color = FALSE //2nd gen uses generic human look
+ special_body_types = FALSE
/datum/species/synthetic/colonial/colonial_gen_one
name = SYNTH_COLONY_GEN_ONE
- uses_ethnicity = FALSE
+ uses_skin_color = FALSE
+ special_body_types = FALSE
mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES)
//sets colonial_gen_one synth's hair to black
hair_color = "#000000"
@@ -108,7 +114,8 @@
/datum/species/synthetic/colonial/combat
name = SYNTH_COMBAT
name_plural = "Combat Synthetics"
- uses_ethnicity = FALSE
+ uses_skin_color = FALSE
+ special_body_types = FALSE
mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES)
burn_mod = 0.6 //made for combat
@@ -129,7 +136,7 @@
/datum/species/synthetic/infiltrator
name = SYNTH_INFILTRATOR
name_plural = "Infiltrator Synthetics"
- uses_ethnicity = TRUE
+ uses_skin_color = TRUE
mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INFILTRATOR_SYNTH)
bloodsplatter_type = /obj/effect/temp_visual/dir_setting/bloodsplatter/human
diff --git a/code/modules/mob/living/carbon/human/species/working_joe/_species.dm b/code/modules/mob/living/carbon/human/species/working_joe/_species.dm
index 829f1d89e939..c032e25708eb 100644
--- a/code/modules/mob/living/carbon/human/species/working_joe/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/working_joe/_species.dm
@@ -2,7 +2,7 @@
name = SYNTH_WORKING_JOE
name_plural = "Working Joes"
death_message = "violently gargles fluid and seizes up, the glow in their eyes dimming..."
- uses_ethnicity = FALSE
+ uses_skin_color = FALSE
burn_mod = 0.65 // made for hazardous environments, withstanding temperatures up to 1210 degrees
mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES, TRAIT_EMOTE_CD_EXEMPT, TRAIT_CANNOT_EAT, TRAIT_UNSTRIPPABLE)
diff --git a/code/modules/mob/living/carbon/human/species/yautja/_species.dm b/code/modules/mob/living/carbon/human/species/yautja/_species.dm
index f871bfe02407..86653af92b4b 100644
--- a/code/modules/mob/living/carbon/human/species/yautja/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/yautja/_species.dm
@@ -6,7 +6,7 @@
burn_mod = 0.65
reagent_tag = IS_YAUTJA
mob_flags = KNOWS_TECHNOLOGY
- uses_ethnicity = TRUE
+ uses_skin_color = TRUE
flags = IS_WHITELISTED|HAS_SKIN_COLOR|NO_CLONE_LOSS|NO_POISON|NO_NEURO|SPECIAL_BONEBREAK|NO_SHRAPNEL|HAS_HARDCRIT
mob_inherent_traits = list(
TRAIT_YAUTJA_TECH,
diff --git a/code/modules/mob/new_player/body.dm b/code/modules/mob/new_player/body.dm
new file mode 100644
index 000000000000..9f2b3e8182bc
--- /dev/null
+++ b/code/modules/mob/new_player/body.dm
@@ -0,0 +1,31 @@
+/datum/body_type
+ var/name
+ var/icon_name
+
+/datum/body_type/twig
+ name = "No Muscles"
+ icon_name = "twig"
+
+/datum/body_type/lean
+ name = "Lean"
+ icon_name = "lean"
+
+/datum/body_type/ripped
+ name = "Ripped"
+ icon_name = "buff"
+
+/datum/body_size
+ var/name
+ var/icon_name
+
+/datum/body_size/thin
+ name = "Thin"
+ icon_name = "sml"
+
+/datum/body_size/average
+ name = "Average"
+ icon_name = "avg"
+
+/datum/body_size/large
+ name = "Large"
+ icon_name = "lrg"
diff --git a/code/modules/mob/new_player/body_type.dm b/code/modules/mob/new_player/body_type.dm
deleted file mode 100644
index ad35dc2feed3..000000000000
--- a/code/modules/mob/new_player/body_type.dm
+++ /dev/null
@@ -1,15 +0,0 @@
-/datum/body_type
- var/name
- var/icon_name
-
-/datum/body_type/ectomorphic
- name = "Ectomorphic (Underweight)"
- icon_name = "ecto"
-
-/datum/body_type/mesomorphic
- name = "Mesomorphic (Average)"
- icon_name = "meso"
-
-/datum/body_type/endomorphic
- name = "Endomorphic (Overweight)"
- icon_name = "endo"
diff --git a/code/modules/mob/new_player/ethnicity.dm b/code/modules/mob/new_player/ethnicity.dm
deleted file mode 100644
index 433a370f56ff..000000000000
--- a/code/modules/mob/new_player/ethnicity.dm
+++ /dev/null
@@ -1,114 +0,0 @@
-/datum/ethnicity
- var/name
- var/icon_name
- var/ethnic_category
-
-/datum/ethnicity/anglo
- name = "Anglo"
- icon_name = "anglo"
- ethnic_category = "European"
-
-/datum/ethnicity/western
- name = "Western"
- icon_name = "western"
- ethnic_category = "European"
-
-/datum/ethnicity/germanic
- name = "Germanic"
- icon_name = "germanic"
- ethnic_category = "European"
-
-/datum/ethnicity/scandinavian
- name = "Scandinavian"
- icon_name = "scandinavian"
- ethnic_category = "European"
-
-/datum/ethnicity/baltic
- name = "Baltic"
- icon_name = "baltic"
- ethnic_category = "European"
-
-/datum/ethnicity/sinoorient
- name = "Sino-Orient"
- icon_name = "sinoorient"
- ethnic_category = "Oriental"
-
-/datum/ethnicity/eastorient
- name = "East-Orient"
- icon_name = "eastorient"
- ethnic_category = "Oriental"
-
-/datum/ethnicity/southorient
- name = "South-Orient"
- icon_name = "southasian"
- ethnic_category = "Oriental"
-
-/datum/ethnicity/indian
- name = "Indian"
- icon_name = "indian"
- ethnic_category = "Oriental"
-
-/datum/ethnicity/sino
- name = "Eurasian"
- icon_name = "eurasian"
- ethnic_category = "Oriental"
-
-/datum/ethnicity/mesoamerican
- name = "Mesoamerican"
- icon_name = "mesoamerican"
- ethnic_category = "American"
-
-/datum/ethnicity/northamerican
- name = "North American"
- icon_name = "northamerican"
- ethnic_category = "American"
-
-/datum/ethnicity/southamerican
- name = "South American"
- icon_name = "southamerican"
- ethnic_category = "American"
-
-/datum/ethnicity/circumpolar
- name = "Circumpolar"
- icon_name = "circumpolar"
- ethnic_category = "American"
-
-/datum/ethnicity/northafrican
- name = "North African"
- icon_name = "northafrican"
- ethnic_category = "African"
-
-/datum/ethnicity/centralafrican
- name = "Central African"
- icon_name = "centralafrican"
- ethnic_category = "African"
-
-/datum/ethnicity/costalafrican
- name = "Coastal African"
- icon_name = "costalafrican"
- ethnic_category = "African"
-
-/datum/ethnicity/persian
- name = "Persian"
- icon_name = "persian"
- ethnic_category = "Middle Eastern"
-
-/datum/ethnicity/arabian
- name = "Arabian"
- icon_name = "arabian"
- ethnic_category = "Middle Eastern"
-
-/datum/ethnicity/levant
- name = "Levant"
- icon_name = "levant"
- ethnic_category = "Middle Eastern"
-
-/datum/ethnicity/australasian
- name = "Australasian"
- icon_name = "australasian"
- ethnic_category = "Oceania"
-
-/datum/ethnicity/polynesian
- name = "Polynesian"
- icon_name = "polynesian"
- ethnic_category = "Oceania"
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 174c05783550..edabde203ab6 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -6,8 +6,9 @@
else
gender = FEMALE
- ethnicity = random_ethnicity()
+ skin_color = random_skin_color()
body_type = random_body_type()
+ body_size = random_body_size()
h_style = random_hair_style(gender, species)
f_style = random_facial_hair_style(gender, species)
diff --git a/code/modules/mob/new_player/skin_color.dm b/code/modules/mob/new_player/skin_color.dm
new file mode 100644
index 000000000000..f3158613c38c
--- /dev/null
+++ b/code/modules/mob/new_player/skin_color.dm
@@ -0,0 +1,47 @@
+/datum/skin_color
+ var/name
+ var/icon_name
+
+/datum/skin_color/cmplayer
+ name = "Extra Pale"
+ icon_name = "cmp1"
+
+/datum/skin_color/pale1
+ name = "Pale 1"
+ icon_name = "pale1"
+
+/datum/skin_color/pale2
+ name = "Pale 2"
+ icon_name = "pale2"
+
+/datum/skin_color/pale3
+ name = "Pale 3"
+ icon_name = "pale3"
+
+/datum/skin_color/tan1
+ name = "Tan 1"
+ icon_name = "tan1"
+
+/datum/skin_color/tan2
+ name = "Tan 2"
+ icon_name = "tan2"
+
+/datum/skin_color/tan3
+ name = "Tan 3"
+ icon_name = "tan3"
+
+/datum/skin_color/dark1
+ name = "Dark 1"
+ icon_name = "dark1"
+
+/datum/skin_color/dark2
+ name = "Dark 2"
+ icon_name = "dark2"
+
+/datum/skin_color/dark3
+ name = "Dark 3"
+ icon_name = "dark3"
+
+/datum/skin_color/melanated
+ name = "Melanated"
+ icon_name = "mel1"
diff --git a/code/modules/mob/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/new_player/sprite_accessories/undershirt.dm
index 39f0e3ddd173..5919b7563606 100644
--- a/code/modules/mob/new_player/sprite_accessories/undershirt.dm
+++ b/code/modules/mob/new_player/sprite_accessories/undershirt.dm
@@ -112,12 +112,6 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u
gender = FEMALE
camo_conforming = TRUE
-/datum/sprite_accessory/undershirt/halter_top
- name = "Haltertop"
- icon_state = "halter"
- gender = FEMALE
- camo_conforming = TRUE
-
/datum/sprite_accessory/undershirt/strapless_bra
name = "Strapless Bra"
icon_state = "strapless"
diff --git a/code/modules/mob/new_player/sprite_accessories/underwear.dm b/code/modules/mob/new_player/sprite_accessories/underwear.dm
index 200f3f2f67f7..869179619e26 100644
--- a/code/modules/mob/new_player/sprite_accessories/underwear.dm
+++ b/code/modules/mob/new_player/sprite_accessories/underwear.dm
@@ -58,29 +58,33 @@ GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_und
if("s")
name += " (Snow)"
-// Plural
+// Both
/datum/sprite_accessory/underwear/boxers
name = "Boxers"
icon_state = "boxers"
- gender = PLURAL
+ gender = NEUTER
camo_conforming = TRUE
-// Male
/datum/sprite_accessory/underwear/briefs
name = "Briefs"
icon_state = "briefs"
- gender = MALE
+ gender = NEUTER
camo_conforming = TRUE
-// Female
-/datum/sprite_accessory/underwear/panties
- name = "Panties"
- icon_state = "panties"
- gender = FEMALE
+/datum/sprite_accessory/underwear/lowriders
+ name = "Lowriders"
+ icon_state = "lowriders"
+ gender = NEUTER
camo_conforming = TRUE
-/datum/sprite_accessory/underwear/thong
- name = "Thong"
- icon_state = "thong"
- gender = FEMALE
+/datum/sprite_accessory/underwear/satin
+ name = "Satin"
+ icon_state = "satin"
+ gender = NEUTER
+ camo_conforming = TRUE
+
+/datum/sprite_accessory/underwear/tanga
+ name = "Tanga"
+ icon_state = "tanga"
+ gender = NEUTER
camo_conforming = TRUE
diff --git a/code/modules/organs/limb_objects.dm b/code/modules/organs/limb_objects.dm
index 9d49ad7736d2..607eac5feefe 100644
--- a/code/modules/organs/limb_objects.dm
+++ b/code/modules/organs/limb_objects.dm
@@ -22,27 +22,34 @@
icon = base
- var/datum/ethnicity/E = GLOB.ethnicities_list[H.ethnicity]
- var/datum/body_type/B = GLOB.body_types_list[H.body_type]
+ var/datum/skin_color/set_skin_color = GLOB.skin_color_list[H.skin_color]
+ var/datum/body_type/set_body_type = GLOB.body_type_list[H.body_type]
+ var/datum/body_size/set_body_size = GLOB.body_size_list[H.body_size]
- var/e_icon
- var/b_icon
+ var/skin_color_icon
+ var/body_type_icon
+ var/body_size_icon
- if (!E)
- e_icon = "western"
+ if(!set_skin_color)
+ skin_color_icon = "pale2"
else
- e_icon = E.icon_name
+ skin_color_icon = set_skin_color.icon_name
- if (!B)
- b_icon = "mesomorphic"
+ if(!set_body_type)
+ body_type_icon = "lean"
else
- b_icon = B.icon_name
+ body_type_icon = set_body_type.icon_name
+
+ if(!set_body_size)
+ body_size_icon = "avg"
+ else
+ body_size_icon = set_body_size.icon_name
if(isspeciesyautja(H))
- e_icon = H.ethnicity
- b_icon = H.body_type
+ skin_color_icon = H.skin_color
+ body_type_icon = H.body_type
- icon_state = "[get_limb_icon_name(H.species, b_icon, H.gender, name, e_icon)]"
+ icon_state = "[get_limb_icon_name(H.species, body_size_icon, body_type_icon, H.gender, name, skin_color_icon)]"
setDir(SOUTH)
apply_transform(turn(transform, rand(70,130)))
diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm
index ea9a68bb9c41..93cfc2d2d7cd 100644
--- a/code/modules/organs/limbs.dm
+++ b/code/modules/organs/limbs.dm
@@ -71,11 +71,14 @@
var/status = LIMB_ORGANIC
var/processing = FALSE
- /// ethnicity of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
- var/ethnicity = "western"
+ /// skin color of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
+ var/skin_color = "Pale 2"
- /// body type of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
- var/body_type = "mesomorphic"
+ /// body size of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
+ var/body_size = "Average"
+
+ /// body muscularity of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
+ var/body_type = "Lean"
/// species of the owner, used for limb appearance, set in [/obj/limb/proc/update_limb()]
var/datum/species/species
@@ -689,22 +692,29 @@ This function completely restores a damaged organ to perfect condition.
/obj/limb/proc/update_limb()
SHOULD_CALL_PARENT(TRUE)
- var/datum/ethnicity/owner_ethnicity = GLOB.ethnicities_list[owner?.ethnicity]
+ var/datum/skin_color/owner_skin_color = GLOB.skin_color_list[owner?.skin_color]
- if(owner_ethnicity)
- ethnicity = owner_ethnicity.icon_name
+ if(owner_skin_color)
+ skin_color = owner_skin_color.icon_name
else
- ethnicity = "western"
+ skin_color = "pale2"
- var/datum/body_type/owner_body_type = GLOB.body_types_list[owner?.body_type]
+ var/datum/body_type/owner_body_type = GLOB.body_type_list[owner?.body_type]
if(owner_body_type)
body_type = owner_body_type.icon_name
else
- body_type = "mesomorphic"
+ body_type = "lean"
+
+ var/datum/body_type/owner_body_size = GLOB.body_size_list[owner?.body_size]
+
+ if(owner_body_size)
+ body_size = owner_body_size.icon_name
+ else
+ body_size = "avg"
if(isspeciesyautja(owner))
- ethnicity = owner.ethnicity
+ skin_color = owner.skin_color
body_type = owner.body_type
species = owner?.species ? owner.species : GLOB.all_species[SPECIES_HUMAN]
@@ -734,7 +744,7 @@ This function completely restores a damaged organ to perfect condition.
return
limb.icon = species.icobase
- limb.icon_state = "[get_limb_icon_name(species, body_type, limb_gender, icon_name, ethnicity)]"
+ limb.icon_state = "[get_limb_icon_name(species, body_size, body_type, limb_gender, icon_name, skin_color)]"
. += limb
@@ -744,7 +754,7 @@ This function completely restores a damaged organ to perfect condition.
/obj/limb/proc/get_limb_icon_key()
SHOULD_CALL_PARENT(TRUE)
- return "[species.name]-[body_type]-[limb_gender]-[icon_name]-[ethnicity]-[status]"
+ return "[species.name]-[body_size]-[body_type]-[limb_gender]-[icon_name]-[skin_color]-[status]"
// new damage icon system
// returns just the brute/burn damage code
diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm
index 170bb539bc73..dd56d48a364c 100644
--- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm
+++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm
@@ -1,7 +1,7 @@
//-----------------------M41A Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/ap
- name = "\improper magazine box (AP M41A x 10)"
+ name = "magazine box (AP M41A x 10)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_ap"
overlay_content = "_ap"
@@ -11,7 +11,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/le
- name = "\improper magazine box (LE M41A x 10)"
+ name = "magazine box (LE M41A x 10)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_le"
overlay_content = "_le"
@@ -21,7 +21,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/ext
- name = "\improper magazine box (Ext M41A x 8)"
+ name = "magazine box (Ext M41A x 8)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_ext"
num_of_magazines = 8
@@ -31,7 +31,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/incen
- name = "\improper magazine box (Incen M41A x 10)"
+ name = "magazine box (Incen M41A x 10)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_incen"
overlay_content = "_incen"
@@ -41,7 +41,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/explosive
- name = "\improper magazine box (Explosive M41A x 10)"
+ name = "magazine box (Explosive M41A x 10)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_expl"
overlay_content = "_expl"
@@ -63,7 +63,7 @@
//-----------------------M39 Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/m39
- name = "\improper magazine box (M39 x 12)"
+ name = "magazine box (M39 x 12)"
icon_state = "base_m39"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -76,7 +76,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m39/ap
- name = "\improper magazine box (AP M39 x 12)"
+ name = "magazine box (AP M39 x 12)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/smg/m39/ap
@@ -85,7 +85,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m39/ext
- name = "\improper magazine box (Ext m39 x 10)"
+ name = "magazine box (Ext m39 x 10)"
overlay_ammo_type = "_ext"
overlay_content = "_hv"
num_of_magazines = 10
@@ -95,7 +95,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m39/incen
- name = "\improper magazine box (Incen m39 x 12)"
+ name = "magazine box (Incen m39 x 12)"
overlay_ammo_type = "_incen"
overlay_content = "_incen"
magazine_type = /obj/item/ammo_magazine/smg/m39/incendiary
@@ -104,7 +104,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m39/le
- name = "\improper magazine box (LE m39 x 12)"
+ name = "magazine box (LE m39 x 12)"
overlay_ammo_type = "_le"
overlay_content = "_le"
magazine_type = /obj/item/ammo_magazine/smg/m39/le
@@ -124,7 +124,7 @@
//-----------------------M4RA Battle Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/m4ra
- name = "\improper magazine box (M4RA x 16)"
+ name = "magazine box (M4RA x 16)"
icon_state = "base_m4ra"
flags_equip_slot = SLOT_BACK
overlay_gun_type = "_m4ra"
@@ -135,7 +135,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4ra/ap
- name = "\improper magazine box (AP M4RA x 16)"
+ name = "magazine box (AP M4RA x 16)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/rifle/m4ra/ap
@@ -144,7 +144,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4ra/ext
- name = "\improper magazine box (Ext M4RA x 12)"
+ name = "magazine box (Ext M4RA x 12)"
overlay_ammo_type = "_ext"
num_of_magazines = 12
magazine_type = /obj/item/ammo_magazine/rifle/m4ra/ext
@@ -153,7 +153,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4ra/incen
- name = "\improper magazine box (Incen M4RA x 16)"
+ name = "magazine box (Incen M4RA x 16)"
overlay_ammo_type = "_incen"
overlay_content = "_incen"
magazine_type = /obj/item/ammo_magazine/rifle/m4ra/incendiary
@@ -173,7 +173,7 @@
//-----------------------XM51 Breaching Scattergun Mag Box-----------------------
/obj/item/ammo_box/magazine/xm51
- name = "\improper magazine box (XM51 x 8)"
+ name = "magazine box (XM51 x 8)"
icon_state = "base_breach"
flags_equip_slot = SLOT_BACK
overlay_gun_type = "_xm51"
@@ -186,7 +186,7 @@
//-----------------------L42A Battle Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/l42a
- name = "\improper magazine box (L42A x 16)"
+ name = "magazine box (L42A x 16)"
icon_state = "base_l42"
flags_equip_slot = SLOT_BACK
overlay_gun_type = "_l42"
@@ -197,7 +197,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/l42a/ap
- name = "\improper magazine box (AP L42A x 16)"
+ name = "magazine box (AP L42A x 16)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/rifle/l42a/ap
@@ -206,7 +206,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/l42a/le
- name = "\improper magazine box (LE L42A x 16)"
+ name = "magazine box (LE L42A x 16)"
overlay_ammo_type = "_le"
overlay_content = "_le"
magazine_type = /obj/item/ammo_magazine/rifle/l42a/le
@@ -215,7 +215,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/l42a/ext
- name = "\improper magazine box (Ext L42A x 12)"
+ name = "magazine box (Ext L42A x 12)"
overlay_ammo_type = "_ext"
overlay_content = "_reg"
num_of_magazines = 12
@@ -225,7 +225,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/l42a/incen
- name = "\improper magazine box (Incen L42A x 16)"
+ name = "magazine box (Incen L42A x 16)"
overlay_ammo_type = "_incen"
overlay_content = "_incen"
magazine_type = /obj/item/ammo_magazine/rifle/l42a/incendiary
@@ -245,7 +245,7 @@
//-----------------------M16 Rifle Mag Box-----------------------
/obj/item/ammo_box/magazine/M16
- name = "\improper magazine box (M16 x 12)"
+ name = "magazine box (M16 x 12)"
icon_state = "base_m16"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -257,7 +257,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/M16/ap
- name = "\improper magazine box (AP M16 x 12)"
+ name = "magazine box (AP M16 x 12)"
icon_state = "base_m16"
overlay_ammo_type = "_ap"
overlay_gun_type = "_m16"
@@ -270,7 +270,7 @@
//-----------------------M4A3 Pistol Mag Box-----------------------
/obj/item/ammo_box/magazine/m4a3
- name = "\improper magazine box (M4A3 x 16)"
+ name = "magazine box (M4A3 x 16)"
icon_state = "base_m4a3"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -282,7 +282,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4a3/ap
- name = "\improper magazine box (AP M4A3 x 16)"
+ name = "magazine box (AP M4A3 x 16)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/pistol/ap
@@ -291,7 +291,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4a3/hp
- name = "\improper magazine box (HP M4A3 x 16)"
+ name = "magazine box (HP M4A3 x 16)"
overlay_ammo_type = "_hp"
overlay_content = "_hp"
magazine_type = /obj/item/ammo_magazine/pistol/hp
@@ -300,7 +300,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m4a3/incen
- name = "\improper magazine box (Incen M4A3 x 16)"
+ name = "magazine box (Incen M4A3 x 16)"
overlay_ammo_type = "_incen"
overlay_content = "_incen"
magazine_type = /obj/item/ammo_magazine/pistol/incendiary
@@ -311,7 +311,7 @@
//-----------------------M44 Revolver Speed Loaders Box-----------------------
/obj/item/ammo_box/magazine/m44
- name = "\improper speed loaders box (M44 x 16)"
+ name = "speed loaders box (M44 x 16)"
icon_state = "base_m44"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_m44_reg"
@@ -324,7 +324,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m44/marksman
- name = "\improper speed loaders box (Marksman M44 x 16)"
+ name = "speed loaders box (Marksman M44 x 16)"
overlay_ammo_type = "_m44_mark"
magazine_type = /obj/item/ammo_magazine/revolver/marksman
@@ -332,7 +332,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m44/heavy
- name = "\improper speed loaders box (Heavy M44 x 16)"
+ name = "speed loaders box (Heavy M44 x 16)"
overlay_ammo_type = "_m44_heavy"
magazine_type = /obj/item/ammo_magazine/revolver/heavy
@@ -342,7 +342,7 @@
//-----------------------SU-6 Smartpistol Mag Box-----------------------
/obj/item/ammo_box/magazine/su6
- name = "\improper magazine box (SU-6 x 16)"
+ name = "magazine box (SU-6 x 16)"
icon_state = "base_su6"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -356,7 +356,7 @@
//-----------------------88M4 Pistol Mag Box-----------------------
/obj/item/ammo_box/magazine/mod88
- name = "\improper magazine box (88 Mod 4 AP x 16)"
+ name = "magazine box (88 Mod 4 AP x 16)"
icon_state = "base_mod88"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_ap"
@@ -371,7 +371,7 @@
//-----------------------VP78 Pistol Mag Box-----------------------
/obj/item/ammo_box/magazine/vp78
- name = "\improper magazine box (VP78 x 16)"
+ name = "magazine box (VP78 x 16)"
icon_state = "base_vp78"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -385,7 +385,7 @@
//-----------------------Type71 Rifle Mag Box-----------------------
/obj/item/ammo_box/magazine/type71
- name = "\improper magazine box (Type71 x 10)"
+ name = "magazine box (Type71 x 10)"
icon_state = "base_type71"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_type71_reg"
@@ -398,7 +398,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/type71/ap
- name = "\improper magazine box (Type71 AP x 10)"
+ name = "magazine box (Type71 AP x 10)"
overlay_ammo_type = "_type71_ap"
overlay_content = "_type71_ap"
magazine_type = /obj/item/ammo_magazine/rifle/type71/ap
@@ -418,7 +418,7 @@
//-----------------------Nailgun Mag Box-----------------------
/obj/item/ammo_box/magazine/nailgun
- name = "\improper magazine box (Nailgun x 10)"
+ name = "magazine box (Nailgun x 10)"
icon_state = "base_nailgun" //base color of box
icon_state_deployed = "base_nailgun_deployed"
overlay_ammo_type = "_nail" //used for ammo type color overlay
@@ -436,7 +436,7 @@
//-----------------------M56B Drum Box-----------------------
/obj/item/ammo_box/magazine/m56b
- name = "\improper drum box (M56B x 8)"
+ name = "drum box (M56B x 8)"
icon_state = "base_m56b"
overlay_ammo_type = "_reg_heavy"
overlay_gun_type = "_sg"
@@ -448,7 +448,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m56b/dirty
- name = "\improper drum box (M56B 'Dirty' x 8)"
+ name = "drum box (M56B 'Dirty' x 8)"
overlay_ammo_type = "_red_heavy"
overlay_content = "_sgdirty"
magazine_type = /obj/item/ammo_magazine/smartgun/dirty
@@ -459,7 +459,7 @@
//-----------------------M56D Drum Box-----------------------
/obj/item/ammo_box/magazine/m56d
- name = "\improper drum box (M56D x 8)"
+ name = "drum box (M56D x 8)"
icon_state = "base_m56d"
overlay_ammo_type = ""
overlay_gun_type = "_m56d"
@@ -480,7 +480,7 @@
//-----------------------M2C Ammo Box-----------------------
/obj/item/ammo_box/magazine/m2c
- name = "\improper ammo box (M2C x 8)"
+ name = "ammo box (M2C x 8)"
icon_state = "base_m2c"
overlay_ammo_type = ""
overlay_gun_type = "_m2c"
@@ -500,7 +500,7 @@
//-----------------------M41AE2 Ammo Box-----------------------
/obj/item/ammo_box/magazine/m41ae2
- name = "\improper magazine (M41AE2 x 8)"
+ name = "magazine (M41AE2 x 8)"
icon_state = "base_m41ae2"
overlay_ammo_type = "_reg_heavy"
overlay_gun_type = "_m41ae2"
@@ -512,7 +512,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m41ae2/holo
- name = "\improper magazine box (M41AE2 Holo-Target x 8)"
+ name = "magazine box (M41AE2 Holo-Target x 8)"
overlay_ammo_type = "_holo_heavy"
overlay_content = "_m41ae2_holo"
magazine_type = /obj/item/ammo_magazine/rifle/lmg/holo_target
@@ -521,7 +521,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/m41ae2/heap
- name = "\improper magazine box (M41AE2 HEAP x 8)"
+ name = "magazine box (M41AE2 HEAP x 8)"
overlay_ammo_type = "_heap_heavy"
overlay_content = "_m41ae2_heap"
magazine_type = /obj/item/ammo_magazine/rifle/lmg/heap
@@ -532,7 +532,7 @@
//-----------------------Flamer Fuel Tank Box-----------------------
/obj/item/ammo_box/magazine/flamer
- name = "\improper flamer tank box (UT-Napthal Fuel x 8)"
+ name = "flamer tank box (UT-Napthal Fuel x 8)"
icon_state = "base_flamer"
overlay_ammo_type = "_flamer"
overlay_gun_type = "_blank"
@@ -544,7 +544,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/flamer/bgel
- name = "\improper flamer fuel box (Napalm B-Gel x 8)"
+ name = "flamer fuel box (Napalm B-Gel x 8)"
overlay_ammo_type = "_flamer_bgel"
overlay_content = "_flamer_bgel"
magazine_type = /obj/item/ammo_magazine/flamer_tank/gellied
@@ -555,7 +555,7 @@
//-----------------------M41A MK1 Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/mk1
- name = "\improper magazine box (M41A MK1 x 8)"
+ name = "magazine box (M41A MK1 x 8)"
overlay_ammo_type = "_reg_mk1"
overlay_gun_type = "_mk1"
overlay_content = "_reg"
@@ -566,7 +566,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/mk1/ap
- name = "\improper magazine box (M41A MK1 AP x 8)"
+ name = "magazine box (M41A MK1 AP x 8)"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_ap_mk1"
overlay_content = "_ap"
@@ -578,7 +578,7 @@
//-----------------------NSG 23 Rifle Mag Boxes-----------------------
/obj/item/ammo_box/magazine/nsg23
- name = "\improper magazine box (NSG 23 x 16)"
+ name = "magazine box (NSG 23 x 16)"
icon_state = "base_nsg23"
overlay_gun_type = "_nsg23"
overlay_content = "_reg"
@@ -589,7 +589,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/nsg23/ap
- name = "\improper magazine box (NSG 23 AP x 12)"
+ name = "magazine box (NSG 23 AP x 12)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/rifle/nsg23/ap
@@ -599,7 +599,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/nsg23/ex
- name = "\improper magazine box (NSG 23 Extended x 8)"
+ name = "magazine box (NSG 23 Extended x 8)"
overlay_ammo_type = "_ext"
magazine_type = /obj/item/ammo_magazine/rifle/nsg23/extended
num_of_magazines = 8
@@ -608,7 +608,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/nsg23/heap
- name = "\improper magazine box (NSG 23 HEAP x 16)"
+ name = "magazine box (NSG 23 HEAP x 16)"
overlay_ammo_type = "_heap"
overlay_content = "_heap"
magazine_type = /obj/item/ammo_magazine/rifle/nsg23/heap
@@ -619,7 +619,7 @@
//-----------------------Spearhead Autorevolver Speed Loaders Box-----------------------
/obj/item/ammo_box/magazine/spearhead
- name = "\improper speed loaders box (Spearhead HP x 12)"
+ name = "speed loaders box (Spearhead HP x 12)"
icon_state = "base_cmb"
overlay_ammo_type = "_357_hp"
overlay_gun_type = "_357"
@@ -631,7 +631,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/spearhead/normalpoint
- name = "\improper speed loaders box (Spearhead x 12)"
+ name = "speed loaders box (Spearhead x 12)"
overlay_ammo_type = "_357_reg"
magazine_type = /obj/item/ammo_magazine/revolver/cmb/normalpoint
@@ -641,7 +641,7 @@
//-----------------------Type 73 Pistol Mag Box-----------------------
/obj/item/ammo_box/magazine/type73
- name = "\improper magazine box (Type 73 x 16)"
+ name = "magazine box (Type 73 x 16)"
icon_state = "base_type73"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_type71_reg"
@@ -654,7 +654,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/type73/impact
- name = "\improper magazine box (Type 73 High-Impact x 10)"
+ name = "magazine box (Type 73 High-Impact x 10)"
overlay_ammo_type = "_type73_impact"
overlay_content = "_type73_impact"
num_of_magazines = 10
@@ -667,7 +667,7 @@
//-----------------------AR10 Rifle Mag Box-----------------------
/obj/item/ammo_box/magazine/ar10
- name = "\improper magazine box (AR10 x 12)"
+ name = "magazine box (AR10 x 12)"
icon_state = "base_ar10"
flags_equip_slot = SLOT_BACK
overlay_gun_type = "_ar10"
@@ -681,7 +681,7 @@
//-----------------------MP5 Smg Mag Box-----------------------
/obj/item/ammo_box/magazine/mp5
- name = "\improper magazine box (MP5 x 12)"
+ name = "magazine box (MP5 x 12)"
icon_state = "base_m16"
flags_equip_slot = SLOT_BACK
overlay_gun_type = "_mp5"
@@ -696,7 +696,7 @@
//-----------------------Desert Eagle Pistol Mag Box-----------------------
/obj/item/ammo_box/magazine/deagle
- name = "\improper magazine box (Desert Eagle x 12)"
+ name = "magazine box (Desert Eagle x 12)"
icon_state = "base_deagle"
flags_equip_slot = SLOT_BACK
overlay_ammo_type = "_reg"
@@ -709,7 +709,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/deagle/super
- name = "\improper magazine box (Heavy Desert Eagle x 8)"
+ name = "magazine box (Heavy Desert Eagle x 8)"
overlay_ammo_type = "_hp"
overlay_content = "_hp"
num_of_magazines = 8
@@ -719,7 +719,7 @@
empty = TRUE
/obj/item/ammo_box/magazine/deagle/super/highimpact
- name = "\improper magazine box (High Impact Desert Eagle x 8)"
+ name = "magazine box (High Impact Desert Eagle x 8)"
overlay_ammo_type = "_impact"
overlay_content = "_impact"
magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact
@@ -728,10 +728,304 @@
empty = TRUE
/obj/item/ammo_box/magazine/deagle/super/highimpact/ap
- name = "\improper magazine box (High Impact Armor-Piercing Desert Eagle x 8)"
+ name = "magazine box (High Impact Armor-Piercing Desert Eagle x 8)"
overlay_ammo_type = "_ap"
overlay_content = "_ap"
magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact/ap
/obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty
empty = TRUE
+
+
+//-----------------------S&W Revolver Speed Loaders Box-----------------------
+/obj/item/ammo_box/magazine/snw
+ name = "speed loaders box (S&W .38 x 12)"
+ icon_state = "base_S&W"
+ overlay_ammo_type = "_m44_reg"
+ overlay_gun_type = "_38"
+ overlay_content = "_speed"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/revolver/small
+
+/obj/item/ammo_box/magazine/snw/empty
+ empty = TRUE
+
+
+//-----------------------Type64 Bizon SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/type64
+ name = "magazine box (Type64 Bizon x 10)"
+ icon_state = "base_type64"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = "_type71_reg"
+ overlay_gun_type = "_type64"
+ overlay_content = "_type71_reg"
+ num_of_magazines = 10
+ magazine_type = /obj/item/ammo_magazine/smg/bizon
+
+/obj/item/ammo_box/magazine/type64/empty
+ empty = TRUE
+
+//-----------------------ZhNK-72 Revolver Speedloader Box-----------------------
+
+/obj/item/ammo_box/magazine/zhnk
+ name = "speed loaders box (ZhNK-72 x 12)"
+ icon_state = "base_zhnk72"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_zhnk72"
+ overlay_content = "_zhnk72"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/revolver/upp
+
+/obj/item/ammo_box/magazine/zhnk/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/zhnk/empty
+ empty = TRUE
+
+//-----------------------Type-19 SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/type19
+ name = "magazine box (Type19 x 12)"
+ icon_state = "base_type19"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_type19"
+ overlay_content = "_type71_reg"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/smg/pps43
+
+/obj/item/ammo_box/magazine/type19/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+
+/obj/item/ammo_box/magazine/type19/empty
+ empty = TRUE
+
+//-----------------------UZI SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/uzi
+ name = "magazine box (UZI x 12)"
+ icon_state = "base_uzi"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_uzi"
+ overlay_content = "_uzi"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/smg/uzi
+
+/obj/item/ammo_box/magazine/uzi/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/uzi/empty
+ empty = TRUE
+
+//-----------------------MAC-15 SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/mac15
+ name = "magazine box (MAC-15 x 12)"
+ icon_state = "base_uzi"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_mac15"
+ overlay_content = "_uzi"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/smg/mac15
+
+/obj/item/ammo_box/magazine/mac15/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/mac15/empty
+ empty = TRUE
+
+//-----------------------MP27 SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/mp27
+ name = "magazine box (MP27 x 12)"
+ icon_state = "base_uzi"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_mp27"
+ overlay_content = "_fn"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/smg/mp27
+
+/obj/item/ammo_box/magazine/mp27/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/mp27/empty
+ empty = TRUE
+
+//-----------------------M1911 Pistol Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/m1911
+ name = "magazine box (M1911 x 16)"
+ icon_state = "base_mk45"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_m1911"
+ overlay_content = "_uzi"
+ num_of_magazines = 16
+ magazine_type = /obj/item/ammo_magazine/pistol/m1911
+
+/obj/item/ammo_box/magazine/m1911/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+
+/obj/item/ammo_box/magazine/m1911/empty
+ empty = TRUE
+
+//-----------------------MK-45 Highpower Pistol Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/mk45
+ name = "magazine box (MK-45 x 16)"
+ icon_state = "base_mk45"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_mk45"
+ overlay_content = "_uzi"
+ num_of_magazines = 16
+ magazine_type = /obj/item/ammo_magazine/pistol/highpower
+
+/obj/item/ammo_box/magazine/mk45/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/mk45/empty
+ empty = TRUE
+
+//-----------------------KT-42 Automag Pistol Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/kt42
+ name = "magazine box (KT-42 x 16)"
+ icon_state = "base_mk45"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_kt42"
+ overlay_content = "_uzi"
+ num_of_magazines = 16
+ magazine_type = /obj/item/ammo_magazine/pistol/kt42
+
+/obj/item/ammo_box/magazine/kt42/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+
+/obj/item/ammo_box/magazine/kt42/empty
+ empty = TRUE
+
+//-----------------------Beretta 92FS Pistol Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/b92fs
+ name = "magazine box (Beretta 92FS x 16)"
+ icon_state = "base_mk45"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_b92fs"
+ overlay_content = "_uzi"
+ num_of_magazines = 16
+ magazine_type = /obj/item/ammo_magazine/pistol/b92fs
+
+/obj/item/ammo_box/magazine/b92fs/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/b92fs/empty
+ empty = TRUE
+
+//-----------------------FN FP9000 SMG Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/fp9000
+ name = "magazine box (FN FP9000 x 12)"
+ icon_state = "base_fn"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_fnfp9000"
+ overlay_content = "_fn"
+ num_of_magazines = 12
+ magazine_type = /obj/item/ammo_magazine/smg/fp9000
+
+/obj/item/ammo_box/magazine/fp9000/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/fp9000/empty
+ empty = TRUE
+
+//-----------------------MAR30/40 Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/mar30
+ name = "magazine box (MAR30/40 x 10)"
+ icon_state = "base_mar"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_mar30"
+ overlay_content = "_mar"
+ num_of_magazines = 10
+ magazine_type = /obj/item/ammo_magazine/rifle/mar40
+
+/obj/item/ammo_box/magazine/mar30/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/mar30/empty
+ empty = TRUE
+
+/obj/item/ammo_box/magazine/mar30/ext
+ name = "magazine box (MAR30/40 Ext x 8)"
+ overlay_gun_type = "_mar40"
+ num_of_magazines = 8
+ magazine_type = /obj/item/ammo_magazine/rifle/mar40/extended
+
+/obj/item/ammo_box/magazine/mar30/ext/empty
+ empty = TRUE
+
+//-----------------------MAR50 Mag Box-----------------------
+
+/obj/item/ammo_box/magazine/mar50
+ name = "magazine box (MAR50 x 8)"
+ icon_state = "base_mar"
+ flags_equip_slot = SLOT_BACK
+ overlay_ammo_type = ""
+ overlay_gun_type = "_mar50"
+ overlay_content = "_mar"
+ num_of_magazines = 8
+ magazine_type = /obj/item/ammo_magazine/rifle/mar40/lmg
+
+/obj/item/ammo_box/magazine/mar50/update_icon()
+ if(overlays)
+ overlays.Cut()
+ overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid
+ overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text
+
+/obj/item/ammo_box/magazine/mar50/empty
+ empty = TRUE
diff --git a/colonialmarines.dme b/colonialmarines.dme
index 0fbd39f695b3..e5447c61c5ed 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -2129,12 +2129,12 @@
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
-#include "code\modules\mob\new_player\body_type.dm"
-#include "code\modules\mob\new_player\ethnicity.dm"
+#include "code\modules\mob\new_player\body.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"
#include "code\modules\mob\new_player\new_player.dm"
#include "code\modules\mob\new_player\preferences_setup.dm"
+#include "code\modules\mob\new_player\skin_color.dm"
#include "code\modules\mob\new_player\sprite_accessories\facial_hair.dm"
#include "code\modules\mob\new_player\sprite_accessories\hair.dm"
#include "code\modules\mob\new_player\sprite_accessories\hair_gradients.dm"
diff --git a/html/changelogs/AutoChangeLog-pr-6073.yml b/html/changelogs/AutoChangeLog-pr-6073.yml
new file mode 100644
index 000000000000..a7178f7f3bd7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-6073.yml
@@ -0,0 +1,7 @@
+author: "GrrrKitten"
+delete-after: True
+changes:
+ - rscadd: "replaces the old ethnicity system with a new skintone system"
+ - imageadd: "Resprites humans, adds 9 new mix and match body options to replace the old 3 options"
+ - rscadd: "resprites dogtags and adds an accessory dogtag that can be made visible via attaching to suit/armor"
+ - imageadd: "Touches up a lot of the underwear sprites"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6324.yml b/html/changelogs/AutoChangeLog-pr-6324.yml
new file mode 100644
index 000000000000..ac1c416ea0ae
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-6324.yml
@@ -0,0 +1,5 @@
+author: "Blundir"
+delete-after: True
+changes:
+ - rscadd: "contraband ammo selection in black market"
+ - rscadd: "tons of new ammo boxes"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6330.yml b/html/changelogs/AutoChangeLog-pr-6330.yml
deleted file mode 100644
index bbc7333cfcc1..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6330.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "realforest2001"
-delete-after: True
-changes:
- - rscadd: "Adds USCM Observer preset, a copy of CO with a different name."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6333.yml b/html/changelogs/AutoChangeLog-pr-6333.yml
deleted file mode 100644
index 626edf61ef08..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6333.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "realforest2001"
-delete-after: True
-changes:
- - rscadd: "Added a print button to the ASRS audit log."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6343.yml b/html/changelogs/AutoChangeLog-pr-6343.yml
deleted file mode 100644
index 9491814ce471..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6343.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "TheGamerdk"
-delete-after: True
-changes:
- - rscadd: "All officers and NCO's can now recommend people for medals."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6344.yml b/html/changelogs/AutoChangeLog-pr-6344.yml
deleted file mode 100644
index 03b8d2a783ff..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6344.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "realforest2001"
-delete-after: True
-changes:
- - rscadd: "Added cameras to Working Joe uniforms."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6354.yml b/html/changelogs/AutoChangeLog-pr-6354.yml
deleted file mode 100644
index c41ed529f741..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6354.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "coldironwarrior"
-delete-after: True
-changes:
- - rscadd: "Doctors will spawn in dark blue scrubs by default; Setting your preferred job title to \"Surgeon\" for doctor roles will now spawn you in green scrubs"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6365.yml b/html/changelogs/AutoChangeLog-pr-6365.yml
deleted file mode 100644
index 6c8802948832..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6365.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Huffie56"
-delete-after: True
-changes:
- - maptweak: "remove emergency shutter that aren't on the frontier between two areas."
- - maptweak: "added emergency shutter that are missing on the frontier between two areas."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6370.yml b/html/changelogs/AutoChangeLog-pr-6370.yml
deleted file mode 100644
index a47243cfe740..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6370.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "vero5123"
-delete-after: True
-changes:
- - bugfix: "Fixes overwatch console coordinate comment UI crash"
- - bugfix: "Fixes chat UI crash after entering a custom font"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6372.yml b/html/changelogs/AutoChangeLog-pr-6372.yml
deleted file mode 100644
index d8ac05744dd9..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6372.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-author: "realforest2001"
-delete-after: True
-changes:
- - bugfix: "Changing an Identification Computer to is_weyland (formerly is_centcom) now works correctly and allows assignment of corporate accesses or presets."
- - code_imp: "Added two procs for interpreting WY access information in the UI."
- - code_imp: "Added separate role groups for PMC and Corporate job defines."
- - rscadd: "Added ACCESS_WY_DATABASE as a requirement to use the WY subtype console."
- - rscadd: "Added a WY subtype for crew monitor."
- - code_imp: "Renamed the faction defines explicitly relating to static defences due to confusion over FACTION_WY and FACTION_WEYLAND."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-6373.yml b/html/changelogs/AutoChangeLog-pr-6373.yml
deleted file mode 100644
index 82d336973515..000000000000
--- a/html/changelogs/AutoChangeLog-pr-6373.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "realforest2001"
-delete-after: True
-changes:
- - rscadd: "Added Forsaken sub category to orbit menu. Also adds an \"Other\" sub category for xeno hives, to split the main hive on its own."
- - code_imp: "Changed xenoSplitter to pull the hivenumber rather than base things on the name."
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml
index 605fab9328f6..ad032ea74fc1 100644
--- a/html/changelogs/archive/2024-06.yml
+++ b/html/changelogs/archive/2024-06.yml
@@ -12,3 +12,32 @@
possible.
realforest2001:
- admin: Added ckey log to ordering ASRS.
+2024-06-05:
+ Huffie56:
+ - maptweak: remove emergency shutter that aren't on the frontier between two areas.
+ - maptweak: added emergency shutter that are missing on the frontier between two
+ areas.
+ TheGamerdk:
+ - rscadd: All officers and NCO's can now recommend people for medals.
+ coldironwarrior:
+ - rscadd: Doctors will spawn in dark blue scrubs by default; Setting your preferred
+ job title to "Surgeon" for doctor roles will now spawn you in green scrubs
+ realforest2001:
+ - rscadd: Added a print button to the ASRS audit log.
+ - bugfix: Changing an Identification Computer to is_weyland (formerly is_centcom)
+ now works correctly and allows assignment of corporate accesses or presets.
+ - code_imp: Added two procs for interpreting WY access information in the UI.
+ - code_imp: Added separate role groups for PMC and Corporate job defines.
+ - rscadd: Added ACCESS_WY_DATABASE as a requirement to use the WY subtype console.
+ - rscadd: Added a WY subtype for crew monitor.
+ - code_imp: Renamed the faction defines explicitly relating to static defences due
+ to confusion over FACTION_WY and FACTION_WEYLAND.
+ - rscadd: Added Forsaken sub category to orbit menu. Also adds an "Other" sub category
+ for xeno hives, to split the main hive on its own.
+ - code_imp: Changed xenoSplitter to pull the hivenumber rather than base things
+ on the name.
+ - rscadd: Adds USCM Observer preset, a copy of CO with a different name.
+ - rscadd: Added cameras to Working Joe uniforms.
+ vero5123:
+ - bugfix: Fixes overwatch console coordinate comment UI crash
+ - bugfix: Fixes chat UI crash after entering a custom font
diff --git a/icons/mob/humans/onmob/ties.dmi b/icons/mob/humans/onmob/ties.dmi
index 535e2cc69181..ac563deffbac 100644
Binary files a/icons/mob/humans/onmob/ties.dmi and b/icons/mob/humans/onmob/ties.dmi differ
diff --git a/icons/mob/humans/species/r_human.dmi b/icons/mob/humans/species/r_human.dmi
index 3e8f63d9f312..4ab300efe5dc 100644
Binary files a/icons/mob/humans/species/r_human.dmi and b/icons/mob/humans/species/r_human.dmi differ
diff --git a/icons/mob/humans/undershirt.dmi b/icons/mob/humans/undershirt.dmi
index 225d413ae0f4..468778851c4c 100644
Binary files a/icons/mob/humans/undershirt.dmi and b/icons/mob/humans/undershirt.dmi differ
diff --git a/icons/mob/humans/underwear.dmi b/icons/mob/humans/underwear.dmi
index b639d0a61535..3276ca12aeb8 100644
Binary files a/icons/mob/humans/underwear.dmi and b/icons/mob/humans/underwear.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 179d7076f8c1..f3485de9aa9a 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi
index 012eb4a9630a..63c7010db55a 100644
Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ
diff --git a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi
index 8655a8bfcf2c..f01be20a48b4 100644
Binary files a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi differ
diff --git a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi
index ff0c6d60d4ac..90c0f341dd88 100644
Binary files a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi differ
diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi
index d9a8d5da3fbc..124c40c1afea 100644
Binary files a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi differ