Refactors bar drink icons into datum singletons / unit tests them (#71810)
## About The Pull Request - Refactors bar drink icons. - Juice boxes no longer have a hard-coded list of a bunch of reagent types in their update state, and use a system similar to bar drinks. - Glass and shot glass icon information are no longer stored on the drink. Instead, they are now stored in glass style datums. These datums store name, description, icon, and icon state of a certain container + reagent type. - Glass styles are applied via the `takes_reagent_appearance` component. Glasses, shot glasses, and juice boxes have this component. - This comes with support for being able to have drink icons from different files, rather than requiring the drinks DMI. - The britmug is now a subtype of mug. - 1 new icon: britmug filled. - Various small code clean-up around drink reagents. - Unit tests icon state setups for glass styles as well as all `/drink` reagent container subtypes. - Splits up the massive `drinks.dmi` into separate files. *Disclaimer: Much of the drinking glass datums were written via script automatically, so there may be errors present.* ## Why It's Good For The Game - Much easier to add new drink styles, much more modular. - It is no longer necessary for new drinks to be added to the massive `drinks.dmi`. People working with drinks in the future can simply add their glass style datum and point it to their file wherever it may be. - Expandable system. Adding a new type of reagent container that works similarly to bar drinks but for different types of icons is a breeze. - Ensures going forward no bar drinks have invisible sprites. ## Changelog 🆑 Melbert refactor: Refactored how bar drinks set their icons. Juice boxes now use the same system. /🆑
@@ -339,7 +339,7 @@
|
||||
/area/awaymission/cabin)
|
||||
"bc" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/reagent_containers/cup/glass/britcup,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup,
|
||||
/turf/open/floor/carpet,
|
||||
/area/awaymission/cabin)
|
||||
"bd" = (
|
||||
|
||||
@@ -2442,6 +2442,27 @@
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/theater)
|
||||
"aBF" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/newscaster/directional/east,
|
||||
/obj/effect/spawner/random/structure/table_fancy,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/beer{
|
||||
desc = "Whatever it is, it reeks of foul, putrid froth.";
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 15);
|
||||
name = "Delta-Down";
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
|
||||
pixel_x = -3;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
|
||||
pixel_x = -6;
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/commons/dorms)
|
||||
"aBL" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -15161,18 +15182,6 @@
|
||||
/obj/item/clothing/mask/breath,
|
||||
/turf/open/floor/iron/dark/textured_large,
|
||||
/area/station/engineering/atmos/storage/gas)
|
||||
"dDe" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/toy/figure/engineer{
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/item/toy/figure/atmos{
|
||||
pixel_x = 6
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/engineering/break_room)
|
||||
"dDk" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -27025,30 +27034,6 @@
|
||||
/obj/effect/spawner/random/food_or_drink/donkpockets,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/department/security)
|
||||
"gxk" = (
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/pen{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/britcup{
|
||||
pixel_x = 6;
|
||||
pixel_y = -4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/structure/extinguisher_cabinet/directional/west,
|
||||
/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"gxv" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/restraints/handcuffs,
|
||||
@@ -45886,6 +45871,30 @@
|
||||
/obj/machinery/status_display/ai/directional/north,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/prison/safe)
|
||||
"lde" = (
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/pen{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = 6;
|
||||
pixel_y = -4
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/structure/extinguisher_cabinet/directional/west,
|
||||
/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"ldh" = (
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/obj/machinery/atmospherics/pipe/bridge_pipe/scrubbers/visible,
|
||||
@@ -50584,6 +50593,23 @@
|
||||
/obj/machinery/light/directional/north,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/main)
|
||||
"mnh" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/airalarm/directional/north,
|
||||
/obj/effect/spawner/random/entertainment/cigarette_pack{
|
||||
pixel_x = 3;
|
||||
pixel_y = 2
|
||||
},
|
||||
/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)
|
||||
"mnz" = (
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
@@ -51573,6 +51599,18 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/command/corporate_showroom)
|
||||
"mzO" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/toy/figure/engineer{
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/item/toy/figure/atmos{
|
||||
pixel_x = 6
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/engineering/break_room)
|
||||
"mzV" = (
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/obj/effect/turf_decal/bot,
|
||||
@@ -65562,6 +65600,11 @@
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/kitchen/abandoned)
|
||||
"pXB" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/coffeemaker/impressa,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/engineering/break_room)
|
||||
"pXK" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -79628,27 +79671,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/medical/morgue)
|
||||
"twv" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/newscaster/directional/east,
|
||||
/obj/effect/spawner/random/structure/table_fancy,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/beer{
|
||||
desc = "Whatever it is, it reeks of foul, putrid froth.";
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 15);
|
||||
name = "Delta-Down";
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
|
||||
pixel_x = -3;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{
|
||||
pixel_x = -6;
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/commons/dorms)
|
||||
"tww" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
@@ -82157,23 +82179,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/engineering/atmos)
|
||||
"ubg" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/airalarm/directional/north,
|
||||
/obj/effect/spawner/random/entertainment/cigarette_pack{
|
||||
pixel_x = 3;
|
||||
pixel_y = 2
|
||||
},
|
||||
/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)
|
||||
"ubk" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -92832,11 +92837,6 @@
|
||||
/obj/effect/turf_decal/trimline/yellow/warning,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos/project)
|
||||
"wBr" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/coffeemaker/impressa,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/engineering/break_room)
|
||||
"wBB" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/disposalpipe/junction/yjunction{
|
||||
@@ -122009,7 +122009,7 @@ tsB
|
||||
sch
|
||||
cKK
|
||||
vQj
|
||||
dDe
|
||||
mzO
|
||||
agA
|
||||
hHJ
|
||||
tgl
|
||||
@@ -122266,7 +122266,7 @@ lKe
|
||||
nZW
|
||||
qAz
|
||||
vQj
|
||||
ubg
|
||||
mnh
|
||||
agA
|
||||
uzb
|
||||
jLx
|
||||
@@ -122523,7 +122523,7 @@ ciD
|
||||
vYI
|
||||
lpv
|
||||
vQj
|
||||
wBr
|
||||
pXB
|
||||
gsf
|
||||
miE
|
||||
tgl
|
||||
@@ -139717,7 +139717,7 @@ xeH
|
||||
qAV
|
||||
xYZ
|
||||
vGf
|
||||
gxk
|
||||
lde
|
||||
cAw
|
||||
sJd
|
||||
khn
|
||||
@@ -152365,7 +152365,7 @@ aaa
|
||||
aad
|
||||
vop
|
||||
qqe
|
||||
twv
|
||||
aBF
|
||||
yaI
|
||||
fNn
|
||||
uEo
|
||||
|
||||
@@ -749,18 +749,6 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/mine/laborcamp)
|
||||
"aoI" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/phone{
|
||||
pixel_x = -5;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/britcup{
|
||||
pixel_x = 8;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/station/commons/vacant_room/office)
|
||||
"aoK" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/toy/cards/deck,
|
||||
@@ -1729,10 +1717,6 @@
|
||||
/obj/machinery/light/small/directional/east,
|
||||
/turf/open/floor/iron/cafeteria,
|
||||
/area/station/commons/dorms/laundry)
|
||||
"aDG" = (
|
||||
/obj/machinery/vending/cart,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"aDI" = (
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
@@ -3022,14 +3006,6 @@
|
||||
dir = 9
|
||||
},
|
||||
/area/station/science/lab)
|
||||
"aWP" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/camera/autoname/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"aWS" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/box/donkpockets/donkpocketberry,
|
||||
@@ -3754,6 +3730,11 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/virology)
|
||||
"bhK" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/folder/blue,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"bie" = (
|
||||
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
|
||||
dir = 4
|
||||
@@ -5306,6 +5287,12 @@
|
||||
},
|
||||
/turf/open/openspace/icemoon/keep_below,
|
||||
/area/icemoon/underground/explored)
|
||||
"bDR" = (
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"bDX" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/plasma,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible,
|
||||
@@ -6542,13 +6529,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"bWA" = (
|
||||
/obj/structure/closet/secure_closet/hop,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"bWB" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
@@ -6847,32 +6827,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/construction/mining/aux_base)
|
||||
"caA" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/button/flasher{
|
||||
pixel_y = -32;
|
||||
id = "hopflash"
|
||||
},
|
||||
/obj/machinery/button/door/directional/south{
|
||||
pixel_x = -8;
|
||||
req_access = list("hop");
|
||||
id = "hopqueue";
|
||||
name = "Queue Shutters Control"
|
||||
},
|
||||
/obj/machinery/button/door/directional/south{
|
||||
pixel_y = -24;
|
||||
pixel_x = 8;
|
||||
name = "Privacy Shutters Control";
|
||||
req_access = list("hop");
|
||||
id = "hop"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"caC" = (
|
||||
/obj/machinery/door/window/right/directional/south{
|
||||
dir = 8;
|
||||
@@ -7317,6 +7271,10 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"cgC" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"cgR" = (
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 8
|
||||
@@ -7979,10 +7937,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/atmos)
|
||||
"cqQ" = (
|
||||
/obj/effect/mapping_helpers/ianbirthday,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"crg" = (
|
||||
/obj/machinery/door/morgue{
|
||||
name = "Confession Booth"
|
||||
@@ -10108,14 +10062,6 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/security/prison/garden)
|
||||
"cXE" = (
|
||||
/obj/structure/bed/dogbed/ian,
|
||||
/mob/living/basic/pet/dog/corgi/ian{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"cXV" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/trimline/dark_red/filled/line{
|
||||
@@ -10435,32 +10381,6 @@
|
||||
/obj/effect/spawner/random/structure/grille,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/security/prison/safe)
|
||||
"dbP" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/window/left/directional/north{
|
||||
dir = 8;
|
||||
name = "Reception Window"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 8;
|
||||
id = "hop";
|
||||
name = "Privacy Shutters"
|
||||
},
|
||||
/obj/structure/desk_bell{
|
||||
pixel_x = 7
|
||||
},
|
||||
/obj/machinery/door/window/brigdoor{
|
||||
base_state = "rightsecure";
|
||||
dir = 4;
|
||||
icon_state = "rightsecure";
|
||||
name = "Head of Personnel's Desk";
|
||||
req_access = list("hop")
|
||||
},
|
||||
/obj/machinery/flasher/directional/south{
|
||||
pixel_y = -23
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"dcd" = (
|
||||
/obj/structure/ladder,
|
||||
/turf/open/floor/plating,
|
||||
@@ -14481,10 +14401,6 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/explab)
|
||||
"epW" = (
|
||||
/obj/machinery/pdapainter,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"epX" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/toy/cards/deck{
|
||||
@@ -15144,6 +15060,12 @@
|
||||
/obj/effect/mapping_helpers/airlock/unres,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/starboard/fore)
|
||||
"eAV" = (
|
||||
/obj/machinery/light/directional/south,
|
||||
/obj/effect/mapping_helpers/trapdoor_placer,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"eBa" = (
|
||||
/obj/effect/turf_decal/siding/white,
|
||||
/turf/open/floor/iron/white/smooth_large,
|
||||
@@ -16567,6 +16489,16 @@
|
||||
/obj/item/ai_module/reset,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/storage/tech)
|
||||
"eWc" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/light_switch/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"eWh" = (
|
||||
/obj/machinery/door/window/left/directional/north{
|
||||
base_state = "right";
|
||||
@@ -18966,6 +18898,16 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/atmos,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/atmos)
|
||||
"fJl" = (
|
||||
/obj/machinery/computer/accounting{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"fJm" = (
|
||||
/obj/structure/railing{
|
||||
dir = 8
|
||||
@@ -21732,6 +21674,14 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/mine/storage)
|
||||
"gCn" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/light_switch/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"gCu" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/turf/open/floor/plating,
|
||||
@@ -21786,11 +21736,6 @@
|
||||
/obj/effect/mapping_helpers/burnt_floor,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/fore)
|
||||
"gDJ" = (
|
||||
/obj/machinery/bluespace_vendor/directional/north,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"gDO" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -24235,6 +24180,14 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/ai_monitored/turret_protected/aisat/service)
|
||||
"hsi" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/obj/machinery/light/directional/east,
|
||||
/obj/structure/sign/warning/electric_shock/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"hsl" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
@@ -24588,12 +24541,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/bar)
|
||||
"hxh" = (
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"hxs" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -25119,14 +25066,6 @@
|
||||
/obj/machinery/duct,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"hGL" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/obj/machinery/light/directional/east,
|
||||
/obj/structure/sign/warning/electric_shock/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"hHb" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/ai_monitored/turret_protected/aisat/hallway)
|
||||
@@ -25843,11 +25782,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/chemistry)
|
||||
"hTb" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/folder/blue,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"hTm" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/machinery/meter,
|
||||
@@ -26155,6 +26089,13 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed/icemoon,
|
||||
/area/icemoon/underground/explored)
|
||||
"hYW" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"hZe" = (
|
||||
/obj/effect/turf_decal/trimline/yellow/warning{
|
||||
dir = 1
|
||||
@@ -26236,6 +26177,14 @@
|
||||
/obj/machinery/light/small/directional/north,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/storage/tech)
|
||||
"iaS" = (
|
||||
/obj/machinery/modular_computer/console/preset/id,
|
||||
/obj/item/paper/fluff/ids_for_dummies,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"iaT" = (
|
||||
/obj/effect/spawner/random/trash/mess,
|
||||
/turf/open/floor/plating,
|
||||
@@ -27409,6 +27358,32 @@
|
||||
dir = 8
|
||||
},
|
||||
/area/station/service/chapel)
|
||||
"isa" = (
|
||||
/obj/structure/chair/office{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/button/flasher{
|
||||
pixel_y = -32;
|
||||
id = "hopflash"
|
||||
},
|
||||
/obj/machinery/button/door/directional/south{
|
||||
pixel_x = -8;
|
||||
req_access = list("hop");
|
||||
id = "hopqueue";
|
||||
name = "Queue Shutters Control"
|
||||
},
|
||||
/obj/machinery/button/door/directional/south{
|
||||
pixel_y = -24;
|
||||
pixel_x = 8;
|
||||
name = "Privacy Shutters Control";
|
||||
req_access = list("hop");
|
||||
id = "hop"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"isb" = (
|
||||
/obj/machinery/atmospherics/components/binary/pump/off{
|
||||
dir = 1;
|
||||
@@ -29638,6 +29613,10 @@
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/rd)
|
||||
"jaq" = (
|
||||
/obj/effect/landmark/start/head_of_personnel,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"jaw" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -30265,6 +30244,17 @@
|
||||
/obj/effect/landmark/blobstart,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/explab)
|
||||
"jkQ" = (
|
||||
/obj/machinery/requests_console/directional/south{
|
||||
announcementConsole = 1;
|
||||
anon_tips_receiver = 1;
|
||||
assistance_requestable = 1;
|
||||
department = "Head of Personnel's Desk";
|
||||
departmentType = 5;
|
||||
name = "Head of Personnel's Requests Console"
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"jkS" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible,
|
||||
@@ -37032,12 +37022,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
/area/mine/laborcamp)
|
||||
"lmL" = (
|
||||
/obj/machinery/light/directional/south,
|
||||
/obj/effect/mapping_helpers/trapdoor_placer,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"lmM" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
|
||||
dir = 8
|
||||
@@ -39891,11 +39875,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark/textured_edge,
|
||||
/area/station/security/prison)
|
||||
"mlY" = (
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/machinery/photocopier,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"mmh" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
|
||||
dir = 1
|
||||
@@ -40026,17 +40005,6 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/genetics)
|
||||
"moA" = (
|
||||
/obj/machinery/requests_console/directional/south{
|
||||
announcementConsole = 1;
|
||||
anon_tips_receiver = 1;
|
||||
assistance_requestable = 1;
|
||||
department = "Head of Personnel's Desk";
|
||||
departmentType = 5;
|
||||
name = "Head of Personnel's Requests Console"
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"moB" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -40782,16 +40750,6 @@
|
||||
/obj/structure/extinguisher_cabinet/directional/south,
|
||||
/turf/open/floor/iron/smooth,
|
||||
/area/station/security/execution/transfer)
|
||||
"mBq" = (
|
||||
/obj/machinery/computer/cargo{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/keycard_auth/directional/west,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"mBB" = (
|
||||
/obj/machinery/door/poddoor/preopen{
|
||||
id = "ceprivacy";
|
||||
@@ -41347,6 +41305,32 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible,
|
||||
/turf/open/floor/engine,
|
||||
/area/station/engineering/supermatter/room)
|
||||
"mLX" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/window/left/directional/north{
|
||||
dir = 8;
|
||||
name = "Reception Window"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 8;
|
||||
id = "hop";
|
||||
name = "Privacy Shutters"
|
||||
},
|
||||
/obj/structure/desk_bell{
|
||||
pixel_x = 7
|
||||
},
|
||||
/obj/machinery/door/window/brigdoor{
|
||||
base_state = "rightsecure";
|
||||
dir = 4;
|
||||
icon_state = "rightsecure";
|
||||
name = "Head of Personnel's Desk";
|
||||
req_access = list("hop")
|
||||
},
|
||||
/obj/machinery/flasher/directional/south{
|
||||
pixel_y = -23
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"mMa" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -43224,6 +43208,10 @@
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/mine/laborcamp)
|
||||
"nnR" = (
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"noi" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
@@ -43417,6 +43405,17 @@
|
||||
dir = 10
|
||||
},
|
||||
/area/station/science/research)
|
||||
"nqU" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 8;
|
||||
id = "hopqueue";
|
||||
name = "HoP Queue Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"nqX" = (
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible,
|
||||
@@ -43847,6 +43846,13 @@
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/aft)
|
||||
"nyy" = (
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"nyA" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/simple/orange/visible{
|
||||
dir = 4
|
||||
@@ -49198,19 +49204,6 @@
|
||||
/obj/item/coin/silver,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/dorms)
|
||||
"pcP" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/table,
|
||||
/obj/item/trapdoor_remote/preloaded{
|
||||
pixel_x = -5;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/machinery/recharger{
|
||||
pixel_x = 5;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"pdc" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
@@ -49297,6 +49290,10 @@
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/commons/dorms)
|
||||
"pec" = (
|
||||
/obj/machinery/vending/cart,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"pee" = (
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
dir = 4
|
||||
@@ -50047,14 +50044,6 @@
|
||||
"prg" = (
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/library)
|
||||
"prk" = (
|
||||
/obj/machinery/modular_computer/console/preset/id,
|
||||
/obj/item/paper/fluff/ids_for_dummies,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"pry" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -53209,6 +53198,11 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/storage)
|
||||
"qrJ" = (
|
||||
/obj/machinery/ticket_machine/directional/east,
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"qsd" = (
|
||||
/obj/structure/sign/warning/secure_area/directional/west,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -56902,17 +56896,10 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/mine/laborcamp/security)
|
||||
"rAs" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 8;
|
||||
id = "hopqueue";
|
||||
name = "HoP Queue Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 4
|
||||
},
|
||||
"rAA" = (
|
||||
/obj/machinery/pdapainter,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"rAC" = (
|
||||
/obj/structure/chair,
|
||||
/obj/effect/landmark/start/hangover,
|
||||
@@ -58377,16 +58364,6 @@
|
||||
dir = 8
|
||||
},
|
||||
/area/mine/living_quarters)
|
||||
"rYA" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/light_switch/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"rYB" = (
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 4
|
||||
@@ -58518,6 +58495,11 @@
|
||||
},
|
||||
/turf/open/misc/asteroid/snow/icemoon,
|
||||
/area/icemoon/underground/explored)
|
||||
"sbi" = (
|
||||
/obj/machinery/newscaster/directional/north,
|
||||
/obj/machinery/photocopier,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"sby" = (
|
||||
/obj/effect/turf_decal/trimline/red/filled/line{
|
||||
dir = 1
|
||||
@@ -59321,13 +59303,6 @@
|
||||
/obj/structure/sign/warning/fire/directional/north,
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/station/science/ordnance/office)
|
||||
"soc" = (
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"soe" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -60498,6 +60473,18 @@
|
||||
/obj/effect/turf_decal/tile/blue/full,
|
||||
/turf/open/floor/iron/large,
|
||||
/area/station/medical/treatment_center)
|
||||
"sEM" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/phone{
|
||||
pixel_x = -5;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = 8;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/station/commons/vacant_room/office)
|
||||
"sEU" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -60545,10 +60532,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/mine/production)
|
||||
"sFy" = (
|
||||
/obj/effect/landmark/start/head_of_personnel,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"sFA" = (
|
||||
/obj/machinery/sparker/directional/west{
|
||||
id = "testigniter"
|
||||
@@ -60652,10 +60635,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/engineering/supermatter/room)
|
||||
"sGP" = (
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"sGV" = (
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
@@ -60964,14 +60943,6 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/security/prison)
|
||||
"sMw" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/light_switch/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"sMD" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
@@ -62779,16 +62750,6 @@
|
||||
/obj/machinery/door/airlock/freezer,
|
||||
/turf/open/floor/iron/showroomfloor,
|
||||
/area/station/security/prison/mess)
|
||||
"ttm" = (
|
||||
/obj/machinery/computer/accounting{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"ttv" = (
|
||||
/obj/structure/sign/painting/library{
|
||||
pixel_y = 32
|
||||
@@ -62890,6 +62851,19 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/service)
|
||||
"tuz" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/table,
|
||||
/obj/item/trapdoor_remote/preloaded{
|
||||
pixel_x = -5;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/machinery/recharger{
|
||||
pixel_x = 5;
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"tuH" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -63257,6 +63231,13 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/commons/storage/mining)
|
||||
"tAk" = (
|
||||
/obj/structure/closet/secure_closet/hop,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"tAx" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/warning,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -65365,13 +65346,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/iron/showroomfloor,
|
||||
/area/station/engineering/atmos)
|
||||
"ugW" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"uhk" = (
|
||||
/obj/structure/beebox,
|
||||
/turf/open/floor/grass,
|
||||
@@ -67169,12 +67143,6 @@
|
||||
/obj/effect/spawner/structure/window/reinforced/plasma,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/engineering/supermatter)
|
||||
"uLl" = (
|
||||
/obj/effect/turf_decal/tile/red/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"uLo" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
@@ -67200,6 +67168,12 @@
|
||||
/obj/structure/sign/warning/secure_area,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/engineering/storage_shared)
|
||||
"uLC" = (
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"uLF" = (
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/security/processing)
|
||||
@@ -68514,10 +68488,6 @@
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/turf/open/floor/iron,
|
||||
/area/mine/eva/lower)
|
||||
"viC" = (
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"viH" = (
|
||||
/obj/machinery/power/emitter/welded{
|
||||
dir = 4
|
||||
@@ -70224,11 +70194,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/xenobiology)
|
||||
"vHv" = (
|
||||
/obj/machinery/ticket_machine/directional/east,
|
||||
/obj/effect/turf_decal/tile/blue,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"vHA" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
@@ -72033,6 +71998,16 @@
|
||||
/obj/effect/turf_decal/tile/dark_green,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/turret_protected/ai_upload)
|
||||
"wjv" = (
|
||||
/obj/machinery/computer/cargo{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/keycard_auth/directional/west,
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"wjy" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -75934,6 +75909,14 @@
|
||||
/obj/item/stack/sheet/leather,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/starboard/fore)
|
||||
"xpJ" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/camera/autoname/directional/east,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"xpP" = (
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plating,
|
||||
@@ -77297,6 +77280,10 @@
|
||||
},
|
||||
/turf/open/floor/plating/elevatorshaft,
|
||||
/area/mine/storage)
|
||||
"xMQ" = (
|
||||
/obj/effect/mapping_helpers/ianbirthday,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"xMT" = (
|
||||
/turf/closed/wall,
|
||||
/area/station/science/research)
|
||||
@@ -78181,6 +78168,14 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/disposal/incinerator)
|
||||
"ybI" = (
|
||||
/obj/structure/bed/dogbed/ian,
|
||||
/mob/living/basic/pet/dog/corgi/ian{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/hop)
|
||||
"ybN" = (
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
name = "Courtroom"
|
||||
@@ -78316,6 +78311,11 @@
|
||||
"ydI" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"ydT" = (
|
||||
/obj/machinery/bluespace_vendor/directional/north,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/primary/central)
|
||||
"ydU" = (
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 1
|
||||
@@ -224623,7 +224623,7 @@ nwT
|
||||
hkb
|
||||
aaT
|
||||
fFT
|
||||
aoI
|
||||
sEM
|
||||
bPw
|
||||
tKI
|
||||
lgr
|
||||
@@ -234914,14 +234914,14 @@ ljp
|
||||
gHe
|
||||
mVb
|
||||
bep
|
||||
vHv
|
||||
hxh
|
||||
qrJ
|
||||
uLC
|
||||
xzh
|
||||
dnq
|
||||
dnq
|
||||
qcu
|
||||
uLl
|
||||
ugW
|
||||
bDR
|
||||
hYW
|
||||
bep
|
||||
ylU
|
||||
dnq
|
||||
@@ -235172,7 +235172,7 @@ gfb
|
||||
pYB
|
||||
gfb
|
||||
gfb
|
||||
rAs
|
||||
nqU
|
||||
rcE
|
||||
rcE
|
||||
rcE
|
||||
@@ -235429,12 +235429,12 @@ odN
|
||||
iZq
|
||||
dpH
|
||||
gfb
|
||||
gDJ
|
||||
ydT
|
||||
iIA
|
||||
hGL
|
||||
hsi
|
||||
iIA
|
||||
iIA
|
||||
lmL
|
||||
eAV
|
||||
jII
|
||||
okb
|
||||
ylU
|
||||
@@ -235691,7 +235691,7 @@ cpm
|
||||
cpm
|
||||
gtq
|
||||
gtq
|
||||
dbP
|
||||
mLX
|
||||
cpm
|
||||
pzb
|
||||
cRF
|
||||
@@ -235942,13 +235942,13 @@ iYb
|
||||
dkb
|
||||
kmi
|
||||
iYb
|
||||
bWA
|
||||
soc
|
||||
mBq
|
||||
aDG
|
||||
ttm
|
||||
prk
|
||||
caA
|
||||
tAk
|
||||
nyy
|
||||
wjv
|
||||
pec
|
||||
fJl
|
||||
iaS
|
||||
isa
|
||||
cpm
|
||||
dnq
|
||||
ylU
|
||||
@@ -236199,13 +236199,13 @@ iYb
|
||||
txI
|
||||
xvZ
|
||||
iYb
|
||||
mlY
|
||||
sbi
|
||||
jWP
|
||||
ool
|
||||
jRC
|
||||
sGP
|
||||
sFy
|
||||
moA
|
||||
cgC
|
||||
jaq
|
||||
jkQ
|
||||
cpm
|
||||
gQZ
|
||||
ylU
|
||||
@@ -236457,12 +236457,12 @@ iYb
|
||||
iYb
|
||||
iYb
|
||||
rpu
|
||||
cXE
|
||||
viC
|
||||
pcP
|
||||
ybI
|
||||
nnR
|
||||
tuz
|
||||
vEA
|
||||
hTb
|
||||
epW
|
||||
bhK
|
||||
rAA
|
||||
cpm
|
||||
mpy
|
||||
sYu
|
||||
@@ -236715,7 +236715,7 @@ jle
|
||||
jfc
|
||||
vYm
|
||||
qBt
|
||||
cqQ
|
||||
xMQ
|
||||
jRC
|
||||
nvs
|
||||
edW
|
||||
@@ -236970,13 +236970,13 @@ clP
|
||||
clP
|
||||
clP
|
||||
shP
|
||||
rYA
|
||||
eWc
|
||||
nDA
|
||||
vvi
|
||||
aWP
|
||||
xpJ
|
||||
vYs
|
||||
nDA
|
||||
sMw
|
||||
gCn
|
||||
pJN
|
||||
mjY
|
||||
aNs
|
||||
|
||||
@@ -7438,6 +7438,16 @@
|
||||
/obj/structure/cable,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/maintenance/starboard/fore)
|
||||
"cMQ" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "hopqueue";
|
||||
name = "HoP Queue Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/command)
|
||||
"cMX" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/turf_decal/tile/blue/fourcorners,
|
||||
@@ -9459,18 +9469,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/science/lab)
|
||||
"dzp" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/purple,
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet/directional/south,
|
||||
/obj/item/reagent_containers/cup/glass/britcup{
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/research)
|
||||
"dzq" = (
|
||||
/obj/item/radio/intercom/directional/north,
|
||||
/obj/machinery/light/directional/north,
|
||||
@@ -13425,6 +13423,20 @@
|
||||
/obj/item/radio/intercom/directional/south,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/heads_quarters/captain/private)
|
||||
"eWo" = (
|
||||
/obj/machinery/door/poddoor/shutters{
|
||||
id = "teleshutter";
|
||||
name = "Teleporter Access Shutter"
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/button/door/directional/east{
|
||||
id = "teleshutter";
|
||||
name = "Teleporter Shutter Control";
|
||||
pixel_y = 5;
|
||||
req_access = list("teleporter")
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/teleporter)
|
||||
"eWq" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/line{
|
||||
dir = 9
|
||||
@@ -19118,6 +19130,18 @@
|
||||
"hbv" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/medical/coldroom)
|
||||
"hbC" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/purple,
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet/directional/south,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/research)
|
||||
"hbK" = (
|
||||
/turf/closed/wall,
|
||||
/area/station/maintenance/department/science/xenobiology)
|
||||
@@ -26227,18 +26251,6 @@
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/engineering/storage/tech)
|
||||
"jty" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/ticket_machine/directional/north,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/command)
|
||||
"jtA" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/effect/turf_decal/tile/blue/fourcorners,
|
||||
@@ -35856,20 +35868,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/xenobiology)
|
||||
"mLY" = (
|
||||
/obj/machinery/door/poddoor/shutters{
|
||||
id = "teleshutter";
|
||||
name = "Teleporter Access Shutter"
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/button/door/directional/east{
|
||||
id = "teleshutter";
|
||||
name = "Teleporter Shutter Control";
|
||||
pixel_y = 5;
|
||||
req_access = list("teleporter")
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/teleporter)
|
||||
"mMl" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
@@ -37988,6 +37986,15 @@
|
||||
/obj/machinery/bluespace_vendor/directional/west,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/dorms)
|
||||
"nwV" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/grunge{
|
||||
name = "Courtroom"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/courtroom)
|
||||
"nwW" = (
|
||||
/obj/structure/closet/secure_closet/security/engine,
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
@@ -39214,18 +39221,6 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/commons/fitness/recreation)
|
||||
"nUr" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/cup/glass/britcup{
|
||||
pixel_x = -6;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/phone{
|
||||
pixel_x = 6;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"nUt" = (
|
||||
/obj/machinery/light/small/directional/east,
|
||||
/turf/open/floor/plating,
|
||||
@@ -48314,6 +48309,18 @@
|
||||
/obj/effect/spawner/random/decoration/showcase,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/corporate_showroom)
|
||||
"rgL" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = -6;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/phone{
|
||||
pixel_x = 6;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"rgN" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/trimline/brown/filled/line{
|
||||
@@ -61350,15 +61357,6 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/aisat/exterior)
|
||||
"vCb" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/grunge{
|
||||
name = "Courtroom"
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/courtroom)
|
||||
"vCh" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -64054,6 +64052,18 @@
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/research)
|
||||
"wzy" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/ticket_machine/directional/north,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/command)
|
||||
"wzF" = (
|
||||
/obj/structure/closet/secure_closet{
|
||||
name = "contraband locker";
|
||||
@@ -64256,16 +64266,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/aisat/exterior)
|
||||
"wCE" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "hopqueue";
|
||||
name = "HoP Queue Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/loading_area{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/command)
|
||||
"wCH" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
@@ -89374,7 +89374,7 @@ fru
|
||||
wrG
|
||||
uzb
|
||||
phP
|
||||
nUr
|
||||
rgL
|
||||
jXu
|
||||
tfR
|
||||
jXu
|
||||
@@ -92244,7 +92244,7 @@ jbd
|
||||
pJR
|
||||
qwY
|
||||
qIl
|
||||
jty
|
||||
wzy
|
||||
nIR
|
||||
tOh
|
||||
lTM
|
||||
@@ -92500,7 +92500,7 @@ aVd
|
||||
nHn
|
||||
mig
|
||||
wMx
|
||||
wCE
|
||||
cMQ
|
||||
urA
|
||||
qAc
|
||||
knj
|
||||
@@ -94310,7 +94310,7 @@ vnp
|
||||
vnp
|
||||
vnp
|
||||
exN
|
||||
mLY
|
||||
eWo
|
||||
gqX
|
||||
cfb
|
||||
laK
|
||||
@@ -98650,7 +98650,7 @@ wwY
|
||||
wwY
|
||||
xCg
|
||||
qfE
|
||||
vCb
|
||||
nwV
|
||||
egb
|
||||
htd
|
||||
ggU
|
||||
@@ -106158,7 +106158,7 @@ gcV
|
||||
nNe
|
||||
nbS
|
||||
aHM
|
||||
dzp
|
||||
hbC
|
||||
oWk
|
||||
ddu
|
||||
wmi
|
||||
|
||||
@@ -8924,7 +8924,7 @@
|
||||
/obj/item/reagent_containers/condiment/peppermill{
|
||||
pixel_x = -8
|
||||
},
|
||||
/obj/item/reagent_containers/cup/glass/britcup,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup,
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/iron,
|
||||
/area/centcom/tdome/observation)
|
||||
@@ -9968,7 +9968,7 @@
|
||||
"Du" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/reagent_containers/cup/glass/britcup,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
/area/shuttle/escape)
|
||||
"tJ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/cup/glass/britcup{
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = 8;
|
||||
pixel_y = -1
|
||||
},
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* ## "Takes reagent appearance" Component
|
||||
*
|
||||
* Bit of a mouthful, but when applied to an item that can hold reagents (primarily reagent containers),
|
||||
* said item will take on an appearance based on the majority share reagent inside
|
||||
*
|
||||
* This is more than just "changing the color a bit" or "applies an overlay", this is
|
||||
* an entire icon / icon state / name change, making it look like a different item entirely
|
||||
*
|
||||
* This is done by cross-referencing the glass style datums. See [/datum/glass_style] for more information about that.
|
||||
*
|
||||
* An example usage is bartender mixed drinks - each reagent gets its own fancy drink sprite
|
||||
*/
|
||||
/datum/component/takes_reagent_appearance
|
||||
/// Icon file when attached to the item
|
||||
var/icon_pre_change
|
||||
/// Icon state when attached to the item
|
||||
var/icon_state_pre_change
|
||||
/// Optional callback invoked when when the item's appearance is changed
|
||||
var/datum/callback/on_icon_changed
|
||||
/// Optional callback invoked when our item has its appearance reverted to default
|
||||
var/datum/callback/on_icon_reset
|
||||
|
||||
/datum/component/takes_reagent_appearance/Initialize(
|
||||
datum/callback/on_icon_changed,
|
||||
datum/callback/on_icon_reset,
|
||||
)
|
||||
if(!isitem(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
var/obj/item/item_parent = parent
|
||||
if(isnull(item_parent.reagents))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
icon_pre_change = item_parent.icon
|
||||
icon_state_pre_change = item_parent.base_icon_state || item_parent.icon_state
|
||||
|
||||
src.on_icon_changed = on_icon_changed
|
||||
src.on_icon_reset = on_icon_reset
|
||||
|
||||
/datum/component/takes_reagent_appearance/Destroy()
|
||||
QDEL_NULL(on_icon_changed)
|
||||
QDEL_NULL(on_icon_reset)
|
||||
return ..()
|
||||
|
||||
/datum/component/takes_reagent_appearance/RegisterWithParent()
|
||||
RegisterSignal(parent, COMSIG_ATOM_UPDATE_APPEARANCE, PROC_REF(on_update_appearance))
|
||||
|
||||
/datum/component/takes_reagent_appearance/UnregisterFromParent()
|
||||
UnregisterSignal(parent, COMSIG_ATOM_UPDATE_APPEARANCE)
|
||||
if(QDELING(parent))
|
||||
return
|
||||
|
||||
var/obj/item/item_parent = parent
|
||||
item_parent.name = initial(item_parent.name)
|
||||
item_parent.desc = initial(item_parent.desc)
|
||||
item_parent.icon = icon_pre_change
|
||||
item_parent.icon_state = icon_state_pre_change
|
||||
on_icon_reset?.Invoke()
|
||||
item_parent.update_appearance()
|
||||
|
||||
/// Signal proc for [COMSIG_ATOM_UPDATE_APPEARANCE]
|
||||
/// We hook into the update appearance proc to perform our own update based on our glass style
|
||||
/// Preventing any further updates down the line on successes
|
||||
/datum/component/takes_reagent_appearance/proc/on_update_appearance(datum/source, updates)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
. = NONE
|
||||
|
||||
var/datum/glass_style/main_style = get_main_reagent_style()
|
||||
if(updates & UPDATE_NAME)
|
||||
. |= update_name(main_style)
|
||||
if(updates & UPDATE_DESC)
|
||||
. |= update_desc(main_style)
|
||||
if(updates & UPDATE_ICON)
|
||||
. |= update_icon(main_style)
|
||||
return .
|
||||
|
||||
/**
|
||||
* Performs the name update.
|
||||
*
|
||||
* * Returns [COMSIG_ATOM_NO_UPDATE_NAME] if one was complete
|
||||
* * Returns [NONE] if nothing happened
|
||||
* * Returns [NONE] if the name was reset to initial state
|
||||
*/
|
||||
/datum/component/takes_reagent_appearance/proc/update_name(datum/glass_style/style)
|
||||
var/obj/item/item_parent = parent
|
||||
if(isnull(style))
|
||||
// no style (reset)
|
||||
item_parent.name = initial(item_parent.name)
|
||||
else if(style.name)
|
||||
// style
|
||||
item_parent.name = style.name
|
||||
return COMSIG_ATOM_NO_UPDATE_NAME
|
||||
|
||||
return NONE
|
||||
|
||||
/**
|
||||
* Performs the description update.
|
||||
*
|
||||
* * Returns [COMSIG_ATOM_NO_UPDATE_DESC] if one was complete
|
||||
* * Returns [NONE] if nothing happened
|
||||
* * Returns [NONE] if the description was reset to initial state
|
||||
*/
|
||||
/datum/component/takes_reagent_appearance/proc/update_desc(datum/glass_style/style)
|
||||
var/obj/item/item_parent = parent
|
||||
if(isnull(style))
|
||||
// no style (reset)
|
||||
item_parent.desc = initial(item_parent.desc)
|
||||
else if(style.desc)
|
||||
// style
|
||||
item_parent.desc = style.desc
|
||||
return COMSIG_ATOM_NO_UPDATE_DESC
|
||||
|
||||
return NONE
|
||||
|
||||
/**
|
||||
* Performs the icon update.
|
||||
*
|
||||
* * Returns [COMSIG_ATOM_NO_UPDATE_ICON] if an icon or icon state ocurred
|
||||
* * Returns [NONE] if the icon or icon state was reset to base state
|
||||
*/
|
||||
/datum/component/takes_reagent_appearance/proc/update_icon(datum/glass_style/style)
|
||||
var/obj/item/item_parent = parent
|
||||
if(isnull(style))
|
||||
// no style (reset)
|
||||
item_parent.icon = icon_pre_change
|
||||
item_parent.icon_state = icon_state_pre_change
|
||||
else if(style.icon && style.icon_state)
|
||||
// style
|
||||
item_parent.icon = style.icon
|
||||
item_parent.icon_state = style.icon_state
|
||||
on_icon_changed?.InvokeAsync(style)
|
||||
return COMSIG_ATOM_NO_UPDATE_ICON_STATE
|
||||
|
||||
// Reset gets invoked regardless, as further updates may "reset" the icon yet
|
||||
on_icon_reset?.InvokeAsync()
|
||||
return NONE
|
||||
|
||||
/**
|
||||
* Gets the correspinding style based on the parent's state and reagents within
|
||||
*
|
||||
* * Returns null if its reagents are empty
|
||||
* * Returns null if no majority reagent was found
|
||||
* * Otherwise returns a glass style datum
|
||||
*/
|
||||
/datum/component/takes_reagent_appearance/proc/get_main_reagent_style()
|
||||
RETURN_TYPE(/datum/glass_style)
|
||||
|
||||
var/obj/item/item_parent = parent
|
||||
if(item_parent.reagents.total_volume <= 0)
|
||||
return null
|
||||
var/datum/reagent/main_reagent = item_parent.reagents.get_master_reagent()
|
||||
if(isnull(main_reagent))
|
||||
return null
|
||||
|
||||
return GLOB.glass_style_singletons[parent.type][main_reagent.type]
|
||||
@@ -302,7 +302,7 @@
|
||||
/obj/item/reagent_containers/borghypo/borgshaker
|
||||
name = "cyborg shaker"
|
||||
desc = "An advanced drink synthesizer and mixer."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "shaker"
|
||||
possible_transfer_amounts = list(5,10,20)
|
||||
// Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
/datum/action/innate/cellular_emporium
|
||||
name = "Cellular Emporium"
|
||||
button_icon = 'icons/obj/drinks.dmi'
|
||||
button_icon = 'icons/obj/drinks/soda.dmi'
|
||||
button_icon_state = "changelingsting"
|
||||
background_icon_state = "bg_changeling"
|
||||
overlay_icon_state = "bg_changeling_border"
|
||||
|
||||
@@ -363,7 +363,7 @@ Striking a noncultist, however, will tear their flesh."}
|
||||
/obj/item/reagent_containers/cup/beaker/unholywater
|
||||
name = "flask of unholy water"
|
||||
desc = "Toxic to nonbelievers; reinvigorating to the faithful - this flask may be sipped or thrown."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "holyflask"
|
||||
color = "#333333"
|
||||
list_reagents = list(/datum/reagent/fuel/unholywater = 50)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
OUTPUT_ITEMS = list(/obj/structure/constructshell),
|
||||
),
|
||||
UNHOLY_WATER = list(
|
||||
PREVIEW_IMAGE = image(icon = 'icons/obj/drinks.dmi', icon_state = "holyflask"),
|
||||
PREVIEW_IMAGE = image(icon = 'icons/obj/drinks/bottles.dmi', icon_state = "holyflask"),
|
||||
OUTPUT_ITEMS = list(/obj/item/reagent_containers/cup/beaker/unholywater),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/preference/choiced/vampire_status/init_possible_values()
|
||||
var/list/values = list()
|
||||
|
||||
values["Inoculated"] = icon('icons/obj/drinks.dmi', "bloodglass")
|
||||
values["Inoculated"] = icon('icons/obj/drinks/drinks.dmi', "bloodglass")
|
||||
values["Outcast"] = icon('icons/obj/medical/bloodpack.dmi', "generic_bloodpack")
|
||||
|
||||
return values
|
||||
|
||||
@@ -83,20 +83,30 @@
|
||||
)
|
||||
|
||||
/datum/venue/bar/get_food_appearance(order)
|
||||
var/glass_visual
|
||||
var/datum/reagent/reagent_to_order = order
|
||||
// Default the icon to the fallback icon
|
||||
var/glass_visual_icon = initial(reagent_to_order.fallback_icon)
|
||||
var/glass_visual_icon_state = initial(reagent_to_order.fallback_icon_state)
|
||||
|
||||
if(initial(reagent_to_order.glass_icon_state))
|
||||
glass_visual = initial(reagent_to_order.glass_icon_state)
|
||||
else if(initial(reagent_to_order.shot_glass_icon_state))
|
||||
glass_visual = initial(reagent_to_order.shot_glass_icon_state)
|
||||
else if(initial(reagent_to_order.fallback_icon_state))
|
||||
glass_visual = initial(reagent_to_order.fallback_icon_state)
|
||||
else
|
||||
stack_trace("[reagent_to_order] has no icon sprite for restaurant code, please set a fallback_icon_state for this reagent.")
|
||||
// Look for a glass style based on this reagent type
|
||||
for(var/potential_container in GLOB.glass_style_singletons)
|
||||
var/datum/glass_style/draw_as = GLOB.glass_style_singletons[potential_container][reagent_to_order.type]
|
||||
if(isnull(draw_as))
|
||||
continue
|
||||
|
||||
var/image/food_image = image(icon = 'icons/effects/effects.dmi' , icon_state = "thought_bubble")
|
||||
food_image.add_overlay(mutable_appearance('icons/obj/drinks.dmi', glass_visual))
|
||||
// Override the crummy fallback icon if we find a glass style to use instead
|
||||
glass_visual_icon = draw_as.icon
|
||||
glass_visual_icon_state = draw_as.icon_state
|
||||
break
|
||||
|
||||
// If we have no icon or fallback, well... Scream. Someone should fix it
|
||||
if(!glass_visual_icon || !glass_visual_icon_state)
|
||||
stack_trace("[reagent_to_order] has no icon sprite for restaurant code, please set a fallback icon for this reagent.")
|
||||
glass_visual_icon = 'icons/obj/drinks/drinks.dmi'
|
||||
glass_visual_icon_state = "glass_empty"
|
||||
|
||||
var/image/food_image = image(icon = 'icons/effects/effects.dmi', icon_state = "thought_bubble")
|
||||
food_image.add_overlay(mutable_appearance(glass_visual_icon, glass_visual_icon_state))
|
||||
|
||||
return food_image
|
||||
|
||||
|
||||
@@ -26,16 +26,6 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
var/taste_description = "metaphorical salt"
|
||||
///how this taste compares to others. Higher values means it is more noticable
|
||||
var/taste_mult = 1
|
||||
/// use for specialty drinks.
|
||||
var/glass_name = "glass of ...what?"
|
||||
/// desc applied to glasses with this reagent
|
||||
var/glass_desc = "You can't really tell what this is."
|
||||
/// Otherwise just sets the icon to a normal glass with the mixture of the reagents in the glass.
|
||||
var/glass_icon_state = null
|
||||
/// used for shot glasses, mostly for alcohol
|
||||
var/shot_glass_icon_state = null
|
||||
/// fallback icon if the reagent has no glass or shot glass icon state. Used for restaurants.
|
||||
var/fallback_icon_state = null
|
||||
/// reagent holder this belongs to
|
||||
var/datum/reagents/holder = null
|
||||
/// LIQUID, SOLID, GAS
|
||||
@@ -92,8 +82,6 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
var/burning_volume = 0.5
|
||||
///Assoc list with key type of addiction this reagent feeds, and value amount of addiction points added per unit of reagent metabolzied (which means * REAGENTS_METABOLISM every life())
|
||||
var/list/addiction_types = null
|
||||
///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!)
|
||||
var/glass_price
|
||||
/// The affected bodytype, if the reagent damages/heals bodyparts (Brute/Fire) of an affected mob.
|
||||
/// See "Bodytype defines" in /code/_DEFINES/mobs.dm
|
||||
var/affected_bodytype = BODYTYPE_ORGANIC
|
||||
@@ -104,6 +92,14 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
/// See "Organ defines for carbon mobs" in /code/_DEFINES/mobs.dm
|
||||
var/affected_organtype = ORGAN_ORGANIC
|
||||
|
||||
// Used for restaurants.
|
||||
///The amount a robot will pay for a glass of this (20 units but can be higher if you pour more, be frugal!)
|
||||
var/glass_price
|
||||
/// Icon for fallback item displayed in a tourist's thought bubble for if this reagent had no associated glass_style datum.
|
||||
var/fallback_icon
|
||||
/// Icon state for fallback item displayed in a tourist's thought bubble for if this reagent had no associated glass_style datum.
|
||||
var/fallback_icon_state
|
||||
|
||||
/datum/reagent/New()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
. = ..()
|
||||
|
||||
@@ -922,12 +922,16 @@
|
||||
quality = DRINK_VERYGOOD
|
||||
nutriment_factor = 4 * REAGENTS_METABOLISM
|
||||
taste_description = "sweet chocolate"
|
||||
glass_icon_state = "chocolatepudding"
|
||||
glass_name = "chocolate pudding"
|
||||
glass_desc = "Tasty."
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_EASY
|
||||
|
||||
/datum/glass_style/drinking_glass/chocolatepudding
|
||||
required_drink_type = /datum/reagent/consumable/chocolatepudding
|
||||
name = "chocolate pudding"
|
||||
desc = "Tasty."
|
||||
icon = 'icons/obj/drinks/shakes.dmi'
|
||||
icon_state = "chocolatepudding"
|
||||
|
||||
/datum/reagent/consumable/vanillapudding
|
||||
name = "Vanilla Pudding"
|
||||
description = "A great dessert for vanilla lovers."
|
||||
@@ -935,11 +939,15 @@
|
||||
quality = DRINK_VERYGOOD
|
||||
nutriment_factor = 4 * REAGENTS_METABOLISM
|
||||
taste_description = "sweet vanilla"
|
||||
glass_icon_state = "vanillapudding"
|
||||
glass_name = "vanilla pudding"
|
||||
glass_desc = "Tasty."
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/glass_style/drinking_glass/vanillapudding
|
||||
required_drink_type = /datum/reagent/consumable/vanillapudding
|
||||
name = "vanilla pudding"
|
||||
desc = "Tasty."
|
||||
icon = 'icons/obj/drinks/shakes.dmi'
|
||||
icon_state = "vanillapudding"
|
||||
|
||||
/datum/reagent/consumable/laughsyrup
|
||||
name = "Laughin' Syrup"
|
||||
description = "The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!"
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
taste_description = "an awful, strongly chemical taste"
|
||||
color = "#270d03"
|
||||
glass_price = DRINK_PRICE_HIGH
|
||||
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
fallback_icon_state = "failed_reaction_fallback"
|
||||
|
||||
// Unique
|
||||
|
||||
@@ -1603,21 +1603,28 @@
|
||||
description = "Ancient Clown Lore says that pulped banana peels are good for your blood, but are you really going to take medical advice from a clown about bananas?"
|
||||
color = "#50531a" // rgb: 175, 175, 0
|
||||
taste_description = "horribly stringy, bitter pulp"
|
||||
glass_name = "glass of banana peel pulp"
|
||||
glass_desc = "Ancient Clown Lore says that pulped banana peels are good for your blood, but are you really going to take medical advice from a clown about bananas?"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
clot_rate = 0.2
|
||||
passive_bleed_modifier = 0.8
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/glass_style/drinking_glass/banana_peel
|
||||
required_drink_type = /datum/reagent/medicine/coagulant/banana_peel
|
||||
name = "glass of banana peel pulp"
|
||||
desc = "Ancient Clown Lore says that pulped banana peels are good for your blood, \
|
||||
but are you really going to take medical advice from a clown about bananas?"
|
||||
|
||||
/datum/reagent/medicine/coagulant/seraka_extract
|
||||
name = "Seraka Extract"
|
||||
description = "A deeply coloured oil present in small amounts in Seraka Mushrooms. Acts as an effective blood clotting agent, but has a low overdose threshold."
|
||||
color = "#00767C"
|
||||
taste_description = "intensely savoury bitterness"
|
||||
glass_name = "glass of seraka extract"
|
||||
glass_desc = "Deeply savoury, bitter, and makes your blood clot up in your veins. A great drink, all things considered."
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
clot_rate = 0.4 //slightly better than regular coagulant
|
||||
passive_bleed_modifier = 0.5
|
||||
overdose_threshold = 10 //but easier to overdose on
|
||||
|
||||
/datum/glass_style/drinking_glass/seraka_extract
|
||||
required_drink_type = /datum/reagent/medicine/coagulant/seraka_extract
|
||||
name = "glass of seraka extract"
|
||||
desc = "Deeply savoury, bitter, and makes your blood clot up in your veins. A great drink, all things considered."
|
||||
|
||||
@@ -5,13 +5,20 @@
|
||||
metabolization_rate = 12.5 * REAGENTS_METABOLISM //fast rate so it disappears fast.
|
||||
taste_description = "iron"
|
||||
taste_mult = 1.3
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of tomato juice"
|
||||
glass_desc = "Are you sure this is tomato juice?"
|
||||
shot_glass_icon_state = "shotglassred"
|
||||
penetrates_skin = NONE
|
||||
ph = 7.4
|
||||
|
||||
/datum/glass_style/shot_glass/blood
|
||||
required_drink_type = /datum/reagent/blood
|
||||
icon_state = "shotglassred"
|
||||
|
||||
/datum/glass_style/drinking_glass/blood
|
||||
required_drink_type = /datum/reagent/blood
|
||||
name = "glass of tomato juice"
|
||||
desc = "Are you sure this is tomato juice?"
|
||||
icon_state = "glass_red"
|
||||
|
||||
|
||||
// FEED ME
|
||||
/datum/reagent/blood/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
|
||||
. = ..()
|
||||
@@ -110,11 +117,14 @@
|
||||
color = "#CC4633"
|
||||
description = "You don't even want to think about what's in here."
|
||||
taste_description = "gross iron"
|
||||
shot_glass_icon_state = "shotglassred"
|
||||
material = /datum/material/meat
|
||||
ph = 7.45
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/glass_style/shot_glass/liquidgibs
|
||||
required_drink_type = /datum/reagent/liquidgibs
|
||||
icon_state = "shotglassred"
|
||||
|
||||
/datum/reagent/bone_dust
|
||||
name = "Bone Dust"
|
||||
color = "#dbcdcb"
|
||||
@@ -162,12 +172,18 @@
|
||||
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
|
||||
taste_description = "water"
|
||||
var/cooling_temperature = 2
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
shot_glass_icon_state = "shotglassclear"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS
|
||||
|
||||
/datum/glass_style/shot_glass/water
|
||||
required_drink_type = /datum/reagent/water
|
||||
icon_state = "shotglassclear"
|
||||
|
||||
/datum/glass_style/drinking_glass/water
|
||||
required_drink_type = /datum/reagent/water
|
||||
name = "glass of water"
|
||||
desc = "The father of all refreshments."
|
||||
icon_state = "glass_clear"
|
||||
|
||||
/*
|
||||
* Water reaction to turf
|
||||
*/
|
||||
@@ -246,13 +262,16 @@
|
||||
name = "Holy Water"
|
||||
description = "Water blessed by some deity."
|
||||
color = "#E0E8EF" // rgb: 224, 232, 239
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of holy water"
|
||||
glass_desc = "A glass of holy water."
|
||||
self_consuming = TRUE //divine intervention won't be limited by the lack of a liver
|
||||
ph = 7.5 //God is alkaline
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS
|
||||
|
||||
/datum/glass_style/drinking_glass/holywater
|
||||
required_drink_type = /datum/reagent/water/holywater
|
||||
name = "glass of holy water"
|
||||
desc = "A glass of holy water."
|
||||
icon_state = "glass_clear"
|
||||
|
||||
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits. Also ALSO increases instability.
|
||||
/datum/reagent/water/holywater/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
|
||||
if(chems.has_reagent(type, 1))
|
||||
@@ -334,13 +353,19 @@
|
||||
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
|
||||
taste_description = "burning water"
|
||||
var/cooling_temperature = 2
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of oxygenated water"
|
||||
glass_desc = "The father of all refreshments. Surely it tastes great, right?"
|
||||
shot_glass_icon_state = "shotglassclear"
|
||||
ph = 6.2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/glass_style/shot_glass/hydrogen_peroxide
|
||||
required_drink_type = /datum/reagent/hydrogen_peroxide
|
||||
icon_state = "shotglassclear"
|
||||
|
||||
/datum/glass_style/drinking_glass/hydrogen_peroxide
|
||||
required_drink_type = /datum/reagent/hydrogen_peroxide
|
||||
name = "glass of oxygenated water"
|
||||
desc = "The father of all refreshments. Surely it tastes great, right?"
|
||||
icon_state = "glass_clear"
|
||||
|
||||
/*
|
||||
* Water reaction to turf
|
||||
*/
|
||||
@@ -440,6 +465,7 @@
|
||||
overdose_threshold = 11 //Slightly more than one un-nozzled spraybottle.
|
||||
taste_description = "sour oranges"
|
||||
ph = 5
|
||||
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
fallback_icon_state = "spraytan_fallback"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
@@ -1143,9 +1169,6 @@
|
||||
description = "Required for welders. Flammable."
|
||||
color = "#660000" // rgb: 102, 0, 0
|
||||
taste_description = "gross metal"
|
||||
glass_icon_state = "dr_gibb_glass"
|
||||
glass_name = "glass of welder fuel"
|
||||
glass_desc = "Unless you're an industrial tool, this is probably not safe for consumption."
|
||||
penetrates_skin = NONE
|
||||
ph = 4
|
||||
burning_temperature = 1725 //more refined than oil
|
||||
@@ -1153,6 +1176,12 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/alcohol = 4)
|
||||
|
||||
/datum/glass_style/drinking_glass/fuel
|
||||
required_drink_type = /datum/reagent/fuel
|
||||
name = "glass of welder fuel"
|
||||
desc = "Unless you're an industrial tool, this is probably not safe for consumption."
|
||||
icon_state = "dr_gibb_glass"
|
||||
|
||||
/datum/reagent/fuel/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite!
|
||||
. = ..()
|
||||
if(methods & (TOUCH|VAPOR))
|
||||
@@ -2453,8 +2482,6 @@
|
||||
/datum/reagent/yuck
|
||||
name = "Organic Slurry"
|
||||
description = "A mixture of various colors of fluid. Induces vomiting."
|
||||
glass_name = "glass of ...yuck!"
|
||||
glass_desc = "It smells like a carcass, and doesn't look much better."
|
||||
color = "#545000"
|
||||
taste_description = "insides"
|
||||
taste_mult = 4
|
||||
@@ -2462,6 +2489,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
var/yuck_cycle = 0 //! The `current_cycle` when puking starts.
|
||||
|
||||
/datum/glass_style/drinking_glass/yuck
|
||||
required_drink_type = /datum/reagent/yuck
|
||||
name = "glass of ...yuck!"
|
||||
desc = "It smells like a carcass, and doesn't look much better."
|
||||
|
||||
/datum/reagent/yuck/on_mob_add(mob/living/affected_mob)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_NOHUNGER)) //they can't puke
|
||||
@@ -2695,8 +2727,6 @@
|
||||
taste_mult = 1.3
|
||||
taste_description = "tiny legs scuttling down the back of your throat"
|
||||
metabolization_rate = 5 * REAGENTS_METABOLISM //1u per second
|
||||
glass_name = "glass of ants"
|
||||
glass_desc = "Bottoms up...?"
|
||||
ph = 4.6 // Ants contain Formic Acid
|
||||
/// How much damage the ants are going to be doing (rises with each tick the ants are in someone's body)
|
||||
var/ant_damage = 0
|
||||
@@ -2708,8 +2738,13 @@
|
||||
"GET THEM OUT OF ME!!",
|
||||
"HOLY HELL THEY BURN!!",
|
||||
"MY GOD THEY'RE INSIDE ME!!",
|
||||
"GET THEM OUT!!"
|
||||
)
|
||||
"GET THEM OUT!!",
|
||||
)
|
||||
|
||||
/datum/glass_style/drinking_glass/ants
|
||||
required_drink_type = /datum/reagent/ants
|
||||
name = "glass of ants"
|
||||
desc = "Bottoms up...?"
|
||||
|
||||
/datum/reagent/ants/on_mob_life(mob/living/carbon/victim, delta_time)
|
||||
victim.adjustBruteLoss(max(0.1, round((ant_damage * 0.025),0.1))) //Scales with time. Roughly 32 brute with 100u.
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
color = "#fbc314"
|
||||
ph = 0
|
||||
inverse_chem = null
|
||||
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
fallback_icon_state = "acid_buffer_fallback"
|
||||
///The strength of the buffer where (volume/holder.total_volume)*strength. So for 1u added to 50u the ph will decrease by 0.4
|
||||
var/strength = 30
|
||||
@@ -48,6 +49,7 @@
|
||||
color = "#3853a4"
|
||||
ph = 14
|
||||
inverse_chem = null
|
||||
fallback_icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
fallback_icon_state = "base_buffer_fallback"
|
||||
///The strength of the buffer where (volume/holder.total_volume)*strength. So for 1u added to 50u the ph will increase by 0.4
|
||||
var/strength = 30
|
||||
|
||||
@@ -491,12 +491,21 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
metabolization_rate = 1.5 * REAGENTS_METABOLISM
|
||||
taste_description = "piss water"
|
||||
glass_icon_state = "beerglass"
|
||||
glass_name = "glass of beer"
|
||||
glass_desc = "A freezing pint of beer."
|
||||
ph = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/glass_style/drinking_glass/fakebeer
|
||||
required_drink_type = /datum/reagent/toxin/fakebeer
|
||||
|
||||
/datum/glass_style/drinking_glass/fakebeer/New()
|
||||
. = ..()
|
||||
// Copy styles from the beer drinking glass datum
|
||||
var/datum/glass_style/copy_from = /datum/glass_style/drinking_glass/beer
|
||||
name = initial(copy_from.name)
|
||||
desc = initial(copy_from.desc)
|
||||
icon = initial(copy_from.icon)
|
||||
icon_state = initial(copy_from.icon_state)
|
||||
|
||||
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/affected_mob, delta_time, times_fired)
|
||||
switch(current_cycle)
|
||||
if(1 to 50)
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/// Global list of all glass style singletons created. See [/proc/create_glass_styles] for list format.
|
||||
GLOBAL_LIST_INIT(glass_style_singletons, create_glass_styles())
|
||||
|
||||
/**
|
||||
* Constructs a nested list of glass style singletons
|
||||
*
|
||||
* List format:
|
||||
* * list(glasses = list(beer = style datum, vodka = style datum), shot glasses = list(vodka = different style datum))
|
||||
*
|
||||
* Where
|
||||
* * "glasses" and "shotglasses" are item typepaths
|
||||
* * "beer" and "vodka" are reagent typepaths
|
||||
* * "style datum" is a glass style singleton datum
|
||||
*
|
||||
* Returns the list.
|
||||
*/
|
||||
/proc/create_glass_styles()
|
||||
var/list/final_list = list()
|
||||
for(var/datum/glass_style/style as anything in typesof(/datum/glass_style))
|
||||
if(!initial(style.required_drink_type) || !initial(style.required_container_type))
|
||||
continue
|
||||
|
||||
var/datum/glass_style/new_style = new style()
|
||||
var/container_type = new_style.required_container_type
|
||||
var/reagent_type = new_style.required_drink_type
|
||||
if(!islist(final_list[container_type]))
|
||||
final_list[container_type] = list()
|
||||
// Check that our slot is free. If it's not free, this is an error
|
||||
if(final_list[container_type][reagent_type])
|
||||
stack_trace("[style] collided with another glass style singleton during instantiation. \
|
||||
This means its reagent ([reagent_type]) has two styles set for the same container type. \
|
||||
This is invalid - please correct this.")
|
||||
|
||||
final_list[container_type][reagent_type] = new_style
|
||||
|
||||
return final_list
|
||||
|
||||
/**
|
||||
* ## Glass style singleton
|
||||
*
|
||||
* Used by [/datum/component/takes_reagent_appearance], and a few other places,
|
||||
* to modify the looks of a reagent container (not /reagent_containers, any atom with reagents)
|
||||
* when certain types of reagents are put into and become the majority reagent of the container
|
||||
*
|
||||
* For example, pouring Vodka into a glass will change its icon to look like the vodka glass sprite
|
||||
* while pouring it into a shot glass will change to the vodka shot glass sprite
|
||||
*
|
||||
* A reagent type can have multiple glass styles so long as each style is linked to a different container type,
|
||||
* this allows one reagent to style multiple things across a variety of icon files
|
||||
*/
|
||||
/datum/glass_style
|
||||
/// Required - What EXACT type of reagent is needed for this style to be used
|
||||
/// If not supplied, will be assumed to be an abstract type and will not be instantiated
|
||||
var/required_drink_type
|
||||
/// Required - What EXACT type of atom is needed for this style to be used
|
||||
/// If not supplied, will be assumed to be an abstract type and will not be instantiated
|
||||
var/required_container_type
|
||||
/// Optional - What the glass is renamed to
|
||||
var/name
|
||||
/// Optional - What the glass description is changed to
|
||||
var/desc
|
||||
/// Suggested - What icon file to use for this glass style
|
||||
var/icon
|
||||
/// Suggested - What icon state is used for this glass style
|
||||
var/icon_state
|
||||
|
||||
/datum/glass_style/drinking_glass
|
||||
required_container_type = /obj/item/reagent_containers/cup/glass/drinkingglass
|
||||
icon = 'icons/obj/drinks/drinks.dmi'
|
||||
|
||||
/datum/glass_style/shot_glass
|
||||
required_container_type = /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass
|
||||
icon = 'icons/obj/drinks/shot_glasses.dmi'
|
||||
|
||||
/datum/glass_style/juicebox
|
||||
required_container_type = /obj/item/reagent_containers/cup/glass/sillycup/smallcarton
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
/// This style changes the "drink type" of the container it's placed it as well, it's like food types
|
||||
var/drink_type = NONE
|
||||
@@ -108,7 +108,7 @@
|
||||
/obj/item/reagent_containers/cup/bottle/adminordrazine
|
||||
name = "Adminordrazine Bottle"
|
||||
desc = "A small bottle. Contains the liquid essence of the gods."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "holyflask"
|
||||
list_reagents = list(/datum/reagent/medicine/adminordrazine = 30)
|
||||
|
||||
|
||||
@@ -18,44 +18,22 @@
|
||||
//the screwdriver cocktail can make a drinking glass into the world's worst screwdriver. beautiful.
|
||||
toolspeed = 25
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/Initialize(mapload, vol)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/takes_reagent_appearance, CALLBACK(src, PROC_REF(on_glass_change)), CALLBACK(src, PROC_REF(on_glass_reset)))
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/on_reagent_change(datum/reagents/holder, ...)
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
renamedByPlayer = FALSE //so new drinks can rename the glass
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/update_name(updates)
|
||||
if(renamedByPlayer)
|
||||
return
|
||||
. = ..()
|
||||
var/datum/reagent/largest_reagent = reagents.get_master_reagent()
|
||||
name = largest_reagent?.glass_name || initial(name)
|
||||
/// Having our icon state change removes fill thresholds
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/proc/on_glass_change(datum/glass_style/style)
|
||||
fill_icon_thresholds = null
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/update_desc(updates)
|
||||
if(renamedByPlayer)
|
||||
return
|
||||
. = ..()
|
||||
var/datum/reagent/largest_reagent = reagents.get_master_reagent()
|
||||
desc = largest_reagent?.glass_desc || initial(desc)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/update_icon_state()
|
||||
if(!reagents.total_volume)
|
||||
icon_state = base_icon_state
|
||||
return ..()
|
||||
|
||||
var/glass_icon = get_glass_icon(reagents.get_master_reagent())
|
||||
if(glass_icon)
|
||||
icon_state = glass_icon
|
||||
fill_icon_thresholds = null
|
||||
else
|
||||
//Make sure the fill_icon_thresholds and the icon_state are reset. We'll use reagent overlays.
|
||||
fill_icon_thresholds = fill_icon_thresholds || list(1)
|
||||
icon_state = base_icon_state
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/proc/get_glass_icon(datum/reagent/largest_reagent)
|
||||
if(!largest_reagent)
|
||||
return FALSE
|
||||
return largest_reagent.glass_icon_state
|
||||
/// And having our icon reset restores our fill thresholds
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/proc/on_glass_reset()
|
||||
fill_icon_thresholds ||= list(0)
|
||||
|
||||
//Shot glasses!//
|
||||
// This lets us add shots in here instead of lumping them in with drinks because >logic //
|
||||
@@ -67,6 +45,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass
|
||||
name = "shot glass"
|
||||
desc = "A shot glass - the universal symbol for bad decisions."
|
||||
icon = 'icons/obj/drinks/shot_glasses.dmi'
|
||||
icon_state = "shotglass"
|
||||
base_icon_state = "shotglass"
|
||||
gulp_size = 15
|
||||
@@ -81,21 +60,16 @@
|
||||
if(renamedByPlayer)
|
||||
return
|
||||
. = ..()
|
||||
name = "[length(reagents.reagent_list) ? "filled " : null]shot glass"
|
||||
name = "[length(reagents.reagent_list) ? "filled " : ""]shot glass"
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/update_desc(updates)
|
||||
if(renamedByPlayer)
|
||||
return
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
desc = "A shot glass - the universal symbol for bad decisions."
|
||||
else
|
||||
if(length(reagents.reagent_list))
|
||||
desc = "The challenge is not taking as many as you can, but guessing what it is before you pass out."
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/get_glass_icon(datum/reagent/largest_reagent)
|
||||
if(!largest_reagent)
|
||||
return FALSE
|
||||
return largest_reagent.shot_glass_icon_state
|
||||
else
|
||||
desc = "A shot glass - the universal symbol for bad decisions."
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/soda
|
||||
name = "Soda Water"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/obj/item/reagent_containers/cup/glass
|
||||
name = "drink"
|
||||
desc = "yummy"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/drinks.dmi'
|
||||
icon_state = null
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50)
|
||||
resistance_flags = NONE
|
||||
@@ -40,6 +40,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/trophy
|
||||
name = "pewter cup"
|
||||
desc = "Everyone gets a trophy."
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "pewter_cup"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
force = 1
|
||||
@@ -56,6 +57,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/trophy/gold_cup
|
||||
name = "gold cup"
|
||||
desc = "You're winner!"
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "golden_cup"
|
||||
inhand_icon_state = "golden_cup"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
@@ -68,6 +70,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/trophy/silver_cup
|
||||
name = "silver cup"
|
||||
desc = "Best loser!"
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "silver_cup"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
force = 10
|
||||
@@ -80,6 +83,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/trophy/bronze_cup
|
||||
name = "bronze cup"
|
||||
desc = "At least you ranked!"
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "bronze_cup"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force = 5
|
||||
@@ -96,7 +100,9 @@
|
||||
/obj/item/reagent_containers/cup/glass/coffee
|
||||
name = "robust coffee"
|
||||
desc = "Careful, the beverage you're about to enjoy is extremely hot."
|
||||
icon = 'icons/obj/drinks/coffee.dmi'
|
||||
icon_state = "coffee"
|
||||
base_icon_state = "coffee"
|
||||
list_reagents = list(/datum/reagent/consumable/coffee = 30)
|
||||
spillable = TRUE
|
||||
resistance_flags = FREEZE_PROOF
|
||||
@@ -120,9 +126,9 @@
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/coffee/update_icon_state()
|
||||
if(lid_open)
|
||||
icon_state = reagents.total_volume ? "coffee_full" : "coffee_empty"
|
||||
icon_state = reagents.total_volume ? "[base_icon_state]_full" : "[base_icon_state]_empty"
|
||||
else
|
||||
icon_state = "coffee"
|
||||
icon_state = base_icon_state
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/ice
|
||||
@@ -142,6 +148,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/mug // parent type is literally just so empty mug sprites are a thing
|
||||
name = "mug"
|
||||
desc = "A drink served in a classy mug."
|
||||
icon = 'icons/obj/drinks/coffee.dmi'
|
||||
icon_state = "tea_empty"
|
||||
base_icon_state = "tea"
|
||||
inhand_icon_state = "coffee"
|
||||
@@ -175,14 +182,16 @@
|
||||
/obj/item/reagent_containers/cup/glass/coffee_cup
|
||||
name = "coffee cup"
|
||||
desc = "A heat-formed plastic coffee cup. Can theoretically be used for other hot drinks, if you're feeling adventurous."
|
||||
icon = 'icons/obj/drinks/coffee.dmi'
|
||||
icon_state = "coffee_cup_e"
|
||||
base_icon_state = "coffee_cup"
|
||||
possible_transfer_amounts = list(10)
|
||||
volume = 30
|
||||
spillable = TRUE
|
||||
isGlass = FALSE
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/coffee_cup/update_icon_state()
|
||||
icon_state = reagents.total_volume ? "coffee_cup" : "coffee_cup_e"
|
||||
icon_state = reagents.total_volume ? base_icon_state : "[base_icon_state]_e"
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/dry_ramen
|
||||
@@ -197,7 +206,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle
|
||||
name = "bottle of water"
|
||||
desc = "A bottle of water filled at an old Earth bottling facility."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "smallbottle"
|
||||
inhand_icon_state = null
|
||||
list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
|
||||
@@ -358,100 +367,22 @@
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton
|
||||
name = "small carton"
|
||||
desc = "A small carton, intended for holding drinks."
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "juicebox"
|
||||
volume = 15 //I figure if you have to craft these it should at least be slightly better than something you can get for free from a watercooler
|
||||
|
||||
/// Reagent container icon updates, especially this one, are complete jank. I will need to rework them after this is merged.
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/on_reagent_change(datum/reagents/holder, ...)
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/Initialize(mapload, vol)
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
drink_type = NONE /// Why are drink types on the _container_? TODO: move these to the reagents //im waiting
|
||||
AddComponent(/datum/component/takes_reagent_appearance, CALLBACK(src, PROC_REF(on_box_change)), CALLBACK(src, PROC_REF(on_box_reset)))
|
||||
|
||||
/// Having our icon state change changes our food type
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/proc/on_box_change(datum/glass_style/juicebox/style)
|
||||
if(!istype(style))
|
||||
return
|
||||
drink_type = style.drink_type
|
||||
|
||||
switch(reagents.get_master_reagent_id())
|
||||
if(/datum/reagent/consumable/orangejuice)
|
||||
drink_type = FRUIT | BREAKFAST
|
||||
if(/datum/reagent/consumable/milk)
|
||||
drink_type = DAIRY | BREAKFAST
|
||||
if(/datum/reagent/consumable/applejuice)
|
||||
drink_type = FRUIT
|
||||
if(/datum/reagent/consumable/grapejuice)
|
||||
drink_type = FRUIT
|
||||
if(/datum/reagent/consumable/pineapplejuice)
|
||||
drink_type = FRUIT | PINEAPPLE
|
||||
if(/datum/reagent/consumable/milk/chocolate_milk)
|
||||
drink_type = SUGAR
|
||||
if(/datum/reagent/consumable/ethanol/eggnog)
|
||||
drink_type = MEAT
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/update_name(updates)
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
name = "small carton"
|
||||
return
|
||||
|
||||
switch(reagents.get_master_reagent_id())
|
||||
if(/datum/reagent/consumable/orangejuice)
|
||||
name = "orange juice box"
|
||||
if(/datum/reagent/consumable/milk)
|
||||
name = "carton of milk"
|
||||
if(/datum/reagent/consumable/applejuice)
|
||||
name = "apple juice box"
|
||||
if(/datum/reagent/consumable/grapejuice)
|
||||
name = "grape juice box"
|
||||
if(/datum/reagent/consumable/pineapplejuice)
|
||||
name = "pineapple juice box"
|
||||
if(/datum/reagent/consumable/milk/chocolate_milk)
|
||||
name = "carton of chocolate milk"
|
||||
if(/datum/reagent/consumable/ethanol/eggnog)
|
||||
name = "carton of eggnog"
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/update_desc(updates)
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
desc = "A small carton, intended for holding drinks."
|
||||
return
|
||||
|
||||
switch(reagents.get_master_reagent_id())
|
||||
if(/datum/reagent/consumable/orangejuice)
|
||||
desc = "A great source of vitamins. Stay healthy!"
|
||||
if(/datum/reagent/consumable/milk)
|
||||
desc = "An excellent source of calcium for growing space explorers."
|
||||
if(/datum/reagent/consumable/applejuice)
|
||||
desc = "Sweet apple juice. Don't be late for school!"
|
||||
if(/datum/reagent/consumable/grapejuice)
|
||||
desc = "Tasty grape juice in a fun little container. Non-alcoholic!"
|
||||
if(/datum/reagent/consumable/pineapplejuice)
|
||||
desc = "Why would you even want this?"
|
||||
if(/datum/reagent/consumable/milk/chocolate_milk)
|
||||
desc = "Milk for cool kids!"
|
||||
if(/datum/reagent/consumable/ethanol/eggnog)
|
||||
desc = "For enjoying the most wonderful time of the year."
|
||||
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/update_icon_state()
|
||||
. = ..()
|
||||
if(!length(reagents.reagent_list))
|
||||
icon_state = "juicebox"
|
||||
return
|
||||
|
||||
switch(reagents.get_master_reagent_id()) // Thanks to update_name not existing we need to do this whole switch twice
|
||||
if(/datum/reagent/consumable/orangejuice)
|
||||
icon_state = "orangebox"
|
||||
if(/datum/reagent/consumable/milk)
|
||||
icon_state = "milkbox"
|
||||
if(/datum/reagent/consumable/applejuice)
|
||||
icon_state = "juicebox"
|
||||
if(/datum/reagent/consumable/grapejuice)
|
||||
icon_state = "grapebox"
|
||||
if(/datum/reagent/consumable/pineapplejuice)
|
||||
icon_state = "pineapplebox"
|
||||
if(/datum/reagent/consumable/milk/chocolate_milk)
|
||||
icon_state = "chocolatebox"
|
||||
if(/datum/reagent/consumable/ethanol/eggnog)
|
||||
icon_state = "nog2"
|
||||
else
|
||||
icon_state = "juicebox"
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/proc/on_box_reset()
|
||||
drink_type = NONE
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/sillycup/smallcarton/smash(atom/target, mob/thrower, ranged = FALSE)
|
||||
if(bartender_check(target) && ranged)
|
||||
@@ -465,7 +396,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/colocup
|
||||
name = "colo cup"
|
||||
desc = "A cheap, mass produced style of cup, typically used at parties. They never seem to come out red, for some reason..."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/colo.dmi'
|
||||
icon_state = "colocup"
|
||||
inhand_icon_state = "colocup"
|
||||
custom_materials = list(/datum/material/plastic = 1000)
|
||||
@@ -494,6 +425,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/shaker
|
||||
name = "shaker"
|
||||
desc = "A metal shaker to mix drinks in."
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "shaker"
|
||||
custom_materials = list(/datum/material/iron=1500)
|
||||
amount_per_transfer_from_this = 10
|
||||
@@ -511,6 +443,7 @@
|
||||
name = "flask"
|
||||
desc = "Every good spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go."
|
||||
custom_price = PAYCHECK_COMMAND * 2
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "flask"
|
||||
custom_materials = list(/datum/material/iron=250)
|
||||
volume = 60
|
||||
@@ -528,9 +461,11 @@
|
||||
icon_state = "detflask"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 30)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/britcup
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup
|
||||
name = "cup"
|
||||
desc = "A cup with the british flag emblazoned on it."
|
||||
icon_state = "britcup"
|
||||
icon = 'icons/obj/drinks/coffee.dmi'
|
||||
icon_state = "britcup_empty"
|
||||
base_icon_state = "britcup"
|
||||
volume = 30
|
||||
spillable = TRUE
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle
|
||||
name = "glass bottle"
|
||||
desc = "This blank bottle is unyieldingly anonymous, offering no clues to its contents."
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "glassbottle"
|
||||
worn_icon_state = "bottle"
|
||||
fill_icon_thresholds = list(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
|
||||
@@ -143,7 +144,7 @@
|
||||
/obj/item/broken_bottle
|
||||
name = "broken bottle"
|
||||
desc = "A bottle with a sharp broken bottom."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
icon_state = "broken_bottle"
|
||||
force = 9
|
||||
throwforce = 5
|
||||
@@ -159,9 +160,9 @@
|
||||
attack_verb_simple = list("stab", "slash", "attack")
|
||||
sharpness = SHARP_EDGED
|
||||
///The mask image for mimicking a broken-off bottom of the bottle
|
||||
var/static/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
|
||||
var/static/icon/broken_outline = icon('icons/obj/drinks/drink_effects.dmi', "broken")
|
||||
///The mask image for mimicking a broken-off neck of the bottle
|
||||
var/static/icon/flipped_broken_outline = icon('icons/obj/drinks.dmi', "broken-flipped")
|
||||
var/static/icon/flipped_broken_outline = icon('icons/obj/drinks/drink_effects.dmi', "broken-flipped")
|
||||
|
||||
/obj/item/broken_bottle/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -301,6 +302,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/holywater
|
||||
name = "flask of holy water"
|
||||
desc = "A flask of the chaplain's holy water."
|
||||
icon = 'icons/obj/drinks/bottles.dmi'
|
||||
icon_state = "holyflask"
|
||||
list_reagents = list(/datum/reagent/water/holywater = 100)
|
||||
drink_type = NONE
|
||||
@@ -623,7 +625,7 @@
|
||||
|
||||
/obj/projectile/bullet/reusable/champagne_cork
|
||||
name = "champagne cork"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
icon_state = "champagne_cork"
|
||||
hitsound = 'sound/weapons/genhit.ogg'
|
||||
damage = 10
|
||||
@@ -646,7 +648,7 @@
|
||||
|
||||
/obj/item/trash/champagne_cork
|
||||
name = "champagne cork"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/drink_effects.dmi'
|
||||
icon_state = "champagne_cork"
|
||||
|
||||
/obj/item/trash/champagne_cork/sabrage
|
||||
@@ -832,6 +834,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice
|
||||
name = "orange juice"
|
||||
desc = "Full of vitamins and deliciousness!"
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "orangejuice"
|
||||
list_reagents = list(/datum/reagent/consumable/orangejuice = 100)
|
||||
drink_type = FRUIT | BREAKFAST
|
||||
@@ -839,6 +842,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/cream
|
||||
name = "milk cream"
|
||||
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "cream"
|
||||
list_reagents = list(/datum/reagent/consumable/cream = 100)
|
||||
drink_type = DAIRY
|
||||
@@ -846,6 +850,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/tomatojuice
|
||||
name = "tomato juice"
|
||||
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "tomatojuice"
|
||||
list_reagents = list(/datum/reagent/consumable/tomatojuice = 100)
|
||||
drink_type = VEGETABLES
|
||||
@@ -853,6 +858,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/limejuice
|
||||
name = "lime juice"
|
||||
desc = "Sweet-sour goodness."
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "limejuice"
|
||||
list_reagents = list(/datum/reagent/consumable/limejuice = 100)
|
||||
drink_type = FRUIT
|
||||
@@ -860,6 +866,7 @@
|
||||
/obj/item/reagent_containers/cup/glass/bottle/juice/pineapplejuice
|
||||
name = "pineapple juice"
|
||||
desc = "Extremely tart, yellow juice."
|
||||
icon = 'icons/obj/drinks/boxes.dmi'
|
||||
icon_state = "pineapplejuice"
|
||||
list_reagents = list(/datum/reagent/consumable/pineapplejuice = 100)
|
||||
drink_type = FRUIT | PINEAPPLE
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/obj/item/reagent_containers/cup/soda_cans
|
||||
name = "soda can"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon = 'icons/obj/drinks/soda.dmi'
|
||||
reagent_flags = NONE
|
||||
spillable = FALSE
|
||||
custom_price = PAYCHECK_CREW * 0.9
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
#include "dcs_get_id_from_elements.dm"
|
||||
#include "designs.dm"
|
||||
#include "dragon_expiration.dm"
|
||||
#include "drink_icons.dm"
|
||||
#include "dummy_spawn.dm"
|
||||
#include "dynamic_ruleset_sanity.dm"
|
||||
#include "egg_glands.dm"
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/// Unit tests all glass style datums with icons / icon states that those are valid and not missing.
|
||||
/datum/unit_test/glass_style_icons
|
||||
/// The generic commonplace DMI for all normal drink sprites
|
||||
var/generic_drink_loc = 'icons/obj/drinks/drinks.dmi'
|
||||
/// The generic commonplace DMI for all mixed drink sprites
|
||||
var/generic_mixed_drink_loc = 'icons/obj/drinks/mixed_drinks.dmi'
|
||||
|
||||
/datum/unit_test/glass_style_icons/Run()
|
||||
for(var/container_type in GLOB.glass_style_singletons)
|
||||
for(var/reagent_type in GLOB.glass_style_singletons[container_type])
|
||||
var/datum/glass_style/style = GLOB.glass_style_singletons[container_type][reagent_type]
|
||||
var/style_icon = style.icon
|
||||
var/style_icon_state = style.icon_state
|
||||
|
||||
if(!style_icon_state)
|
||||
continue
|
||||
if(!style_icon)
|
||||
TEST_FAIL("[style.type] glass style had an icon state ([style_icon_state]) but no icon file.")
|
||||
continue
|
||||
if(icon_exists(style_icon, style_icon_state))
|
||||
continue
|
||||
|
||||
var/was_actually_in = ""
|
||||
// For ease of debugging errors, we will check a few generic locations
|
||||
// to see if it's just misplaced and the user needs to just correct it
|
||||
if(style_icon != generic_mixed_drink_loc && icon_exists(generic_mixed_drink_loc, style_icon_state))
|
||||
was_actually_in = "The icon was found in the mixed drinks dmi."
|
||||
else if(style_icon != generic_drink_loc && icon_exists(generic_drink_loc, style_icon_state))
|
||||
was_actually_in = "The icon was found in the standard drinks dmi."
|
||||
// If it wasn't found in either of the generic spots it could be absent or otherwise in another file
|
||||
else
|
||||
was_actually_in = "The icon may be located in another dmi or is missing."
|
||||
|
||||
TEST_FAIL("[style.type] glass style had an icon state ([style_icon_state]) not present in its icon ([style_icon]). [was_actually_in]")
|
||||
|
||||
/// Unit tests glass style datums are applied to drinking glasses
|
||||
/datum/unit_test/glass_style_functionality
|
||||
|
||||
/datum/unit_test/glass_style_functionality/Run()
|
||||
// The tested drink
|
||||
// Should ideally have multiple drinking glass datums associated (to check the correct one is seletced)
|
||||
// As well as a value set from every var (name, description, icon, and icon state)
|
||||
var/tested_reagent_type = /datum/reagent/consumable/ethanol/jack_rose
|
||||
var/obj/item/reagent_containers/cup/glass/drinkingglass/glass = allocate(/obj/item/reagent_containers/cup/glass/drinkingglass)
|
||||
var/datum/glass_style/expected_glass_type = GLOB.glass_style_singletons[glass.type][tested_reagent_type]
|
||||
TEST_ASSERT_NOTNULL(expected_glass_type, "Glass style datum for the tested reagent ([tested_reagent_type]) and container ([glass.type]) was not found.")
|
||||
|
||||
// Add 5 units of the reagent to the glass. This will change the name, desc, icon, and icon state
|
||||
glass.reagents.add_reagent(tested_reagent_type, 5)
|
||||
TEST_ASSERT_EQUAL(glass.icon, expected_glass_type.icon, "Glass icon file did not change after gaining a reagent that would change it.")
|
||||
TEST_ASSERT_EQUAL(glass.icon_state, expected_glass_type.icon_state, "Glass icon state did not change after gaining a reagent that would change it")
|
||||
TEST_ASSERT_EQUAL(glass.name, expected_glass_type.name, "Glass name did not change after gaining a reagent that would change it")
|
||||
TEST_ASSERT_EQUAL(glass.desc, expected_glass_type.desc, "Glass desc did not change after gaining a reagent that would change it")
|
||||
// Clear all units from the glass, This will reset all the previously changed values
|
||||
glass.reagents.clear_reagents()
|
||||
TEST_ASSERT_EQUAL(glass.icon, initial(glass.icon), "Glass icon file did not reset after clearing reagents")
|
||||
TEST_ASSERT_EQUAL(glass.icon_state, initial(glass.icon_state), "Glass icon state did not reset after clearing reagents")
|
||||
TEST_ASSERT_EQUAL(glass.name, initial(glass.name), "Glass name did not reset after clearing reagents")
|
||||
TEST_ASSERT_EQUAL(glass.desc, initial(glass.desc), "Glass desc did not reset after clearing reagents")
|
||||
|
||||
/// Unit tests glass subtypes have a valid icon setup
|
||||
/datum/unit_test/drink_icons
|
||||
|
||||
/datum/unit_test/drink_icons/Run()
|
||||
for(var/obj/item/reagent_containers/cup/glass/glass_subtypes as anything in subtypesof(/obj/item/reagent_containers/cup))
|
||||
var/glass_icon = initial(glass_subtypes.icon)
|
||||
var/glass_icon_state = initial(glass_subtypes.icon_state)
|
||||
if(!glass_icon_state)
|
||||
continue
|
||||
if(!glass_icon)
|
||||
TEST_FAIL("[glass_subtypes] had an icon state ([glass_icon_state]) but no icon file.")
|
||||
continue
|
||||
if(icon_exists(glass_icon, glass_icon_state))
|
||||
continue
|
||||
TEST_FAIL("[glass_subtypes] had an icon state ([glass_icon_state]) not present in its icon ([glass_icon]).")
|
||||
|
Before Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
@@ -934,6 +934,7 @@
|
||||
#include "code\datums\components\swarming.dm"
|
||||
#include "code\datums\components\tackle.dm"
|
||||
#include "code\datums\components\tactical.dm"
|
||||
#include "code\datums\components\takes_reagent_appearance.dm"
|
||||
#include "code\datums\components\tameable.dm"
|
||||
#include "code\datums\components\tattoo.dm"
|
||||
#include "code\datums\components\technointrovert.dm"
|
||||
@@ -4327,6 +4328,7 @@
|
||||
#include "code\modules\reagents\reagent_containers\syringes.dm"
|
||||
#include "code\modules\reagents\reagent_containers\watering_can.dm"
|
||||
#include "code\modules\reagents\reagent_containers\cups\_cup.dm"
|
||||
#include "code\modules\reagents\reagent_containers\cups\_glass_datum.dm"
|
||||
#include "code\modules\reagents\reagent_containers\cups\bottle.dm"
|
||||
#include "code\modules\reagents\reagent_containers\cups\drinkingglass.dm"
|
||||
#include "code\modules\reagents\reagent_containers\cups\drinks.dm"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/obj/item/reagent_containers/cup/glass/britcup : /obj/item/reagent_containers/cup/glass/mug/britcup{@OLD}
|
||||