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"