diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 67fc80168a..1e0fe3a78a 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -110,7 +110,7 @@
// Also recharge their internal battery.
if(H.isSynthetic() && H.nutrition < 500) //VOREStation Edit
- H.nutrition = min(H.nutrition+(10*(1-H.species.synthetic_food_coeff)), 500) //VOREStation Edit
+ H.nutrition = min(H.nutrition+(10*(1-max(H.species.synthetic_food_coeff, 0.9))), 500) //VOREStation Edit
cell.use(7000/450*10)
// And clear up radiation
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 7e5f8fd079..62e6bfa978 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -431,3 +431,44 @@
icon_state = "brainzsnaxred"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
+
+//Candy Bars (1-10)
+/obj/item/trash/candy/cb01
+ name = "\improper Tau Ceti Bar wrapper"
+ icon_state = "cb01"
+
+/obj/item/trash/candy/cb02
+ name = "\improper Hundred-Thousand Thaler Bar wrapper"
+ icon_state = "cb02"
+
+/obj/item/trash/candy/cb03
+ name = "\improper Lars' Saltlakris wrapper"
+ icon_state = "cb03"
+
+/obj/item/trash/candy/cb04
+ name = "\improper Aerostat Bar wrapper"
+ icon_state = "cb04"
+
+/obj/item/trash/candy/cb05
+ name = "\improper Andromeda Bar wrapper"
+ icon_state = "cb05"
+
+/obj/item/trash/candy/cb06
+ name = "\improper Mocha Crunch wrapper"
+ icon_state = "cb06"
+
+/obj/item/trash/candy/cb07
+ name = "\improper TaroMilk Bar wrapper"
+ icon_state = "cb07"
+
+/obj/item/trash/candy/cb08
+ name = "\improper Cronk Bar wrapper"
+ icon_state = "cb08"
+
+/obj/item/trash/candy/cb09
+ name = "\improper Kaju Mamma! Bar wrapper"
+ icon_state = "cb09"
+
+/obj/item/trash/candy/cb10
+ name = "\improper Shantak Bar wrapper"
+ icon_state = "cb10"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/backpack_vr.dm b/code/game/objects/items/weapons/storage/backpack_vr.dm
index 1a872e99ac..80c760c3f9 100644
--- a/code/game/objects/items/weapons/storage/backpack_vr.dm
+++ b/code/game/objects/items/weapons/storage/backpack_vr.dm
@@ -6,7 +6,7 @@
item_state = "saddlebag"
icon_state = "saddlebag"
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
- slowdown = 1 //And are slower, too...
+ slowdown = 0.5 //And are slower, too...
var/taurtype = /datum/sprite_accessory/tail/taur/horse //Acceptable taur type to be wearing this
var/no_message = "You aren't the appropriate taur type to wear this!"
@@ -35,7 +35,7 @@
icon_state = "saddlebag"
var/icon_base = "saddlebag"
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
- slowdown = 1 //And are slower, too...
+ slowdown = 0.5 //And are slower, too...
var/no_message = "You aren't the appropriate taur type to wear this!"
/obj/item/weapon/storage/backpack/saddlebag_common/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 13a7d7ca3d..b18180c352 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -79,6 +79,8 @@
/obj/item/weapon/storage/fancy/egg_box/open(mob/user as mob)
if(open)
return
+ if (isobserver(usr))
+ return
open = TRUE
update_icon()
..()
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index fcac8c55bd..b54a76f586 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -425,6 +425,12 @@
ckeywhitelist = list("hunterbirk")
character_name = list("Amaryll")
+/datum/gear/fluff/aria_conduct_medal
+ path = /obj/item/clothing/accessory/medal/conduct
+ display_name = "Aria's Distinguished Conduct Medal"
+ ckeywhitelist = list("hunterbirk")
+ character_name = list("Aria Blue")
+
// I CKEYS
/datum/gear/fluff/ruda_badge
path = /obj/item/clothing/accessory/badge/holo/detective/ruda
diff --git a/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm b/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm
index 28ca463500..de8bdf6f97 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm
@@ -190,11 +190,11 @@
"corrections officer"=/obj/item/clothing/under/rank/neo_corrections,
"corrections officer w/ skirt"=/obj/item/clothing/under/rank/neo_corrections_skirt,
"runner's turtleneck"=/obj/item/clothing/under/rank/neo_runner,
- "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/engsec,
- "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/engsec/next,
- "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/engsec/voy,
- "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/engsec/ds9,
- "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/engsec/ent,
+ "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/sec, //CHOMPedit start: we splitterk engsec into eng and sec
+ "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/sec/next,
+ "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/sec/voy,
+ "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/sec/ds9,
+ "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/sec/ent, //CHOMPedit end
"TG&C bodyguard's suit"=/obj/item/clothing/under/rank/bodyguard_suit,
"TG&C bodyguard's skirt"=/obj/item/clothing/under/rank/bodyguard_skirt,
"TG&C bodyguard's turtleneck"=/obj/item/clothing/under/rank/bodyguard_turtleneck,
@@ -394,11 +394,11 @@
"skirt"=/obj/item/clothing/under/rank/engineer/skirt,
"turtleneck"=/obj/item/clothing/under/rank/engineer/turtleneck,
"KHI uniform"=/obj/item/clothing/under/rank/khi/eng,
- "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/engsec,
- "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/engsec/next,
- "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/engsec/voy,
- "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/engsec/ds9,
- "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/engsec/ent,
+ "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/eng, //CHOMPedit start: we split trek engsec into eng and sec
+ "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/eng/next,
+ "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/eng/voy,
+ "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/eng/ds9,
+ "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/eng/ent, //CHOMPedit end
"voidsuit underlayer"=/obj/item/clothing/under/undersuit/hazard,
"TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_engi,
"TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_engi_skirt,
@@ -589,4 +589,4 @@
"TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_robo,
"TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_robo_skirt
)
- gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
\ No newline at end of file
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index fa84a8c8ec..ec4e6ca70b 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -343,9 +343,31 @@ BLIND // can't see anything
icon_state = "aviator"
/obj/item/clothing/glasses/sunglasses/bigshot
- name = "big shot's glasses"
- desc = "A pair of glasses to help you feel more like a \[BIG SHOT]."
- icon_state = "bigshot"
+ name = "colored glasses"
+ desc = "A pair of glasses with uniquely colored lenses to make you feel like a \[BIG SHOT]."
+ description_fluff = "A prototype model of the AR glasses which focused on stylization and \
+ functionality. The concept never caught on and was replaced with the earlier rendition of \
+ the modern AR glasses. These have quite clearly seen better days as the AR function no \
+ longer works, the toggle merely obscuring the users vison."
+ icon_state = "salesman"
+ var/ar = 0
+
+/obj/item/clothing/glasses/sunglasses/bigshot/examine(mob/user as mob)
+ . = ..()
+ . += to_chat(usr, "Alt-click to toggle modes")
+
+/obj/item/clothing/glasses/sunglasses/bigshot/AltClick()
+ set src in usr
+ if(usr.canmove && !usr.stat && !usr.restrained())
+ if(src.ar)
+ src.ar = !src.ar
+ icon_state = initial(icon_state)
+ to_chat(usr, "You press a small button on \the [src] and deactivate the AR mode.")
+ else
+ src.ar = !src.ar
+ icon_state = "[initial(icon_state)]_fzz"
+ to_chat(usr, "You press a small button on \the [src] and activate the AR mode.")
+ update_clothing_icon()
/obj/item/clothing/glasses/welding
name = "welding goggles"
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 13ca4c9c7b..aee4a32166 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -191,3 +191,28 @@
icon_state = "wardenblueclothes"
item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
rolled_sleeves = 0
+
+/*
+ * Tan uniforms
+ */
+/obj/item/clothing/under/rank/security/tan
+ name = "security officer's uniform"
+ desc = "The latest in fashionable security outfits."
+ icon_state = "officertanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
+/obj/item/clothing/under/rank/head_of_security/tan
+ desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security."
+ name = "head of security's uniform"
+ icon_state = "hostanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
+/obj/item/clothing/under/rank/warden/tan
+ desc = "The insignia on this uniform tells you that this uniform belongs to the Warden."
+ name = "warden's uniform"
+ icon_state = "wardentanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index b548ef3ab2..9273271517 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -239,6 +239,7 @@
name = "sleek overalls"
desc = "A set of modern pleather reinforced overalls."
icon_state = "overalls_sleek"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
/obj/item/clothing/under/pirate
name = "pirate outfit"
diff --git a/code/modules/clothing/under/solgov.dm b/code/modules/clothing/under/solgov.dm
index 82386c9769..228c22b095 100644
--- a/code/modules/clothing/under/solgov.dm
+++ b/code/modules/clothing/under/solgov.dm
@@ -63,6 +63,18 @@
icon_state = "greyutility"
worn_state = "greyutility"
+/obj/item/clothing/under/utility/tan
+ name = "utility uniform"
+ desc = "A comfortable tan utility jumpsuit."
+ icon_state = "tanutility"
+ worn_state = "tanutility"
+
+/obj/item/clothing/under/utility/green
+ name = "utility uniform"
+ desc = "A comfortable green utility jumpsuit."
+ icon_state = "greenutility"
+ worn_state = "greenutility"
+
//Here's the real ones
/obj/item/clothing/under/solgov/utility/sifguard
name = "\improper SifGuard uniform"
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index d01134251f..43227b4f99 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -42,6 +42,9 @@
/// Canned food switch to this state when opened, if set
var/canned_open_state
+ /// For packaged/canned food sounds
+ var/opening_sound = null
+
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
. = ..()
if(nutriment_amt)
@@ -296,7 +299,7 @@
/obj/item/weapon/reagent_containers/food/snacks/proc/unpackage(mob/user)
package = FALSE
to_chat(user, "You unwrap [src].")
- playsound(user,'sound/effects/packagedfoodopen.ogg', 15, 1)
+ playsound(user,opening_sound, 15, 1)
if(package_trash)
var/obj/item/T = new package_trash
user.put_in_hands(T)
@@ -308,7 +311,7 @@
/obj/item/weapon/reagent_containers/food/snacks/proc/uncan(mob/user)
canned = FALSE
to_chat(user, "You unseal \the [src] with a crack of metal.")
- playsound(loc,'sound/effects/tincanopen.ogg', rand(10,50), 1)
+ playsound(loc,opening_sound, rand(10,50), 1)
if(canned_open_state)
icon_state = canned_open_state
@@ -6142,6 +6145,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb01"
+ trash = /obj/item/trash/candy/cb01
nutriment_amt = 4
nutriment_desc = list("stale chocolate" = 2, "nougat" = 1, "caramel" = 1)
w_class = 1
@@ -6158,6 +6162,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb02"
+ trash = /obj/item/trash/candy/cb02
nutriment_amt = 4
nutriment_desc = list("chocolate" = 2, "caramel" = 1, "puffed rice" = 1)
w_class = 1
@@ -6174,6 +6179,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb03"
+ trash = /obj/item/trash/candy/cb03
nutriment_amt = 4
nutriment_desc = list("chocolate" = 4)
w_class = 1
@@ -6190,6 +6196,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb04"
+ trash = /obj/item/trash/candy/cb04
nutriment_amt = 4
nutriment_desc = list("chocolate" = 2, "salt = 1", "licorice" = 1)
w_class = 1
@@ -6206,6 +6213,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb05"
+ trash = /obj/item/trash/candy/cb05
nutriment_amt = 3
nutriment_desc = list("milk chocolate" = 2)
w_class = 1
@@ -6222,6 +6230,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb06"
+ trash = /obj/item/trash/candy/cb06
nutriment_amt = 4
nutriment_desc = list("chocolate" = 2, "coffee" = 1, "vanilla wafer" = 1)
w_class = 1
@@ -6239,6 +6248,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb07"
+ trash = /obj/item/trash/candy/cb07
nutriment_amt = 4
nutriment_desc = list("chocolate" = 2, "taro" = 2)
w_class = 1
@@ -6255,6 +6265,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb08"
+ trash = /obj/item/trash/candy/cb08
nutriment_amt = 3
nutriment_desc = list("chocolate" = 2, "malt puffs" = 1)
w_class = 1
@@ -6271,6 +6282,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb09"
+ trash = /obj/item/trash/candy/cb09
nutriment_amt = 6
nutriment_desc = list("peanuts" = 3, "condensed milk" = 1, "cashews" = 2)
w_class = 1
@@ -6289,6 +6301,7 @@
filling_color = "#552200"
icon = 'icons/obj/food_snacks.dmi'
icon_state = "cb10"
+ trash = /obj/item/trash/candy/cb10
nutriment_amt = 5
nutriment_desc = list("chocolate" = 2, "caramel" = 1, "peanuts" = 1, "nougat" = 1)
w_class = 1
@@ -6832,6 +6845,7 @@
/obj/item/weapon/reagent_containers/food/snacks/canned
icon = 'icons/obj/food_canned.dmi'
+ opening_sound = 'sound/effects/tincanopen.ogg'
canned = TRUE
//////////Just a short line of Canned Consumables, great for treasure in faraway abandoned outposts//////////
@@ -7014,6 +7028,7 @@
/obj/item/weapon/reagent_containers/food/snacks/packaged
icon = 'icons/obj/food_package.dmi'
+ opening_sound = 'sound/effects/packagedfoodopen.ogg'
package = TRUE
//////////////Lunar Cakes - proof of concept//////////////
diff --git a/code/modules/food/kitchen/smartfridge/engineering.dm b/code/modules/food/kitchen/smartfridge/engineering.dm
index cd656c6eba..30646bb96a 100644
--- a/code/modules/food/kitchen/smartfridge/engineering.dm
+++ b/code/modules/food/kitchen/smartfridge/engineering.dm
@@ -1,7 +1,12 @@
+/*
+ * Industrial Sized Sheet Storage (but not actually industrial sized)
+ */
/obj/machinery/smartfridge/sheets
- name = "\improper Smart Sheet Storage"
- desc = "A storage unit for metals."
- icon_contents = "boxes"
+ name = "\improper Industrial Sheet Storage"
+ desc = "An industrial sized storage unit for materials."
+ icon_state = "base_industrial"
+ icon_base = "industrial"
+ icon_contents = "sheet"
stored_datum_type = /datum/stored_item/stack
/obj/machinery/smartfridge/sheets/persistent
@@ -30,3 +35,17 @@
if(O.type == I.item_path) // Typecheck should evaluate material-specific subtype
return I
return null
+
+/*
+ * Mining Variant
+ */
+/obj/machinery/smartfridge/sheets/mining
+ name = "\improper Mining Sheet Storage"
+ icon_state = "base_mining"
+ icon_base = "mining"
+ icon_contents = "sheet"
+
+/obj/machinery/smartfridge/sheets/mining/persistent
+ persistent = /datum/persistent/storage/smartfridge/sheet_storage
+/obj/machinery/smartfridge/sheets/mining/persistent_lossy
+ persistent = /datum/persistent/storage/smartfridge/sheet_storage/lossy
\ No newline at end of file
diff --git a/code/modules/food/kitchen/smartfridge/medical.dm b/code/modules/food/kitchen/smartfridge/medical.dm
index b174906816..f7a5ea9bb5 100644
--- a/code/modules/food/kitchen/smartfridge/medical.dm
+++ b/code/modules/food/kitchen/smartfridge/medical.dm
@@ -1,21 +1,46 @@
+/*
+ * Medical
+ */
+/obj/machinery/smartfridge/medbay
+ name = "\improper Refrigerated Medicine Storage"
+ desc = "A refrigerated storage unit for securely storing medicine and chemicals."
+ icon_contents = "chem"
+
+/obj/machinery/smartfridge/medbay/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers) || istype(O,/obj/item/weapon/reagent_containers/glass/))
+ return 1
+ return 0
+
/obj/machinery/smartfridge/secure/medbay
name = "\improper Refrigerated Medicine Storage"
desc = "A refrigerated storage unit for storing medicine and chemicals."
+ icon_contents = "chem"
req_one_access = list(access_medical,access_chemistry)
/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj)
- if(istype(O,/obj/item/weapon/reagent_containers/glass/))
+ if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers) || istype(O,/obj/item/weapon/reagent_containers/glass/))
return 1
- if(istype(O,/obj/item/weapon/storage/pill_bottle/))
+ return 0
+
+/*
+ * Virology
+ */
+/obj/machinery/smartfridge/virology
+ name = "\improper Refrigerated Virus Storage"
+ desc = "A refrigerated storage unit for storing viral material."
+ icon_contents = "viro"
+
+/obj/machinery/smartfridge/virology/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial/))
return 1
- if(istype(O,/obj/item/weapon/reagent_containers/pill/))
+ if(istype(O,/obj/item/weapon/virusdish/))
return 1
return 0
/obj/machinery/smartfridge/secure/virology
name = "\improper Refrigerated Virus Storage"
- desc = "A refrigerated storage unit for storing viral material."
- icon_contents = "misc"
+ desc = "A refrigerated storage unit for securely storing viral material."
+ icon_contents = "viro"
req_access = list(access_virology)
/obj/machinery/smartfridge/secure/virology/accept_check(var/obj/item/O as obj)
@@ -25,15 +50,27 @@
return 1
return 0
-/obj/machinery/smartfridge/chemistry //Is this used anywhere? It's not secure.
+/*
+ * Chemistry
+ */
+/obj/machinery/smartfridge/chemistry
name = "\improper Smart Chemical Storage"
- desc = "A refrigerated storage unit for medicine and chemical storage."
+ desc = "A refrigerated storage unit for storing medicine and chemicals."
+ icon_contents = "chem"
+ req_one_access = list(access_chemistry)
/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj)
- if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers))
+ if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers) || istype(O,/obj/item/weapon/reagent_containers/glass/))
return 1
return 0
-/obj/machinery/smartfridge/chemistry/virology //Same
- name = "\improper Smart Virus Storage"
- desc = "A refrigerated storage unit for volatile sample storage."
\ No newline at end of file
+/obj/machinery/smartfridge/secure/chemistry
+ name = "\improper Smart Chemical Storage"
+ desc = "A refrigerated storage unit for securely storing medicine and chemicals."
+ icon_contents = "chem"
+ req_one_access = list(access_chemistry)
+
+/obj/machinery/smartfridge/secure/chemistry/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers) || istype(O,/obj/item/weapon/reagent_containers/glass/))
+ return 1
+ return 0
diff --git a/code/modules/food/kitchen/smartfridge/research.dm b/code/modules/food/kitchen/smartfridge/research.dm
new file mode 100644
index 0000000000..eaab3c635b
--- /dev/null
+++ b/code/modules/food/kitchen/smartfridge/research.dm
@@ -0,0 +1,13 @@
+/*
+ * Xenobiological
+ */
+/obj/machinery/smartfridge/secure/extract
+ name = "\improper Biological Sample Storage"
+ desc = "A refrigerated storage unit for xenobiological samples."
+ icon_contents = "slime"
+ req_access = list(access_research)
+
+/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj)
+ if(istype(O, /obj/item/slime_extract) || istype(O, /obj/item/slimepotion))
+ return 1
+ return 0
\ No newline at end of file
diff --git a/code/modules/food/kitchen/smartfridge/hydroponics.dm b/code/modules/food/kitchen/smartfridge/service.dm
similarity index 52%
rename from code/modules/food/kitchen/smartfridge/hydroponics.dm
rename to code/modules/food/kitchen/smartfridge/service.dm
index 93afa67b19..8d0485cd19 100644
--- a/code/modules/food/kitchen/smartfridge/hydroponics.dm
+++ b/code/modules/food/kitchen/smartfridge/service.dm
@@ -1,7 +1,59 @@
+/*
+ * Chef
+ */
+/obj/machinery/smartfridge/chef
+ desc = "For storing all sorts of delicious foods!"
+
+/obj/machinery/smartfridge/chef/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/reagent_containers/food/snacks))
+ return 1
+ return 0
+
+/*
+ * Bartender
+ */
+/obj/machinery/smartfridge/drinks
+ name = "\improper Smart Drink Storage"
+ desc = "A refrigerated storage unit for tasty tasty alcohol."
+ icon_contents = "drinks"
+
+/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
+ return 1
+ return 0
+
+/obj/machinery/smartfridge/drinks/showcase
+ name = "\improper Drink Showcase"
+ icon_state = "base_showcase"
+ icon_base = "showcase"
+
+//Showcase needs a special icon update
+/obj/machinery/smartfridge/drinks/showcase/update_icon()
+ cut_overlays()
+ if(panel_open)
+ add_overlay("[icon_base]-panel")
+
+ if(stat & (BROKEN))
+ cut_overlays()
+ icon_state = "[icon_base]-broken"
+
+ if(stat & (NOPOWER))
+ icon_state = "[icon_base]-off"
+ else
+ icon_state = icon_base
+ switch(contents.len)
+ if(0)
+ add_overlay("[icon_base]")
+ if(1 to 3)
+ add_overlay("[icon_base]-fill")
+
+/*
+ * Hydroponics
+ */
/obj/machinery/smartfridge/produce
name = "\improper Smart Produce Storage"
- desc = "For storing all sorts of perishable foods!"
- icon_contents = "boxes"
+ desc = "For storing all sorts of perishable produce!"
+ icon_contents = "plants"
/obj/machinery/smartfridge/produce/persistent
persistent = /datum/persistent/storage/smartfridge/produce
@@ -11,43 +63,15 @@
/obj/machinery/smartfridge/produce/accept_check(var/obj/item/O as obj)
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/))
- return TRUE
- return FALSE
+ return 1
+ return 0
-/obj/machinery/smartfridge/drinks
- name = "\improper Smart Drink Storage"
- desc = "A refrigerated storage unit for tasty tasty alcohol."
- icon_contents = "drinks"
-
-/obj/machinery/smartfridge/drinks/showcase
- name = "\improper Drink Showcase"
- icon_state = "showcase"
- icon_base = "showcase"
-
-/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj)
- if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
- return TRUE
- return FALSE
-
-/obj/machinery/smartfridge/seeds
+/obj/machinery/smartfridge/seeds //I honestly don't know why this exists when you can store seeds in the vendor. It's not even persistent.
name = "\improper MegaSeed Servitor"
desc = "When you need seeds fast!"
- icon_contents = "boxes"
+ icon_contents = "petri" //There's no seed base in the current batch
/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj)
if(istype(O,/obj/item/seeds/))
return 1
- return 0
-
-/obj/machinery/smartfridge/secure/extract
- name = "\improper Biological Sample Storage"
- desc = "A refrigerated storage unit for xenobiological samples."
- req_access = list(access_research)
- icon_contents = "drinks"
-
-/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj)
- if(istype(O, /obj/item/slime_extract))
- return TRUE
- if(istype(O, /obj/item/slimepotion))
- return TRUE
- return FALSE
\ No newline at end of file
+ return 0
\ No newline at end of file
diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm
index a929c8eda8..c683bf9a60 100644
--- a/code/modules/food/kitchen/smartfridge/smartfridge.dm
+++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm
@@ -1,12 +1,10 @@
-/* SmartFridge. Much todo
-*/
/obj/machinery/smartfridge
name = "\improper SmartFridge"
desc = "For storing all sorts of things! This one doesn't accept any of them!"
- icon = 'icons/obj/vending.dmi'
+ icon = 'icons/obj/vending_smartfridge.dmi'
icon_state = "smartfridge"
var/icon_base = "smartfridge" //Iconstate to base all the broken/deny/etc on
- var/icon_contents = "misc" //Overlay to put on glass to show contents
+ var/icon_contents = "food" //Overlay to put on that show contents
density = TRUE
anchored = TRUE
use_power = USE_POWER_IDLE
@@ -67,26 +65,35 @@
/obj/machinery/smartfridge/update_icon()
cut_overlays()
- if(stat & (BROKEN|NOPOWER))
- icon_state = "[icon_base]-off"
- else
- icon_state = icon_base
-
if(panel_open)
add_overlay("[icon_base]-panel")
- // Fridge contents
- switch(contents.len)
- if(1 to 3)
- add_overlay("[icon_base]-[icon_contents]1")
- if(3 to 6)
- add_overlay("[icon_base]-[icon_contents]2")
- if(6 to INFINITY)
- add_overlay("[icon_base]-[icon_contents]3")
+ if(stat & (BROKEN))
+ cut_overlays()
+ icon_state = "[icon_base]-broken"
-/*******************
-* Item Adding
-********************/
+ if(stat & (NOPOWER))
+ icon_state = "[icon_base]-off"
+ switch(contents.len)
+ if(0)
+ add_overlay("[icon_base]-0-off")
+ if(1 to 3)
+ add_overlay("[icon_base]-[icon_contents]1-off")
+ if(3 to 6)
+ add_overlay("[icon_base]-[icon_contents]2-off")
+ if(6 to INFINITY)
+ add_overlay("[icon_base]-[icon_contents]3-off")
+ else
+ icon_state = icon_base
+ switch(contents.len)
+ if(0)
+ add_overlay("[icon_base]-0")
+ if(1 to 3)
+ add_overlay("[icon_base]-[icon_contents]1")
+ if(3 to 6)
+ add_overlay("[icon_base]-[icon_contents]2")
+ if(6 to INFINITY)
+ add_overlay("[icon_base]-[icon_contents]3")
/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(O.is_screwdriver())
@@ -226,6 +233,7 @@
return TRUE
vend(item_records[index], amount)
+ update_icon()
return TRUE
return FALSE
@@ -247,12 +255,12 @@
throw_item.throw_at(target,16,3,src)
src.visible_message("[src] launches [throw_item.name] at [target.name]!")
SStgui.update_uis(src)
+ update_icon()
return TRUE
-/************************
-* Secure SmartFridges
-*************************/
-
+/*
+ * Secure Smartfridges
+ */
/obj/machinery/smartfridge/secure/tgui_act(action, params)
if(stat & (NOPOWER|BROKEN))
return TRUE
diff --git a/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm b/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm
index 8863448ca5..222cd4f52a 100644
--- a/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm
+++ b/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm
@@ -1,3 +1,6 @@
+/*
+ * Expert Jobs
+ */
/obj/machinery/smartfridge
var/expert_job = "Chef"
/obj/machinery/smartfridge/seeds
@@ -6,14 +9,16 @@
expert_job = "Xenobiologist"
/obj/machinery/smartfridge/secure/medbay
expert_job = "Chemist"
+/obj/machinery/smartfridge/secure/chemistry
+ expert_job = "Chemist"
/obj/machinery/smartfridge/secure/virology
expert_job = "Medical Doctor" //Virologist is an alt-title unfortunately
-/obj/machinery/smartfridge/chemistry
- expert_job = "Chemist" //Unsure what this one is used for, actually
/obj/machinery/smartfridge/drinks
expert_job = "Bartender"
-// Allow thrown items into smartfridges
+/*
+ * Allow thrown items into smartfridges
+ */
/obj/machinery/smartfridge/hitby(var/atom/movable/A, speed)
. = ..()
if(accept_check(A) && A.thrower)
@@ -31,12 +36,20 @@
else if(prob(20))
stock(A)
-//Chemistry 'chemavator'
+/*
+ * Chemistry 'chemavator' (multi-z chem storage)
+ */
/obj/machinery/smartfridge/chemistry/chemvator
name = "\improper Smart Chemavator - Upper"
desc = "A refrigerated storage unit for medicine and chemical storage. Now sporting a fancy system of pulleys to lift bottles up and down."
+ expert_job = "Chemist"
var/obj/machinery/smartfridge/chemistry/chemvator/attached
+/obj/machinery/smartfridge/chemistry/chemvator/accept_check(var/obj/item/O as obj)
+ if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers) || istype(O,/obj/item/weapon/reagent_containers/glass/))
+ return 1
+ return 0
+
/obj/machinery/smartfridge/chemistry/chemvator/down/Destroy()
attached = null
return ..()
diff --git a/icons/inventory/eyes/item.dmi b/icons/inventory/eyes/item.dmi
index f63df487f2..0d3623eb40 100644
Binary files a/icons/inventory/eyes/item.dmi and b/icons/inventory/eyes/item.dmi differ
diff --git a/icons/inventory/eyes/mob.dmi b/icons/inventory/eyes/mob.dmi
index 5efd06109e..ecc8ccd7c8 100644
Binary files a/icons/inventory/eyes/mob.dmi and b/icons/inventory/eyes/mob.dmi differ
diff --git a/icons/obj/food_snacks.dmi b/icons/obj/food_snacks.dmi
index 2bf14581c0..84350f88bf 100644
Binary files a/icons/obj/food_snacks.dmi and b/icons/obj/food_snacks.dmi differ
diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi
index 99c2939c7e..e3663011dd 100644
Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ
diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi
index 562496523f..ce3073bca2 100755
Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ
diff --git a/icons/obj/vending_smartfridge.dmi b/icons/obj/vending_smartfridge.dmi
new file mode 100644
index 0000000000..ae1224808c
Binary files /dev/null and b/icons/obj/vending_smartfridge.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 2d81a578b5..49c5ff1fa4 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2052,6 +2052,7 @@
#include "code\modules\client\preference_setup\loadout\loadout_suit.dm"
#include "code\modules\client\preference_setup\loadout\loadout_suit_vr.dm"
#include "code\modules\client\preference_setup\loadout\loadout_suit_yw.dm"
+#include "code\modules\client\preference_setup\loadout\loadout_uni_selector.dm"
#include "code\modules\client\preference_setup\loadout\loadout_uniform.dm"
#include "code\modules\client\preference_setup\loadout\loadout_uniform_ch.dm"
#include "code\modules\client\preference_setup\loadout\loadout_uniform_vr.dm"
@@ -2506,8 +2507,9 @@
#include "code\modules\food\kitchen\cooking_machines\oven.dm"
#include "code\modules\food\kitchen\smartfridge\drying_rack.dm"
#include "code\modules\food\kitchen\smartfridge\engineering.dm"
-#include "code\modules\food\kitchen\smartfridge\hydroponics.dm"
#include "code\modules\food\kitchen\smartfridge\medical.dm"
+#include "code\modules\food\kitchen\smartfridge\research.dm"
+#include "code\modules\food\kitchen\smartfridge\service.dm"
#include "code\modules\food\kitchen\smartfridge\smartfridge.dm"
#include "code\modules\food\kitchen\smartfridge\smartfridge_vr.dm"
#include "code\modules\gamemaster\defines.dm"