diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 827a50f10f3..78bc145599f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -13606,6 +13606,25 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/security/prison) +"diG" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/machinery/status_display/evac/directional/west, +/obj/item/folder/white{ + pixel_x = -6; + pixel_y = 15 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -6; + pixel_y = 13 + }, +/obj/item/storage/box/coffeepack{ + pixel_x = 8; + pixel_y = 17 + }, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) "diL" = ( /turf/closed/wall/r_wall, /area/station/command/bridge) @@ -27374,15 +27393,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/side, /area/station/science/research) -"gBt" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table/wood, -/obj/machinery/light_switch/directional/east, -/obj/machinery/computer/libraryconsole{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/service/library) "gBx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30216,6 +30226,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/port) +"hmb" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/table/wood, +/obj/item/radio/intercom/directional/north, +/obj/item/newspaper{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/iron/dark, +/area/station/service/library) "hmi" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt, @@ -33886,22 +33910,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/security/detectives_office/private_investigators_office) -"ihu" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/folder/white, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Medbay - Break Room"; - name = "medical camera"; - network = list("ss13","medical") - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/break_room) "ihF" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/bush/flowers_yw/style_random, @@ -56592,20 +56600,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"nJT" = ( -/obj/structure/table/reinforced, -/obj/machinery/airalarm/directional/north, -/obj/item/storage/box/matches{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/lighter, -/obj/item/lighter{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/wood, -/area/station/engineering/break_room) "nJV" = ( /obj/machinery/light/small/directional/north, /obj/machinery/hydroponics/soil, @@ -58107,15 +58101,6 @@ }, /turf/open/space, /area/space) -"odk" = ( -/obj/structure/table/reinforced, -/obj/effect/spawner/random/entertainment/cigarette_pack, -/obj/effect/spawner/random/entertainment/cigarette_pack{ - pixel_x = 3; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/station/engineering/break_room) "odl" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/item/radio{ @@ -59237,6 +59222,19 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/storage) +"osK" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/random/entertainment/cigarette_pack, +/obj/effect/spawner/random/entertainment/cigarette_pack{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/storage/box/coffeepack{ + pixel_x = -13; + pixel_y = 7 + }, +/turf/open/floor/wood, +/area/station/engineering/break_room) "osR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/structure/table/wood, @@ -60602,6 +60600,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/science/research/abandoned) +"oMX" = ( +/obj/structure/table, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/iron, +/area/station/security/prison) "oMZ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -62983,6 +62989,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) +"psS" = ( +/obj/structure/table/reinforced, +/obj/machinery/airalarm/directional/north, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/wood, +/area/station/engineering/break_room) "psZ" = ( /obj/effect/turf_decal/plaque{ icon_state = "L2" @@ -80391,20 +80403,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) -"tEy" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/north, -/obj/item/newspaper{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -4; - pixel_y = 2 - }, -/turf/open/floor/iron/dark, -/area/station/service/library) "tEE" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -83592,6 +83590,15 @@ }, /turf/open/floor/iron/white, /area/station/science/lab) +"uud" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table/wood, +/obj/machinery/light_switch/directional/east, +/obj/machinery/computer/libraryconsole{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/service/library) "uue" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/structure/bed/roller, @@ -85701,13 +85708,6 @@ /obj/machinery/status_display/evac/directional/north, /turf/open/floor/iron/dark, /area/station/medical/chemistry) -"uUb" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron/dark, -/area/station/medical/break_room) "uUg" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -92677,14 +92677,6 @@ }, /turf/open/floor/iron, /area/station/cargo/warehouse) -"wAe" = ( -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/iron, -/area/station/security/prison) "wAk" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -96098,6 +96090,18 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/security/execution/transfer) +"xwe" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/camera/directional/west{ + c_tag = "Medbay - Break Room"; + name = "medical camera"; + network = list("ss13","medical") + }, +/obj/machinery/newscaster/directional/west, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) "xwq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt, @@ -122206,7 +122210,7 @@ lKe nZW qAz vQj -nJT +psS agA uzb jLx @@ -122463,7 +122467,7 @@ ciD vYI lpv vQj -odk +osK gsf miE tgl @@ -141041,8 +141045,8 @@ lvZ rtC idd fPh -ihu -uUb +xwe +diG yho lvZ tOv @@ -148205,8 +148209,8 @@ dfZ dfZ dfZ dfZ -tEy -gBt +hmb +uud bwr nxR lLJ @@ -152762,7 +152766,7 @@ gOo bfs jdT vxr -wAe +oMX iOc qdg iOc diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c9b01a050eb..f50439c1572 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2940,14 +2940,6 @@ }, /turf/open/floor/iron, /area/station/security/warden) -"aZD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "aZL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5325,17 +5317,6 @@ }, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"bUn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/window/right/directional/south{ - dir = 8; - name = "Jim Norton's Quebecois Coffee"; - req_one_access_txt = list("service","maint_tunnels") - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "bUC" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/north, @@ -13796,11 +13777,6 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"feA" = ( -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/cafeteria) "feF" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/effect/turf_decal/tile/yellow{ @@ -15001,13 +14977,6 @@ /obj/effect/mapping_helpers/airlock/access/all/service/general, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"fEs" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/start/assistant, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "fEA" = ( /obj/structure/window, /obj/machinery/computer/atmos_control/nitrogen_tank{ @@ -15249,12 +15218,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/teleporter) -"fHk" = ( -/obj/machinery/newscaster/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/line, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "fHC" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -15318,14 +15281,6 @@ /obj/effect/turf_decal/siding/purple, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) -"fJi" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 8 - }, -/obj/structure/noticeboard/directional/east, -/turf/open/floor/wood, -/area/station/service/library) "fJk" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -21248,6 +21203,32 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/engine, /area/station/engineering/supermatter) +"hRn" = ( +/obj/structure/window{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar{ + pixel_x = 5; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel{ + pixel_x = 15; + pixel_y = 16 + }, +/obj/item/storage/fancy/coffee_condi_display{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "hRq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, @@ -22520,41 +22501,6 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) -"imK" = ( -/obj/structure/sign/poster/contraband/robust_softdrinks{ - name = "Jim Norton's Quebecois Coffee"; - pixel_y = 32 - }, -/obj/item/seeds/coffee{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/seeds/coffee/robusta{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/seeds/coffee{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/storage/pill_bottle/happinesspsych{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/item/seeds/coffee{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/machinery/light/directional/north, -/obj/structure/table{ - name = "Jim Norton's Quebecois Coffee table" - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "imP" = ( /obj/structure/window/reinforced/plasma, /obj/structure/cable, @@ -22861,6 +22807,10 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"iqV" = ( +/obj/structure/cable, +/turf/open/floor/wood, +/area/station/service/cafeteria) "irh" = ( /obj/machinery/hydroponics/soil, /obj/machinery/camera/directional/west{ @@ -25918,27 +25868,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"jpe" = ( -/obj/structure/window, -/obj/item/reagent_containers/cup/glass/mug/coco{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/reagent_containers/cup/glass/mug/tea{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -3 - }, -/obj/structure/table/reinforced{ - name = "Jim Norton's Quebecois Coffee table" - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "jpr" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/command_all, @@ -28167,6 +28096,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/research) +"kaK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/wood, +/area/station/service/cafeteria) "kaS" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/tile/yellow{ @@ -28266,11 +28203,6 @@ /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"kcM" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/cafeteria) "kcV" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -29611,6 +29543,10 @@ "kCZ" = ( /turf/closed/wall, /area/station/service/hydroponics) +"kDi" = ( +/obj/structure/sign/chalkboard_menu, +/turf/closed/wall, +/area/station/commons/storage/primary) "kDk" = ( /obj/machinery/door/airlock/security/glass{ name = "Permabrig Visitation" @@ -30924,32 +30860,6 @@ /obj/effect/spawner/random/trash/janitor_supplies, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"lar" = ( -/obj/structure/noticeboard/directional/north, -/obj/item/reagent_containers/condiment/milk{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/condiment/sugar{ - pixel_y = 4 - }, -/obj/item/reagent_containers/condiment/soymilk{ - pixel_x = -6; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/glass/ice{ - pixel_x = -4; - pixel_y = -2 - }, -/obj/item/reagent_containers/cup/glass/bottle/juice/cream{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/structure/table{ - name = "Jim Norton's Quebecois Coffee table" - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "lav" = ( /obj/structure/girder, /obj/effect/spawner/random/structure/grille, @@ -31006,6 +30916,34 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/security/prison/visit) +"lby" = ( +/obj/structure/window{ + dir = 8 + }, +/obj/machinery/light_switch/directional/north, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = 13; + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/reagent_containers/cup/glass/mug{ + pixel_x = 13; + pixel_y = -1 + }, +/obj/item/reagent_containers/cup/glass/shaker{ + pixel_x = -2; + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/glass/ice{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "lbH" = ( /mob/living/simple_animal/chicken{ name = "Featherbottom"; @@ -32703,6 +32641,19 @@ }, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"lJq" = ( +/obj/structure/table/wood, +/obj/item/storage/box/coffeepack{ + pixel_x = 15; + pixel_y = 10 + }, +/obj/item/reagent_containers/cup/glass/bottle/juice/cream{ + pixel_x = 15; + pixel_y = 2 + }, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "lJr" = ( /obj/structure/chair{ dir = 1 @@ -35857,6 +35808,16 @@ "mMX" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/office) +"mNs" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/right/directional/south{ + dir = 8; + name = "Jim Norton's Quebecois Coffee"; + req_one_access_txt = list("service","maint_tunnels") + }, +/obj/effect/turf_decal/trimline/green/line, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "mNG" = ( /obj/machinery/requests_console/directional/north{ department = "Chapel"; @@ -38257,6 +38218,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) +"nDj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/line, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "nDk" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes{ @@ -41789,25 +41757,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/central) -"oSm" = ( -/obj/structure/window{ - dir = 8 - }, -/obj/item/stack/spacecash/c1{ - pixel_y = 9 - }, -/obj/item/reagent_containers/cup/rag, -/obj/structure/table/reinforced{ - name = "Jim Norton's Quebecois Coffee table" - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "oSo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -41868,19 +41817,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/engineering/gravity_generator) -"oTT" = ( -/obj/structure/window{ - dir = 8 - }, -/obj/machinery/vending/coffee{ - default_price = 0; - extra_price = 0; - fair_market_price = 0; - name = "\improper Jim Norton's Quebecois Coffee" - }, -/obj/machinery/light_switch/directional/north, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "oUh" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/stripes/corner{ @@ -45150,6 +45086,30 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"qdd" = ( +/obj/machinery/newscaster/directional/east, +/obj/effect/turf_decal/trimline/green/line, +/obj/structure/sink/directional/south{ + dir = 8; + pixel_x = 14; + pixel_y = 0 + }, +/obj/item/paper{ + default_raw_text = "Jim Norton's Quebecois Coffee. You see, in 2265 the Quebecois had finally had enough of Canada's shit, and went to the one place that wasn't corrupted by Canuckistan.Je vais au seul endroit qui n'a pas ??? corrompu par les Canadiens ... ESPACE."; + name = "Coffee Shop"; + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/clothing/suit/apron/chef{ + name = "Jim Norton's Quebecois Coffee apron" + }, +/obj/item/clothing/head/soft/green{ + color = "#00a62e"; + desc = "It's a baseball hat in a tastefull green colour."; + name = "Jim Norton's Quebecois Coffee cap" + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "qdm" = ( /obj/machinery/light/small/directional/south, /obj/effect/turf_decal/stripes/corner{ @@ -46568,22 +46528,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"qCb" = ( -/obj/structure/table/reinforced{ - name = "Jim Norton's Quebecois Coffee table" - }, -/obj/item/storage/fancy/donut_box, -/obj/item/paper{ - default_raw_text = "Jim Norton's Quebecois Coffee. You see, in 2265 the Quebecois had finally had enough of Canada's shit, and went to the one place that wasn't corrupted by Canuckistan.Je vais au seul endroit qui n'a pas ??? corrompu par les Canadiens ... ESPACE."; - name = "Coffee Shop"; - pixel_x = -4; - pixel_y = 6 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "qCh" = ( /obj/effect/turf_decal/plaque{ icon_state = "L10" @@ -50243,33 +50187,6 @@ "rOF" = ( /turf/closed/wall, /area/station/medical/psychology) -"rOG" = ( -/obj/structure/window, -/obj/item/food/cakeslice/pound_cake_slice{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/machinery/airalarm/directional/east, -/obj/structure/table/reinforced{ - name = "Jim Norton's Quebecois Coffee table" - }, -/obj/item/food/poppypretzel{ - pixel_x = -8; - pixel_y = -3 - }, -/obj/item/food/muffin/berry{ - pixel_x = -4; - pixel_y = 9 - }, -/obj/item/food/hotcrossbun{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/neutral/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "rOK" = ( /obj/machinery/atmospherics/pipe/smart/simple/orange/hidden, /turf/open/floor/plating, @@ -51671,6 +51588,29 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/prison/safe) +"smc" = ( +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = 32 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/directional/north{ + c_tag = "Jim Norton's Quebecois Coffee" + }, +/obj/structure/noticeboard/directional/north, +/obj/item/reagent_containers/condiment/sugar{ + pixel_y = 4 + }, +/obj/item/storage/pill_bottle/happinesspsych{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/item/storage/box/coffeepack, +/obj/item/storage/box/coffeepack/robusta, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, +/obj/structure/closet/secure_closet/freezer/empty/open, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "smg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/dark/visible, /obj/effect/mapping_helpers/airlock/locked, @@ -52252,6 +52192,15 @@ /obj/effect/mapping_helpers/airlock/access/all/security/general, /turf/open/floor/iron, /area/station/security/brig) +"swt" = ( +/obj/machinery/light/directional/north, +/obj/structure/table/wood, +/obj/machinery/microwave{ + pixel_x = 1; + pixel_y = 6 + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "swu" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/delivery, @@ -53908,17 +53857,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) -"sYh" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/cafeteria) "sYp" = ( /obj/machinery/vending/boozeomat, /obj/machinery/light/small/directional/west, @@ -55249,6 +55187,28 @@ /obj/effect/spawner/random/food_or_drink/seed, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"tuK" = ( +/obj/structure/window, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/structure/window{ + dir = 8 + }, +/obj/item/food/cherrycupcake{ + pixel_y = 10 + }, +/obj/item/food/muffin/berry{ + pixel_x = 18; + pixel_y = 9 + }, +/obj/item/food/cakeslice/pound_cake_slice{ + pixel_x = 4; + pixel_y = -5 + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "tvg" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -55340,6 +55300,16 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"twS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/wood, +/area/station/service/cafeteria) "txa" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, @@ -55807,15 +55777,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"tHu" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/station/service/cafeteria) "tHE" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -57104,21 +57065,6 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/medical/surgery/theatre) -"udh" = ( -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = 32 - }, -/obj/structure/sink/directional/south, -/obj/effect/turf_decal/bot, -/obj/item/clothing/suit/apron/chef{ - name = "Jim Norton's Quebecois Coffee apron" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/directional/north{ - c_tag = "Jim Norton's Quebecois Coffee" - }, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "udp" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -58358,6 +58304,23 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"uyM" = ( +/obj/structure/window, +/obj/machinery/airalarm/directional/east, +/obj/item/food/poppypretzel{ + pixel_x = -5; + pixel_y = -2 + }, +/obj/item/food/hotcrossbun{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/structure/table/wood, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "uza" = ( /turf/closed/wall/r_wall, /area/station/security/prison/visit) @@ -58913,6 +58876,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"uIb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/trimline/green/line, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "uId" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -66175,6 +66144,14 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) +"xmD" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 8 + }, +/obj/structure/noticeboard/directional/east, +/turf/open/floor/wood, +/area/station/service/library) "xmT" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -67360,6 +67337,21 @@ /obj/machinery/atmospherics/components/trinary/filter/flipped/critical, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"xHk" = ( +/obj/effect/turf_decal/trimline/green/line{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/structure/desk_bell{ + pixel_x = 7 + }, +/obj/item/reagent_containers/cup/rag, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -3; + pixel_y = 9 + }, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "xIx" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, @@ -68664,6 +68656,10 @@ }, /turf/open/floor/engine/n2o, /area/station/engineering/atmos) +"yfC" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/station/service/cafeteria) "yfI" = ( /obj/machinery/atmospherics/pipe/layer_manifold/supply/hidden, /turf/closed/wall/r_wall, @@ -90423,7 +90419,7 @@ ohM ecO mjr erS -fJi +xmD dFJ qRf xrd @@ -91166,10 +91162,10 @@ cFp vvH cFp guX -oTT -bUn -oSm -tHu +lby +mNs +hRn +kaK hSg rLl uVm @@ -91422,13 +91418,13 @@ nZh hSf pID qSp -guX -lar -fEs -qCb -sYh +kDi +lJq +uIb +xHk +twS iBt -kcM +yfC yaE tmK htd @@ -91680,12 +91676,12 @@ xnt ifn kzb guX -imK -aZD -jpe +swt +nDj +tuK euo -feA -kcM +iqV +yfC ykS htd boL @@ -91937,9 +91933,9 @@ bVk bNP orC guX -udh -fHk -rOG +smc +qdd +uyM jWR iHf pAk diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 4c01777f0a2..4fb1b481d94 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -889,19 +889,6 @@ /obj/item/seeds/tower, /turf/open/floor/iron/dark, /area/station/security/prison/garden) -"asn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/structure/table, -/obj/item/storage/fancy/coffee_cart_rack{ - pixel_x = -8 - }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = 5; - pixel_y = 7 - }, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "asP" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 8 @@ -16572,6 +16559,20 @@ }, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/foyer) +"fVM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/storage/box/coffeepack{ + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "fWd" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 @@ -23219,21 +23220,6 @@ }, /turf/open/floor/iron/dark, /area/station/cargo/miningdock/oresilo) -"irB" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/storage/fancy/coffee_cart_rack{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/reagent_containers/cup/glass/coffee{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "irH" = ( /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 @@ -27378,16 +27364,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/medical/chemistry) -"jQM" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/airalarm/directional/east, -/obj/structure/table/glass, -/obj/machinery/coffeemaker, -/turf/open/floor/iron, -/area/station/engineering/break_room) "jQS" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 4 @@ -27992,6 +27968,17 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/iron/dark, /area/station/medical/morgue) +"kbr" = ( +/obj/structure/table, +/obj/machinery/computer/libraryconsole/bookmanagement{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/sign/poster/official/here_for_your_safety{ + pixel_y = -32 + }, +/turf/open/floor/iron, +/area/station/security/prison) "kbS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -33299,6 +33286,17 @@ /obj/structure/cable/layer3, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"lSf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 2 + }, +/obj/structure/table, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "lSo" = ( /turf/open/floor/glass/reinforced, /area/station/security/brig) @@ -41172,6 +41170,21 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/vault, /turf/open/floor/plating, /area/station/command/bridge) +"oLu" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/coffeepack{ + pixel_x = 8; + pixel_y = 12 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "oLv" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 @@ -42562,17 +42575,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard) -"plU" = ( -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/sign/poster/official/here_for_your_safety{ - pixel_y = -32 - }, -/turf/open/floor/iron, -/area/station/security/prison) "plY" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -43092,6 +43094,16 @@ "ptW" = ( /turf/open/floor/iron, /area/station/security/checkpoint/escape) +"ptZ" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/airalarm/directional/east, +/obj/structure/table/glass, +/obj/machinery/coffeemaker/impressa, +/turf/open/floor/iron, +/area/station/engineering/break_room) "puc" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 @@ -43303,17 +43315,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"pwP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/light/small/directional/south, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 2 - }, -/obj/structure/table, -/obj/machinery/coffeemaker, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "pwS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -88551,7 +88552,7 @@ rBz vMx mGG gGG -plU +kbr dhL dhL dhL @@ -100934,8 +100935,8 @@ cXE mLL ulV bbj -jQM -irB +ptZ +oLu xya jxb kDS @@ -179284,7 +179285,7 @@ pOa iiD rSI rvq -pwP +lSf aIA pRM jKi @@ -179541,7 +179542,7 @@ ehV dNS dNS dNS -asn +fVM nwM npM csX diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 61f379f5a3a..fbfcaededc7 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -104,6 +104,7 @@ #define COLOR_DARK_BROWN "#997C4F" #define COLOR_ORANGE_BROWN "#a9734f" #define COLOR_CARGO_BROWN "#B18644" +#define COLOR_DRIED_TAN "#ad7257" //Color defines used by the soapstone (based on readability against grey tiles) #define COLOR_SOAPSTONE_PLASTIC "#a19d94" diff --git a/code/datums/elements/dryable.dm b/code/datums/elements/dryable.dm index ede9d8d0a3d..2985f4b7f1e 100644 --- a/code/datums/elements/dryable.dm +++ b/code/datums/elements/dryable.dm @@ -25,7 +25,7 @@ var/atom/dried_atom = source if(dry_result == dried_atom.type)//if the dried type is the same as our currrent state, don't bother creating a whole new item, just re-color it. var/atom/movable/resulting_atom = dried_atom - resulting_atom.add_atom_colour("#ad7257", FIXED_COLOUR_PRIORITY) + resulting_atom.add_atom_colour(COLOR_DRIED_TAN, FIXED_COLOUR_PRIORITY) ADD_TRAIT(resulting_atom, TRAIT_DRIED, ELEMENT_TRAIT(type)) resulting_atom.forceMove(source.drop_location()) return diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index a99f4ea41aa..29ca49daf0f 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1383,3 +1383,15 @@ /obj/item/stock_parts/capacitor = 1, /obj/item/stock_parts/micro_laser = 1, ) + +/obj/item/circuitboard/machine/coffeemaker/impressa + name = "Impressa Coffeemaker" + greyscale_colors = CIRCUIT_COLOR_SERVICE + build_path = /obj/machinery/coffeemaker/impressa + req_components = list( + /obj/item/stack/sheet/glass = 1, + /obj/item/reagent_containers/cup/beaker = 2, + /obj/item/stock_parts/water_recycler = 1, + /obj/item/stock_parts/capacitor/adv = 1, + /obj/item/stock_parts/micro_laser/high = 2, + ) diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm index 510cee7c20e..cf52942383c 100644 --- a/code/game/objects/items/storage/boxes/food_boxes.dm +++ b/code/game/objects/items/storage/boxes/food_boxes.dm @@ -487,3 +487,29 @@ /obj/item/storage/box/condimentbottles/PopulateContents() for(var/i in 1 to 6) new /obj/item/reagent_containers/condiment(src) + + +/obj/item/storage/box/coffeepack + icon_state = "arabica_beans" + name = "arabica beans" + desc = "A bag containing fresh, dry coffee arabica beans. Ethically sourced and packaged by Waffle Corp." + illustration = null + icon = 'icons/obj/food/containers.dmi' + var/beantype = /obj/item/food/grown/coffee + +/obj/item/storage/box/coffeepack/Initialize(mapload) + . = ..() + atom_storage.set_holdable(list(/obj/item/food/grown/coffee)) + +/obj/item/storage/box/coffeepack/PopulateContents() + atom_storage.max_slots = 5 + for(var/i in 1 to 5) + var/obj/item/food/grown/coffee/bean = new beantype(src) + ADD_TRAIT(bean, TRAIT_DRIED, ELEMENT_TRAIT(type)) + bean.add_atom_colour(COLOR_DRIED_TAN, FIXED_COLOUR_PRIORITY) //give them the tan just like from the drying rack + +/obj/item/storage/box/coffeepack/robusta + icon_state = "robusta_beans" + name = "robusta beans" + desc = "A bag containing fresh, dry coffee robusta beans. Ethically sourced and packaged by Waffle Corp." + beantype = /obj/item/food/grown/coffee/robusta diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 87b1ec8f393..7faa48a4d37 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -10,6 +10,7 @@ * Rolling Paper Pack * Cigar Case * Heart Shaped Box w/ Chocolates + * Coffee condiments display */ /obj/item/storage/fancy @@ -28,6 +29,8 @@ var/is_open = FALSE /// What this container folds up into when it's empty. var/obj/fold_result = /obj/item/stack/sheet/cardboard + /// Whether it supports open and closed state icons. + var/has_open_closed_states = TRUE /obj/item/storage/fancy/Initialize(mapload) . = ..() @@ -41,7 +44,7 @@ new spawn_type(src) /obj/item/storage/fancy/update_icon_state() - icon_state = "[base_icon_state][is_open ? contents.len : null]" + icon_state = "[base_icon_state][has_open_closed_states && is_open ? contents.len : null]" return ..() /obj/item/storage/fancy/examine(mob/user) @@ -360,16 +363,12 @@ spawn_type = /obj/item/rollingpaper spawn_count = 10 custom_price = PAYCHECK_LOWER + has_open_closed_states = FALSE /obj/item/storage/fancy/rollingpapers/Initialize(mapload) . = ..() atom_storage.set_holdable(list(/obj/item/rollingpaper)) -///Overrides to do nothing because fancy boxes are fucking insane. -/obj/item/storage/fancy/rollingpapers/update_icon_state() - SHOULD_CALL_PARENT(FALSE) - return - /obj/item/storage/fancy/rollingpapers/update_overlays() . = ..() if(!contents.len) @@ -475,13 +474,14 @@ contents_tag = "pickle" fold_result = null custom_materials = list(/datum/material/glass = 2000) + has_open_closed_states = FALSE /obj/item/storage/fancy/pickles_jar/Initialize(mapload) . = ..() atom_storage.set_holdable(list(/obj/item/food/pickle)) /obj/item/storage/fancy/pickles_jar/update_icon_state() - SHOULD_CALL_PARENT(FALSE) + . = ..() if(!contents.len) icon_state = "[base_icon_state]_empty" else @@ -491,4 +491,67 @@ icon_state = base_icon_state return +/* + * Coffee condiments display + */ + +/obj/item/storage/fancy/coffee_condi_display + icon = 'icons/obj/food/containers.dmi' + icon_state = "coffee_condi_display" + base_icon_state = "coffee_condi_display" + name = "coffee condiments display" + desc = "A neat small wooden box, holding all your favorite coffee condiments." + contents_tag = "coffee condiment" + custom_materials = list(/datum/material/wood = 1000) + fold_result = /obj/item/stack/sheet/mineral/wood + is_open = TRUE + has_open_closed_states = FALSE + +/obj/item/storage/fancy/coffee_condi_display/Initialize(mapload) + . = ..() + atom_storage.max_slots = 14 + atom_storage.set_holdable(list( + /obj/item/reagent_containers/condiment/pack/sugar, + /obj/item/reagent_containers/condiment/creamer, + /obj/item/reagent_containers/condiment/pack/astrotame, + /obj/item/reagent_containers/condiment/chocolate, + )) + +/obj/item/storage/fancy/coffee_condi_display/update_overlays() + . = ..() + var/has_sugar = FALSE + var/has_sweetener = FALSE + var/has_creamer = FALSE + var/has_chocolate = FALSE + + for(var/thing in contents) + if(istype(thing, /obj/item/reagent_containers/condiment/pack/sugar)) + has_sugar = TRUE + else if(istype(thing, /obj/item/reagent_containers/condiment/pack/astrotame)) + has_sweetener = TRUE + else if(istype(thing, /obj/item/reagent_containers/condiment/creamer)) + has_creamer = TRUE + else if(istype(thing, /obj/item/reagent_containers/condiment/chocolate)) + has_chocolate = TRUE + + if (has_sugar) + . += "condi_display_sugar" + if (has_sweetener) + . += "condi_display_sweetener" + if (has_creamer) + . += "condi_display_creamer" + if (has_chocolate) + . += "condi_display_chocolate" + +/obj/item/storage/fancy/coffee_condi_display/PopulateContents() + for(var/i in 1 to 4) + new /obj/item/reagent_containers/condiment/pack/sugar(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/condiment/pack/astrotame(src) + for(var/i in 1 to 4) + new /obj/item/reagent_containers/condiment/creamer(src) + for(var/i in 1 to 3) + new /obj/item/reagent_containers/condiment/chocolate(src) + update_appearance() + diff --git a/code/game/objects/structures/signs/signs_misc.dm b/code/game/objects/structures/signs/signs_misc.dm index d230ea4801f..841abd11741 100644 --- a/code/game/objects/structures/signs/signs_misc.dm +++ b/code/game/objects/structures/signs/signs_misc.dm @@ -20,4 +20,10 @@ icon_state = "xenobio-guide" is_editable = TRUE +/obj/structure/sign/chalkboard_menu + name = "\improper Chalkboard coffee menu" + icon_state = "chalkboard_menu" + icon = 'icons/obj/barsigns.dmi' + desc = "85cr for a iced lactose-free caramel frappe?! Who buys that?!" + MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/xenobio_guide, 32) diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 0e6e91b7f81..780aa015382 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -334,3 +334,27 @@ ) crate_name = "\improper Mothic Supply box" crate_type = /obj/structure/closet/crate/cardboard/mothic + +/datum/supply_pack/organic/syrup + name = "Coffee Syrups Box" + desc = "A packaged box of various syrups, perfect for making your delicious coffee even more diabetic." + cost = CARGO_CRATE_VALUE * 4 + contains = list( + /obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel, + /obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur, + /obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar, + ) + crate_name = "coffee syrups box" + crate_type = /obj/structure/closet/crate/cardboard + +/datum/supply_pack/organic/syrup_contraband + contraband = TRUE + name = "Contraband Syrups Box" + desc = "A packaged box containing illegal coffee syrups. Possession of these carries a penalty established in the galactic penal code." + cost = CARGO_CRATE_VALUE * 6 + contains = list( + /obj/item/reagent_containers/cup/bottle/syrup_bottle/laughsyrup, + /obj/item/reagent_containers/cup/bottle/syrup_bottle/laughsyrup, + ) + crate_name = "illegal syrups box" + crate_type = /obj/structure/closet/crate/cardboard diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index e7ff5c33bf5..44cb86c89f2 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -245,3 +245,28 @@ for(var/i in 1 to 3) var/item = pick(contains) new item(C) + +/datum/supply_pack/service/coffeekit + name = "Coffee Equipment Crate" + desc = "A complete kit to setup your own cozy coffee shop, the coffeemaker is for some reason not included." + cost = CARGO_CRATE_VALUE * 4 + contains = list( + /obj/item/storage/box/coffeepack/robusta, + /obj/item/storage/box/coffeepack, + /obj/item/reagent_containers/cup/coffeepot, + /obj/item/storage/fancy/coffee_condi_display, + /obj/item/reagent_containers/cup/glass/bottle/juice/cream, + /obj/item/reagent_containers/condiment/milk, + /obj/item/reagent_containers/condiment/soymilk, + /obj/item/reagent_containers/condiment/sugar, + /obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel, //one extra syrup as a treat + ) + crate_name = "coffee equipment crate" + +/datum/supply_pack/service/coffeemaker + name = "Impressa Coffeemaker Crate" + desc = "An assembled Impressa model coffeemaker." + cost = CARGO_CRATE_VALUE * 4 + contains = list(/obj/machinery/coffeemaker/impressa) + crate_name = "coffeemaker crate" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm index 9943eb85091..ef2beca48e8 100644 --- a/code/modules/food_and_drinks/machinery/coffeemaker.dm +++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm @@ -1,3 +1,5 @@ +#define BEAN_CAPACITY 10 //amount of coffee beans that can fit inside the impressa coffeemaker + /obj/machinery/coffeemaker name = "coffeemaker" desc = "A Modello 3 Coffeemaker that brews coffee and holds it at the perfect temperature of 176 fahrenheit. Made by Piccionaia Home Appliances." @@ -16,13 +18,17 @@ /// The type path to instantiate for the coffee cartridge the device initially comes with, eg. /obj/item/coffee_cartridge var/initial_cartridge = /obj/item/coffee_cartridge /// The number of cups left - var/coffee_cups = 20 + var/coffee_cups = 15 + var/max_coffee_cups = 15 /// The amount of sugar packets left - var/sugar_packs = 20 + var/sugar_packs = 10 + var/max_sugar_packs = 10 /// The amount of sweetener packets left - var/sweetener_packs = 20 + var/sweetener_packs = 10 + var/max_sweetener_packs = 10 /// The amount of creamer packets left - var/creamer_packs = 20 + var/creamer_packs = 10 + var/max_creamer_packs = 10 var/static/radial_examine = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_examine") var/static/radial_brew = image(icon = 'icons/hud/radial_coffee.dmi', icon_state = "radial_brew") @@ -82,6 +88,7 @@ . += span_notice("- \A [coffeepot].") if(cartridge) . += span_notice("- \A [cartridge].") + return if(!(machine_stat & (NOPOWER|BROKEN))) . += "[span_notice("The status display reads:")]\n"+\ @@ -138,11 +145,19 @@ coffeepot = null if(A == cartridge) cartridge = null - update_appearance() + update_appearance(UPDATE_OVERLAYS) -/obj/machinery/coffeemaker/update_icon_state() - icon_state = "[base_icon_state][coffeepot ? "_pot" : "_nopot"][cartridge ? "_cart": "_nocart"]" - return ..() +/obj/machinery/coffeemaker/update_overlays() + . = ..() + . += overlay_checks() + +/obj/machinery/coffeemaker/proc/overlay_checks() + . = list() + if(coffeepot) + . += "coffeemaker_pot" + if(cartridge) + . += "coffeemaker_cartidge" + return . /obj/machinery/coffeemaker/proc/replace_pot(mob/living/user, obj/item/reagent_containers/cup/coffeepot/new_coffeepot) if(!user) @@ -151,7 +166,8 @@ try_put_in_hand(coffeepot, user) if(new_coffeepot) coffeepot = new_coffeepot - update_appearance() + balloon_alert(user, "replaced pot") + update_appearance(UPDATE_OVERLAYS) return TRUE /obj/machinery/coffeemaker/proc/replace_cartridge(mob/living/user, obj/item/coffee_cartridge/new_cartridge) @@ -161,7 +177,7 @@ try_put_in_hand(cartridge, user) if(new_cartridge) cartridge = new_cartridge - update_appearance() + update_appearance(UPDATE_OVERLAYS) return TRUE /obj/machinery/coffeemaker/wrench_act(mob/living/user, obj/item/tool) @@ -172,7 +188,7 @@ /obj/machinery/coffeemaker/attackby(obj/item/attack_item, mob/living/user, params) //You can only screw open empty grinder if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, attack_item)) - return + return FALSE if(default_deconstruction_crowbar(attack_item)) return @@ -186,20 +202,92 @@ if(!user.transferItemToLoc(new_pot, src)) return TRUE replace_pot(user, new_pot) - balloon_alert(user, "added pot") - update_appearance() + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/cup/glass/coffee_cup) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) + var/obj/item/reagent_containers/cup/glass/coffee_cup/new_cup = attack_item + if(new_cup.reagents.total_volume > 0) + balloon_alert(user, "the cup must be empty!") + return + if(coffee_cups >= max_coffee_cups) + balloon_alert(user, "the cup holder is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + coffee_cups++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/sugar)) + var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + if(sugar_packs >= max_sugar_packs) + balloon_alert(user, "the sugar compartment is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + sugar_packs++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/creamer)) + var/obj/item/reagent_containers/condiment/creamer/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + if(creamer_packs >= max_creamer_packs) + balloon_alert(user, "the creamer compartment is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + creamer_packs++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/astrotame)) + var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + else if(sweetener_packs >= max_sweetener_packs) + balloon_alert(user, "the sweetener compartment is full!") + return + else if(!user.transferItemToLoc(attack_item, src)) + return + sweetener_packs++ + update_appearance(UPDATE_OVERLAYS) return TRUE //no afterattack if (istype(attack_item, /obj/item/coffee_cartridge) && !(attack_item.item_flags & ABSTRACT)) var/obj/item/coffee_cartridge/new_cartridge = attack_item - . = TRUE //no afterattack if(!user.transferItemToLoc(new_cartridge, src)) - return TRUE + return replace_cartridge(user, new_cartridge) balloon_alert(user, "added cartridge") - update_appearance() + update_appearance(UPDATE_OVERLAYS) return TRUE //no afterattack +/obj/machinery/coffeemaker/proc/try_brew() + if(!cartridge) + balloon_alert("no coffee cartidge inserted!") + return FALSE + if(cartridge.charges < 1) + balloon_alert("coffee cartidge empty!") + return FALSE + if(!coffeepot) + balloon_alert("no coffeepot inside!") + return FALSE + if(machine_stat & (NOPOWER|BROKEN)) + balloon_alert("machine unpowered!") + return FALSE + if(coffeepot.reagents.total_volume >= coffeepot.reagents.maximum_volume) + balloon_alert("the coffeepot is already full!") + return FALSE + return TRUE + /obj/machinery/coffeemaker/ui_interact(mob/user) // The microwave Menu //I am reasonably certain that this is not a microwave //I am positively certain that this is not a microwave . = ..() @@ -214,8 +302,7 @@ if(cartridge) options["Eject Cartridge"] = radial_eject_cartridge - if(coffeepot && cartridge && cartridge.charges > 0) - options["Brew"] = radial_brew + options["Brew"] = radial_brew //brew is always available as an option, when the machine is unable to brew the player is told by balloon alerts whats exactly wrong if(coffee_cups > 0) options["Take Cup"] = radial_take_cup @@ -277,37 +364,37 @@ if(!coffee_cups) //shouldn't happen, but we all know how stuff manages to break balloon_alert("no cups left!") return - balloon_alert_to_viewers("took cup") var/obj/item/reagent_containers/cup/glass/coffee_cup/new_cup = new(get_turf(src)) user.put_in_hands(new_cup) coffee_cups-- + update_appearance(UPDATE_OVERLAYS) /obj/machinery/coffeemaker/proc/take_sugar(mob/user) if(!sugar_packs) balloon_alert("no sugar left!") return - balloon_alert_to_viewers("took sugar packet") var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = new(get_turf(src)) user.put_in_hands(new_pack) sugar_packs-- + update_appearance(UPDATE_OVERLAYS) /obj/machinery/coffeemaker/proc/take_sweetener(mob/user) if(!sweetener_packs) balloon_alert("no sweetener left!") return - balloon_alert_to_viewers("took sweetener packet") var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = new(get_turf(src)) user.put_in_hands(new_pack) sweetener_packs-- + update_appearance(UPDATE_OVERLAYS) /obj/machinery/coffeemaker/proc/take_creamer(mob/user) if(!creamer_packs) balloon_alert("no creamer left!") return - balloon_alert_to_viewers("took creamer packet") - var/obj/item/reagent_containers/condiment/pack/creamer/new_pack = new(get_turf(src)) + var/obj/item/reagent_containers/condiment/creamer/new_pack = new(drop_location()) user.put_in_hands(new_pack) creamer_packs-- + update_appearance(UPDATE_OVERLAYS) ///Updates the smoke state to something else, setting particles if relevant /obj/machinery/coffeemaker/proc/toggle_steam() @@ -330,7 +417,7 @@ /obj/machinery/coffeemaker/proc/brew() power_change() - if(!coffeepot || machine_stat & (NOPOWER|BROKEN) || coffeepot.reagents.total_volume >= coffeepot.reagents.maximum_volume) + if(!try_brew()) return operate_for(brew_time) coffeepot.reagents.add_reagent_list(cartridge.drink_type) @@ -408,3 +495,244 @@ . = ..() atom_storage.max_slots = 4 atom_storage.set_holdable(list(/obj/item/coffee_cartridge)) + +/* + * impressa coffee maker + * its supposed to be a premium line product, so its cargo-only, the board cant be therefore researched + */ + +/obj/machinery/coffeemaker/impressa + name = "impressa coffeemaker" + desc = "An industry-grade Impressa Modello 5 Coffeemaker of the Piccionaia Home Appliances premium coffeemakers product line. Makes coffee from fresh dried whole beans." + icon = 'icons/obj/machines/coffeemaker.dmi' + icon_state = "coffeemaker_impressa" + circuit = /obj/item/circuitboard/machine/coffeemaker/impressa + initial_cartridge = null //no cartridge, just coffee beans + brew_time = 15 SECONDS //industrial grade, its faster than the regular one + density = TRUE + pass_flags = PASSTABLE + /// Current amount of coffee beans stored + var/coffee_amount = 0 + /// List of coffee bean objects are stored + var/list/coffee = list() + +/obj/machinery/coffeemaker/impressa/Initialize(mapload) + . = ..() + if(mapload) + coffeepot = new /obj/item/reagent_containers/cup/coffeepot(src) + cartridge = null + +/obj/machinery/coffeemaker/impressa/Destroy() + QDEL_NULL(coffeepot) + QDEL_NULL(coffee) + return ..() + +/obj/machinery/coffeemaker/impressa/Exited(atom/movable/gone, direction) + if(gone == coffeepot) + coffeepot = null + if(gone == coffee) + coffee = null + return ..() + +/obj/machinery/coffeemaker/impressa/examine(mob/user) + . = ..() + if(coffee) + . += span_notice("The internal grinder contains [coffee.len] scoop\s of coffee beans") + +/obj/machinery/coffeemaker/impressa/update_overlays() + . = ..() + . += overlay_checks() + +/obj/machinery/coffeemaker/impressa/overlay_checks() + . = list() + if(coffeepot) + if(coffeepot.reagents.total_volume > 0) + . += "pot_full" + else + . += "pot_empty" + if(coffee_cups > 0) + if(coffee_cups >= max_coffee_cups/3) + if(coffee_cups > max_coffee_cups/1.5) + . += "cups_3" + else + . += "cups_2" + else + . += "cups_1" + if(sugar_packs) + . += "extras_1" + if(creamer_packs) + . += "extras_2" + if(sweetener_packs) + . += "extras_3" + if(coffee_amount) + if(coffee_amount < 0.7*BEAN_CAPACITY) + . += "grinder_half" + else + . += "grinder_full" + return . + +/obj/machinery/coffeemaker/impressa/handle_atom_del(atom/A) + . = ..() + if(A == coffeepot) + coffeepot = null + if(A == coffee) + coffee.Cut() + update_appearance(UPDATE_OVERLAYS) + +/obj/machinery/coffeemaker/impressa/try_brew() + if(coffee_amount <= 0) + balloon_alert_to_viewers("no coffee beans added!") + return FALSE + if(!coffeepot) + balloon_alert_to_viewers("no coffeepot inside!") + return FALSE + if(machine_stat & (NOPOWER|BROKEN) ) + balloon_alert_to_viewers("machine unpowered!") + return FALSE + if(coffeepot.reagents.total_volume >= coffeepot.reagents.maximum_volume) + balloon_alert_to_viewers("the coffeepot is already full!") + return FALSE + return TRUE + +/obj/machinery/coffeemaker/impressa/attackby(obj/item/attack_item, mob/living/user, params) + //You can only screw open empty grinder + if(!coffeepot && default_deconstruction_screwdriver(user, icon_state, icon_state, attack_item)) + return + + if(default_deconstruction_crowbar(attack_item)) + return + + if(panel_open) //Can't insert objects when its screwed open + return TRUE + + if (istype(attack_item, /obj/item/reagent_containers/cup/coffeepot) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) + var/obj/item/reagent_containers/cup/coffeepot/new_pot = attack_item + if(!user.transferItemToLoc(new_pot, src)) + return TRUE + replace_pot(user, new_pot) + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/cup/glass/coffee) && !(attack_item.item_flags & ABSTRACT) && attack_item.is_open_container()) + var/obj/item/reagent_containers/cup/glass/coffee/new_cup = attack_item //different type of cup + if(new_cup.reagents.total_volume > 0 ) + balloon_alert(user, "the cup must be empty!") + return + if(coffee_cups >= max_coffee_cups) + balloon_alert(user, "the cup holder is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + coffee_cups++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/sugar)) + var/obj/item/reagent_containers/condiment/pack/sugar/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + if(sugar_packs >= max_sugar_packs) + balloon_alert(user, "the sugar compartment is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + sugar_packs++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/creamer)) + var/obj/item/reagent_containers/condiment/creamer/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + if(creamer_packs >= max_creamer_packs) + balloon_alert(user, "the creamer compartment is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + creamer_packs++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/reagent_containers/condiment/pack/astrotame)) + var/obj/item/reagent_containers/condiment/pack/astrotame/new_pack = attack_item + if(new_pack.reagents.total_volume < new_pack.reagents.maximum_volume) + balloon_alert(user, "the pack must be full!") + return + if(sweetener_packs >= max_sweetener_packs) + balloon_alert(user, "the sweetener compartment is full!") + return + if(!user.transferItemToLoc(attack_item, src)) + return + sweetener_packs++ + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + + if (istype(attack_item, /obj/item/food/grown/coffee) && !(attack_item.item_flags & ABSTRACT)) + if(coffee_amount >= BEAN_CAPACITY) + balloon_alert(user, "the coffee container is full!") + return + if(!HAS_TRAIT(attack_item, TRAIT_DRIED)) + balloon_alert(user, "coffee beans must be dry!") + return + var/obj/item/food/grown/coffee/new_coffee = attack_item + if(!user.transferItemToLoc(new_coffee, src)) + return + coffee += new_coffee + coffee_amount++ + balloon_alert(user, "added coffee") + + + if (istype(attack_item, /obj/item/storage/box/coffeepack)) + if(coffee_amount >= BEAN_CAPACITY) + balloon_alert(user, "the coffee container is full!") + return + var/obj/item/storage/box/coffeepack/new_coffee_pack = attack_item + for(var/obj/item/food/grown/coffee/new_coffee in new_coffee_pack.contents) + if(HAS_TRAIT(new_coffee, TRAIT_DRIED)) //the coffee beans inside must be dry + if(coffee_amount < BEAN_CAPACITY) + if(user.transferItemToLoc(new_coffee, src)) + coffee += new_coffee + coffee_amount++ + new_coffee.forceMove(src) + balloon_alert(user, "added coffee") + update_appearance(UPDATE_OVERLAYS) + else + return + else + return + else + balloon_alert(user, "non-dried beans inside of coffee pack!") + return + + update_appearance(UPDATE_OVERLAYS) + return TRUE //no afterattack + +/obj/machinery/coffeemaker/impressa/take_cup(mob/user) + if(!coffee_cups) //shouldn't happen, but we all know how stuff manages to break + balloon_alert("no cups left!") + return + balloon_alert_to_viewers("took cup") + var/obj/item/reagent_containers/cup/glass/coffee/no_lid/new_cup = new(get_turf(src)) + user.put_in_hands(new_cup) + coffee_cups-- + update_appearance(UPDATE_OVERLAYS) + +/obj/machinery/coffeemaker/impressa/toggle_steam() + QDEL_NULL(particles) + if(brewing) + particles = new /particles/smoke/steam/mild() + particles.position = list(-2, 1, 0) + +/obj/machinery/coffeemaker/impressa/brew() + power_change() + if(!try_brew()) + return + operate_for(brew_time) + coffeepot.reagents.add_reagent_list(list(/datum/reagent/consumable/coffee = 120)) + coffee.Cut(1,2) //remove the first item from the list + coffee_amount-- + update_appearance(UPDATE_OVERLAYS) + +#undef BEAN_CAPACITY diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm index a7ed1fb2d71..b472bedd70f 100644 --- a/code/modules/reagents/reagent_containers/condiment.dm +++ b/code/modules/reagents/reagent_containers/condiment.dm @@ -299,6 +299,22 @@ list_reagents = list(/datum/reagent/consumable/cherryjelly = 50) fill_icon_thresholds = null +//technically condiment packs but they are non transparent + +/obj/item/reagent_containers/condiment/creamer + name = "coffee creamer pack" + desc = "Better not think about what they're making this from." + icon_state = "condi_creamer" + volume = 5 + list_reagents = list(/datum/reagent/consumable/creamer = 5) + fill_icon_thresholds = null + +/obj/item/reagent_containers/condiment/chocolate + name = "chocolate sprinkle pack" + desc= "The amount of sugar thats already there wasn't enough for you?" + icon_state = "condi_chocolate" + list_reagents = list(/datum/reagent/consumable/choccyshake = 10) + //Food packs. To easily apply deadly toxi... delicious sauces to your food! /obj/item/reagent_containers/condiment/pack @@ -395,6 +411,7 @@ /obj/item/reagent_containers/condiment/pack/astrotame name = "astrotame pack" originalname = "astrotame" + volume = 5 list_reagents = list(/datum/reagent/consumable/astrotame = 5) /obj/item/reagent_containers/condiment/pack/bbqsauce @@ -405,9 +422,11 @@ /obj/item/reagent_containers/condiment/pack/creamer name = "creamer pack" originalname = "creamer" - list_reagents = list(/datum/reagent/consumable/creamer = 5) + volume = 5 + list_reagents = list(/datum/reagent/consumable/cream = 5) /obj/item/reagent_containers/condiment/pack/sugar name = "sugar pack" originalname = "sugar" + volume = 5 list_reagents = list(/datum/reagent/consumable/sugar = 5) diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index fb162318341..ad9587d1b93 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -495,7 +495,7 @@ volume = 120 icon_state = "coffeepot" fill_icon_state = "coffeepot" - fill_icon_thresholds = list(0, 1, 40, 80, 120) + fill_icon_thresholds = list(0, 1, 30, 60, 100) /obj/item/reagent_containers/cup/coffeepot/bluespace name = "bluespace coffeepot" diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index bd7e3111b9f..eae5ba85dfb 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -457,3 +457,103 @@ name = "bottle of caramel" desc = "A bottle containing caramalized sugar, also known as caramel. Do not lick." list_reagents = list(/datum/reagent/consumable/caramel = 30) + +/* + * Syrup bottles, basically a unspillable cup that transfers reagents upon clicking on it with a cup + */ + +/obj/item/reagent_containers/cup/bottle/syrup_bottle + name = "syrup bottle" + desc = "A bottle with a syrup pump to dispense the delicious substance directly into your coffee cup." + icon = 'icons/obj/food/containers.dmi' + icon_state = "syrup" + fill_icon_state = "syrup" + fill_icon_thresholds = list(0, 20, 40, 60, 80, 100) + possible_transfer_amounts = list(5, 10) + volume = 50 + amount_per_transfer_from_this = 5 + spillable = FALSE + ///variable to tell if the bottle can be refilled + var/cap_on = TRUE + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/examine(mob/user) + . = ..() + . += span_notice("Alt-click to toggle the pump cap.") + . += span_notice("Use a pen on it to rename it.") + return + +//when you attack the syrup bottle with a container it refills it +/obj/item/reagent_containers/cup/bottle/syrup_bottle/attackby(obj/item/attacking_item, mob/user, params) + + if(!cap_on) + return ..() + + if(!check_allowed_items(attacking_item,target_self = TRUE)) + return + + if(attacking_item.is_refillable()) + if(!reagents.total_volume) + balloon_alert(user, "bottle empty!") + return TRUE + + if(attacking_item.reagents.holder_full()) + balloon_alert(user, "container full!") + return TRUE + + var/transfer_amount = reagents.trans_to(attacking_item, amount_per_transfer_from_this, transfered_by = user) + balloon_alert(user, "transferred [transfer_amount] unit\s") + flick("syrup_anim",src) + + if(istype(attacking_item, /obj/item/pen)) + rename(user, attacking_item) + + attacking_item.update_appearance() + update_appearance() + + return TRUE + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/AltClick(mob/user) + cap_on = !cap_on + if(!cap_on) + icon_state = "syrup_open" + balloon_alert(user, "removed pump cap") + else + icon_state = "syrup" + balloon_alert(user, "put pump cap on") + update_icon_state() + return ..() + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/proc/rename(mob/user, obj/item/writing_instrument) + if(!user.can_write(writing_instrument)) + return + + var/inputvalue = tgui_input_text(user, "What would you like to label the syrup bottle?", "Syrup Bottle Labelling", max_length = MAX_NAME_LEN) + + if(!inputvalue) + return + + if(user.canUseTopic(src, be_close = TRUE)) + name = "[(inputvalue ? "[inputvalue]" : null)] bottle" + +//types of syrups + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel + name = "bottle of caramel syrup" + desc = "A pump bottle containing caramalized sugar, also known as caramel. Do not lick." + list_reagents = list(/datum/reagent/consumable/caramel = 50) + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur + name = "bottle of coffee liqueur syrup" + desc = "A pump bottle containing mexican coffee-flavoured liqueur syrup. In production since 1936, HONK." + list_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 50) + +/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar + name = "bottle of korta syrup" + desc = "A pump bottle containing korta syrup. A sweet, sugary substance made from crushed sweet korta nuts." + list_reagents = list(/datum/reagent/consumable/korta_nectar = 50) + +//secret syrup +/obj/item/reagent_containers/cup/bottle/syrup_bottle/laughsyrup + name = "bottle of laugh syrup" + desc = "A pump bottle containing laugh syrup. The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!" + list_reagents = list(/datum/reagent/consumable/laughsyrup = 50) diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index 4b0d91b03ce..558208cd444 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -102,6 +102,28 @@ resistance_flags = FREEZE_PROOF isGlass = FALSE drink_type = BREAKFAST + var/lid_open = 0 + +/obj/item/reagent_containers/cup/glass/coffee/no_lid + icon_state = "coffee_empty" + list_reagents = null + +/obj/item/reagent_containers/cup/glass/coffee/examine(mob/user) + . = ..() + . += span_notice("Alt-click to toggle cup lid.") + return + +/obj/item/reagent_containers/cup/glass/coffee/AltClick(mob/user) + lid_open = !lid_open + update_icon_state() + return ..() + +/obj/item/reagent_containers/cup/glass/coffee/update_icon_state() + if(lid_open) + icon_state = reagents.total_volume ? "coffee_full" : "coffee_empty" + else + icon_state = "coffee" + return ..() /obj/item/reagent_containers/cup/glass/ice name = "ice cup" diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index ae669cdfae6..7816b2376fa 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -953,3 +953,14 @@ RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE + +/datum/design/syrup_bottle + name = "Syrup bottle" + id = "syrup_bottle" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/plastic = 1000) + build_path = /obj/item/reagent_containers/cup/bottle/syrup_bottle + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 5b4216134d6..2c57e7deb7c 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -110,6 +110,7 @@ "spoon", "status_display_frame", "sticky_tape", + "syrup_bottle", "tablet", "tape", "tech_disk", diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index f30c61a06b6..73eda87f7c6 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 9e12622ce41..d982f371405 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index aadc3f5c09b..afb4931b186 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/machines/coffeemaker.dmi b/icons/obj/machines/coffeemaker.dmi new file mode 100644 index 00000000000..13bf70c93fe Binary files /dev/null and b/icons/obj/machines/coffeemaker.dmi differ diff --git a/icons/obj/medical/chemical.dmi b/icons/obj/medical/chemical.dmi index bbe1122ac3f..fd31dd7880a 100644 Binary files a/icons/obj/medical/chemical.dmi and b/icons/obj/medical/chemical.dmi differ diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi index f996c662654..57fc8c9eace 100644 Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ