diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index 2d3bc949c3..d0506c7dcb 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -38,6 +38,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/clothing/suit/hazardvest = 1,
/obj/item/clothing/under/rank/vice = 1,
/obj/item/clothing/suit/hooded/flashsuit = 2,
+ /obj/item/clothing/accessory/medal/greytide = 1,
/obj/item/assembly/prox_sensor = 4,
/obj/item/assembly/timer = 3,
/obj/item/flashlight = 4,
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 5858c1debe..3b28c30402 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -111,12 +111,20 @@
/obj/item/stack/tile/carpet/black/fifty
amount = 50
-/obj/item/stack/tile/carpet/red
+/obj/item/stack/tile/carpet/blackred
name = "red carpet"
- icon_state = "tile-carpet-red"
- turf_type = /turf/open/floor/carpet/red
+ icon_state = "tile-carpet-blackred"
+ turf_type = /turf/open/floor/carpet/blackred
-/obj/item/stack/tile/carpet/red/fifty
+/obj/item/stack/tile/carpet/blackred/fifty
+ amount = 50
+
+/obj/item/stack/tile/carpet/monochrome
+ name = "monochrome carpet"
+ icon_state = "tile-carpet-monochrome"
+ turf_type = /turf/open/floor/carpet/monochrome
+
+/obj/item/stack/tile/carpet/monochrome/fifty
amount = 50
/obj/item/stack/tile/fakespace
diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm
index bce38548cc..4924051855 100644
--- a/code/game/objects/items/storage/lockbox.dm
+++ b/code/game/objects/items/storage/lockbox.dm
@@ -178,3 +178,21 @@
/obj/item/storage/lockbox/medal/sci/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/clothing/accessory/medal/plasma/nobel_science(src)
+
+/obj/item/storage/lockbox/medal/engineering
+ name = "engineering medal box"
+ desc = "A locked box used to store medals to be given to the members of the engineering department."
+ req_access = list(ACCESS_CE)
+
+/obj/item/storage/lockbox/medal/engineering/PopulateContents()
+ for(var/i in 1 to 3)
+ new /obj/item/clothing/accessory/medal/engineer(src)
+
+/obj/item/storage/lockbox/medal/medical
+ name = "medical medal box"
+ desc = "A locked box used to store medals to be given to the members of the medical department."
+ req_access = list(ACCESS_CMO)
+
+/obj/item/storage/lockbox/medal/medical/PopulateContents()
+ for(var/i in 1 to 3)
+ new /obj/item/clothing/accessory/medal/ribbon/medical_doctor(src)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 45216a6d95..dd2e8428b1 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -30,6 +30,7 @@
new /obj/item/circuitboard/machine/techfab/department/engineering(src)
new /obj/item/extinguisher/advanced(src)
new /obj/item/storage/photo_album/CE(src)
+ new /obj/item/storage/lockbox/medal/engineering(src)
/obj/structure/closet/secure_closet/engineering_electrical
name = "electrical supplies locker"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 93da17b9b1..d424bcf876 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -77,6 +77,7 @@
new /obj/item/wallframe/defib_mount(src)
new /obj/item/circuitboard/machine/techfab/department/medical(src)
new /obj/item/storage/photo_album/CMO(src)
+ new /obj/item/storage/lockbox/medal/medical(src)
/obj/structure/closet/secure_closet/animal
name = "animal control"
diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm
index 1aaae691f8..e979d4f18e 100644
--- a/code/game/objects/structures/table_frames.dm
+++ b/code/game/objects/structures/table_frames.dm
@@ -68,6 +68,22 @@
to_chat(user, "You start adding [C] to [src]...")
if(do_after(user, 20, target = src) && C.use(1))
make_new_table(/obj/structure/table/wood/fancy/black)
+ else if(istype(I, /obj/item/stack/tile/carpet/blackred))
+ var/obj/item/stack/tile/carpet/blackred/C = I
+ if(C.get_amount() < 1)
+ to_chat(user, "You need one red carpet sheet to do this!")
+ return
+ to_chat(user, "You start adding [C] to [src]...")
+ if(do_after(user, 20, target = src) && C.use(1))
+ make_new_table(/obj/structure/table/wood/fancy/blackred)
+ else if(istype(I, /obj/item/stack/tile/carpet/monochrome))
+ var/obj/item/stack/tile/carpet/monochrome/C = I
+ if(C.get_amount() < 1)
+ to_chat(user, "You need one monochrome carpet sheet to do this!")
+ return
+ to_chat(user, "You start adding [C] to [src]...")
+ if(do_after(user, 20, target = src) && C.use(1))
+ make_new_table(/obj/structure/table/wood/fancy/monochrome)
else if(istype(I, /obj/item/stack/tile/carpet))
var/obj/item/stack/tile/carpet/C = I
if(C.get_amount() < 1)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 78c8971759..8c29c1b2c5 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -298,7 +298,7 @@
frame = /obj/structure/table_frame
framestack = /obj/item/stack/rods
buildstack = /obj/item/stack/tile/carpet
- canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black)
+ canSmoothWith = list(/obj/structure/table/wood/fancy, /obj/structure/table/wood/fancy/black, /obj/structure/table/wood/fancy/blackred, /obj/structure/table/wood/fancy/monochrome)
/obj/structure/table/wood/fancy/New()
// New() is used so that the /black subtype can override `icon` easily and
@@ -314,11 +314,28 @@
icon_state = "fancy_table_black"
buildstack = /obj/item/stack/tile/carpet/black
+/obj/structure/table/wood/fancy/blackred
+ icon = 'icons/obj/structures.dmi'
+ icon_state = "fancy_table_blackred"
+ buildstack = /obj/item/stack/tile/carpet/blackred
+
+/obj/structure/table/wood/fancy/blackred/New()
+ . = ..()
+ icon = 'icons/obj/smooth_structures/fancy_table_blackred.dmi'
+
+/obj/structure/table/wood/fancy/monochrome
+ icon = 'icons/obj/structures.dmi'
+ icon_state = "fancy_table_monochrome"
+ buildstack = /obj/item/stack/tile/carpet/monochrome
+
+/obj/structure/table/wood/fancy/monochrome/New()
+ . = ..()
+ icon = 'icons/obj/smooth_structures/fancy_table_monochrome.dmi'
+
/obj/structure/table/wood/fancy/black/New()
. = ..()
// Ditto above.
icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
-
/*
* Reinforced tables
*/
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 034fd0e606..fc1dec2acb 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -180,13 +180,19 @@
/turf/open/floor/carpet/black
icon = 'icons/turf/floors/carpet_black.dmi'
floor_tile = /obj/item/stack/tile/carpet/black
- canSmoothWith = list(/turf/open/floor/carpet/black)
+ canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome)
-/turf/open/floor/carpet/red
- icon = 'icons/turf/floors/carpet_red.dmi'
- floor_tile = /obj/item/stack/tile/carpet/red
- icon_state ="tile-carpet-red"
- canSmoothWith = list(/turf/open/floor/carpet/red)
+/turf/open/floor/carpet/blackred
+ icon = 'icons/turf/floors/carpet_blackred.dmi'
+ floor_tile = /obj/item/stack/tile/carpet/blackred
+ icon_state = "tile-carpet-blackred"
+ canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome)
+
+/turf/open/floor/carpet/monochrome
+ icon = 'icons/turf/floors/carpet_monochrome.dmi'
+ floor_tile = /obj/item/stack/tile/carpet/monochrome
+ icon_state = "tile-carpet-monochrome"
+ canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome)
/turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20)
. = (prob(probability) || force)
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 1c26a96742..1bf41e3d25 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -1486,16 +1486,24 @@
/datum/supply_pack/service/carpet
name = "Premium Carpet Crate"
- desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together."
+ desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains the classics."
cost = 1000
contains = list(/obj/item/stack/tile/carpet/fifty,
/obj/item/stack/tile/carpet/fifty,
- /obj/item/stack/tile/carpet/red/fifty,
- /obj/item/stack/tile/carpet/red/fifty,
/obj/item/stack/tile/carpet/black/fifty,
/obj/item/stack/tile/carpet/black/fifty)
crate_name = "premium carpet crate"
+/datum/supply_pack/service/carpet2
+ name = "Premium Carpet Crate #2"
+ desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains red, and monochrome"
+ cost = 1000
+ contains = list(/obj/item/stack/tile/carpet/blackred/fifty,
+ /obj/item/stack/tile/carpet/blackred/fifty,
+ /obj/item/stack/tile/carpet/monochrome/fifty,
+ /obj/item/stack/tile/carpet/monochrome/fifty)
+ crate_name = "premium carpet crate #2"
+
/datum/supply_pack/service/lightbulbs
name = "Replacement Lights"
desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs as well as a light replacer."
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index dd0083a1b7..6bf96429b9 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -139,7 +139,7 @@
SSblackbox.record_feedback("associative", "commendation", 1, list("commender" = "[user.real_name]", "commendee" = "[M.real_name]", "medal" = "[src]", "reason" = input))
GLOB.commendations += "[user.real_name] awarded [M.real_name] the [name]! \n- [input]"
commended = TRUE
- desc += "
The inscription reads: [input] - [user.real_name]"
+ desc += "
The inscription reads: [input] - [user.real_name]"
log_game("[key_name(M)] was given the following commendation by [key_name(user)]: [input]")
message_admins("[key_name(M)] was given the following commendation by [key_name(user)]: [input]")
@@ -157,6 +157,16 @@
desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty."
icon_state = "bronze_heart"
+/obj/item/clothing/accessory/medal/engineer
+ name = "\"Shift's Best Electrician\" award"
+ desc = "An award bestowed upon engineers who have excelled at keeping the station running in the best possible condition against all odds."
+ icon_state = "engineer"
+
+/obj/item/clothing/accessory/medal/greytide
+ name = "\"Greytider of the shift\" award"
+ desc = "An award for only the most annoying of assistants. Locked doors mean nothing to you and behaving is not in your vocabulary"
+ icon_state = "greytide"
+
/obj/item/clothing/accessory/medal/ribbon
name = "ribbon"
desc = "A ribbon"
@@ -167,6 +177,11 @@
name = "\"cargo tech of the shift\" award"
desc = "An award bestowed only upon those cargotechs who have exhibited devotion to their duty in keeping with the highest traditions of Cargonia."
+/obj/item/clothing/accessory/medal/ribbon/medical_doctor
+ name = "\"doctor of the shift\" award"
+ desc = "An award bestowed only upon the most capable doctors who have upheld the Hippocratic Oath to the best of their ability"
+ icon_state = "medical_doctor"
+
/obj/item/clothing/accessory/medal/silver
name = "silver medal"
desc = "A silver medal."
@@ -280,7 +295,7 @@
desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet."
icon_state = "lawyerbadge"
item_color = "lawyerbadge"
-
+
/obj/item/clothing/accessory/lawyers_badge/attack_self(mob/user)
if(prob(1))
user.say("The testimony contradicts the evidence!", forced = "attorney's badge")
diff --git a/icons/obj/clothing/accessories.dmi b/icons/obj/clothing/accessories.dmi
index 5da31a3a4f..c35956687d 100644
Binary files a/icons/obj/clothing/accessories.dmi and b/icons/obj/clothing/accessories.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_blackred.dmi b/icons/obj/smooth_structures/fancy_table_blackred.dmi
new file mode 100644
index 0000000000..0766c2f2f9
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_blackred.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_monochrome.dmi b/icons/obj/smooth_structures/fancy_table_monochrome.dmi
new file mode 100644
index 0000000000..54b1b17577
Binary files /dev/null and b/icons/obj/smooth_structures/fancy_table_monochrome.dmi differ
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index 897508fa8c..2e1fdfa7a8 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ
diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi
index 99f976a873..9305e4b7bc 100644
Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ
diff --git a/icons/turf/floors/carpet_red.dmi b/icons/turf/floors/carpet_blackred.dmi
similarity index 100%
rename from icons/turf/floors/carpet_red.dmi
rename to icons/turf/floors/carpet_blackred.dmi
diff --git a/icons/turf/floors/carpet_monochrome.dmi b/icons/turf/floors/carpet_monochrome.dmi
new file mode 100644
index 0000000000..9ab9bc499e
Binary files /dev/null and b/icons/turf/floors/carpet_monochrome.dmi differ