diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 56126c6e37..127a1dde5d 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -173,6 +173,19 @@
"aay" = (
/turf/open/floor/plating,
/area/security/prison)
+"aaz" = (
+/obj/structure/lattice/catwalk,
+/obj/item/stack/marker_beacon{
+ anchored = 1;
+ icon_state = "markerburgundy-on";
+ light_color = "#FA644B";
+ light_power = 3;
+ light_range = 3;
+ name = "Docking Beacon";
+ picked_color = "Burgundy"
+ },
+/turf/open/space/basic,
+/area/space/nearstation)
"aaA" = (
/obj/machinery/seed_extractor,
/turf/open/floor/plasteel,
@@ -234,10 +247,46 @@
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/security/prison)
+"aaK" = (
+/obj/structure/lattice/catwalk,
+/obj/item/stack/marker_beacon{
+ anchored = 1;
+ icon_state = "markerburgundy-on";
+ light_color = "#FA644B";
+ light_power = 3;
+ light_range = 3;
+ name = "Docking Beacon";
+ picked_color = "Burgundy"
+ },
+/turf/open/floor/plating,
+/area/space/nearstation)
+"aaL" = (
+/obj/machinery/photocopier,
+/turf/open/floor/wood,
+/area/library)
+"aaM" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/turf_decal/tile/brown,
+/obj/effect/turf_decal/tile/brown{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/quartermaster/office)
"aaN" = (
/obj/structure/chair/sofa/right,
/turf/open/floor/plasteel,
/area/security/prison)
+"aaO" = (
+/obj/effect/spawner/lootdrop/keg,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"aaP" = (
/obj/machinery/computer/cryopod{
dir = 8;
@@ -248,6 +297,12 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"aaQ" = (
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"aaR" = (
/obj/structure/lattice,
/obj/structure/sign/warning/securearea{
@@ -285,6 +340,15 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"aaY" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 4;
+ name = "4maintenance loot spawner"
+ },
+/obj/item/poster/random_official,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"aaZ" = (
/turf/closed/wall/r_wall,
/area/ai_monitored/security/armory)
@@ -505,6 +569,11 @@
"abF" = (
/turf/open/floor/plasteel/freezer,
/area/security/prison)
+"abG" = (
+/obj/structure/door_assembly/door_assembly_mai,
+/obj/item/electronics/airlock,
+/turf/open/floor/plating,
+/area/maintenance/starboard/aft)
"abH" = (
/obj/structure/table,
/obj/item/storage/box/chemimp{
@@ -1565,6 +1634,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/crew_quarters/heads/hos)
+"adO" = (
+/obj/effect/spawner/structure/window/shuttle,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
"adP" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -1979,6 +2052,34 @@
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
+"aeD" = (
+/obj/structure/grille/broken,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aeE" = (
+/obj/structure/girder,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aeF" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/computer/station_alert{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/aisat_interior)
"aeG" = (
/obj/structure/cable,
/obj/machinery/power/solar{
@@ -2357,6 +2458,12 @@
},
/turf/open/floor/plasteel,
/area/security/main)
+"afn" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"afo" = (
/obj/machinery/door/airlock/external{
name = "Escape Pod Three"
@@ -2377,6 +2484,39 @@
},
/turf/open/space/basic,
/area/space)
+"afq" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
+"afr" = (
+/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
+"afs" = (
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_x = -31
+ },
+/obj/machinery/computer/monitor{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/aisat_interior)
"aft" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
@@ -2687,6 +2827,15 @@
/obj/machinery/atmospherics/pipe/manifold4w/general/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"age" = (
+/obj/structure/chair/office/dark{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"agf" = (
/obj/structure/table,
/obj/item/stack/sheet/metal,
@@ -2836,6 +2985,10 @@
/obj/machinery/suit_storage_unit/security,
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"agv" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"agw" = (
/obj/structure/table,
/obj/machinery/syndicatebomb/training,
@@ -2965,6 +3118,14 @@
},
/turf/open/floor/plasteel,
/area/security/main)
+"agH" = (
+/obj/machinery/bluespace_beacon,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/landmark/start/cyborg,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/aisat_interior)
"agI" = (
/obj/machinery/airalarm{
pixel_y = 23
@@ -3094,6 +3255,12 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/security/warden)
+"agX" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"agY" = (
/obj/structure/table,
/obj/item/storage/fancy/donut_box,
@@ -3334,6 +3501,16 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/security/warden)
+"ahw" = (
+/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"ahx" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -4474,6 +4651,16 @@
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/security/brig)
+"ajC" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ai_monitored/turret_protected/aisat_interior)
"ajD" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -4682,6 +4869,18 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/maintenance/solars/port/fore)
+"ajX" = (
+/obj/machinery/computer/teleporter{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/ai_monitored/turret_protected/aisat_interior)
+"ajY" = (
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/effect/landmark/start/cyborg,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/aisat/atmos)
"ajZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/warning/vacuum/external{
@@ -4965,6 +5164,18 @@
},
/turf/open/floor/plasteel,
/area/security/courtroom)
+"akz" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/start/cyborg,
+/turf/open/floor/plasteel/dark,
+/area/ai_monitored/turret_protected/aisat_interior)
"akA" = (
/obj/structure/chair{
dir = 8;
@@ -29979,17 +30190,6 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
-"bwc" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel,
-/area/quartermaster/office)
"bwd" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -49288,47 +49488,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
-"ctu" = (
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctv" = (
/turf/closed/wall/r_wall,
/area/space/nearstation)
-"ctw" = (
-/obj/machinery/airalarm{
- dir = 4;
- pixel_x = -23
- },
-/obj/machinery/computer/station_alert,
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/aisat_interior)
-"ctx" = (
-/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
-"cty" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctz" = (
/obj/machinery/door/poddoor/shutters{
id = "teledoor";
@@ -49373,41 +49535,6 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
-"ctG" = (
-/obj/structure/chair/office/dark{
- dir = 8
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
-"ctH" = (
-/obj/machinery/computer/security/telescreen/entertainment{
- pixel_x = -31
- },
-/obj/machinery/computer/monitor,
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 4
- },
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/aisat_interior)
-"ctI" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctJ" = (
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -49431,13 +49558,6 @@
},
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat_interior)
-"ctM" = (
-/obj/machinery/bluespace_beacon,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctN" = (
/obj/machinery/atmospherics/pipe/simple/yellow/visible{
dir = 10
@@ -49445,13 +49565,6 @@
/obj/structure/lattice,
/turf/open/space,
/area/space/nearstation)
-"ctP" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctQ" = (
/obj/structure/table,
/obj/machinery/microwave{
@@ -49477,28 +49590,6 @@
/obj/structure/sign/warning/radiation/rad_area,
/turf/closed/wall,
/area/engine/engineering)
-"ctS" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
-"ctT" = (
-/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/landmark/start/cyborg,
-/turf/open/floor/plasteel/grimy,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctU" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -49521,10 +49612,6 @@
/obj/structure/chair,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
-"ctW" = (
-/obj/machinery/computer/teleporter,
-/turf/open/floor/plating,
-/area/ai_monitored/turret_protected/aisat_interior)
"ctX" = (
/obj/machinery/camera{
c_tag = "MiniSat Teleporter";
@@ -49805,11 +49892,6 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat/atmos)
-"cuC" = (
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/aisat/atmos)
"cuD" = (
/obj/machinery/light/small{
dir = 8
@@ -49858,17 +49940,6 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
-"cuG" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/holopad,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
-/area/ai_monitored/turret_protected/aisat_interior)
"cuH" = (
/obj/machinery/light/small{
dir = 8
@@ -53259,13 +53330,6 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/crew_quarters/dorms)
-"dkk" = (
-/obj/machinery/photocopier{
- pixel_x = -5;
- pixel_y = -5
- },
-/turf/open/floor/wood,
-/area/library)
"dok" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
@@ -53692,18 +53756,6 @@
dir = 1
},
/area/crew_quarters/fitness)
-"fsk" = (
-/obj/structure/lattice/catwalk,
-/obj/item/stack/marker_beacon{
- anchored = 1;
- icon_state = "markerburgundy-on";
- light_power = 3;
- light_range = 3;
- name = "Docking Beacon";
- picked_color = "Burgundy"
- },
-/turf/open/floor/plating,
-/area/space/nearstation)
"ftv" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance{
@@ -54203,18 +54255,6 @@
dir = 1
},
/area/crew_quarters/fitness)
-"hho" = (
-/obj/structure/lattice/catwalk,
-/obj/item/stack/marker_beacon{
- anchored = 1;
- icon_state = "markerburgundy-on";
- light_power = 3;
- light_range = 3;
- name = "Docking Beacon";
- picked_color = "Burgundy"
- },
-/turf/open/space/basic,
-/area/space/nearstation)
"hik" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -54439,9 +54479,6 @@
"iiW" = (
/turf/open/floor/wood,
/area/maintenance/bar)
-"ikx" = (
-/turf/open/floor/plating/foam,
-/area/space/nearstation)
"ilJ" = (
/obj/effect/turf_decal/tile/red,
/obj/machinery/light{
@@ -55678,10 +55715,6 @@
/obj/structure/extinguisher_cabinet,
/turf/closed/wall/r_wall,
/area/hallway/primary/central)
-"mwb" = (
-/obj/effect/spawner/structure/window/shuttle,
-/turf/open/floor/plating,
-/area/space/nearstation)
"mwO" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -56803,10 +56836,6 @@
/obj/item/target/syndicate,
/turf/open/floor/plating,
/area/security/prison)
-"rxH" = (
-/obj/structure/girder,
-/turf/open/floor/plating,
-/area/space/nearstation)
"rzg" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -57253,12 +57282,6 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
-"thr" = (
-/obj/structure/frame/computer{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/space/nearstation)
"tkU" = (
/turf/open/floor/wood{
icon_state = "wood-broken5"
@@ -58554,10 +58577,6 @@
},
/turf/open/space/basic,
/area/space/nearstation)
-"xWM" = (
-/obj/structure/grille/broken,
-/turf/open/floor/plating,
-/area/space/nearstation)
"xXY" = (
/obj/structure/closet/lasertag/red,
/obj/item/clothing/under/pj/red,
@@ -64623,11 +64642,11 @@ aaa
aaa
aaa
aaa
-fsk
+aaK
aaa
aaa
aaa
-fsk
+aaK
aaa
aaa
aaa
@@ -64874,9 +64893,9 @@ aaa
aaa
aaa
aaa
-fsk
+aaK
aaa
-fsk
+aaK
aaa
aaa
aaa
@@ -64888,9 +64907,9 @@ gXs
aaa
aaa
aaa
-fsk
+aaK
aaa
-fsk
+aaK
aaa
aaa
aaa
@@ -81103,7 +81122,7 @@ bpB
bpB
brR
bsV
-bwc
+aaM
bxA
bvI
bwX
@@ -95688,9 +95707,9 @@ aaa
aaa
aaa
aaa
-hho
+aaz
aaa
-hho
+aaz
aaa
aaa
aaa
@@ -96072,7 +96091,7 @@ aaf
ctZ
cui
cuq
-cuC
+ajY
cuO
cuz
cvm
@@ -96580,8 +96599,8 @@ czk
cti
cua
cua
-ctw
-ctH
+aeF
+afs
ctQ
cuc
cuj
@@ -96837,9 +96856,9 @@ ctb
cth
cua
ctr
-ctu
-ctG
-ctP
+afn
+age
+agX
cub
cuj
cur
@@ -97094,13 +97113,13 @@ ctc
ctc
cto
ctt
-cty
+afq
ctJ
-ctT
+ahw
cue
cul
cuu
-cuG
+akz
cuS
cve
cvo
@@ -97351,9 +97370,9 @@ ctb
ctj
ctk
cts
-ctx
-ctI
-ctS
+afr
+agv
+ajC
cud
cuk
cus
@@ -98123,7 +98142,7 @@ aaa
aaf
cua
ctF
-ctM
+agH
ctX
cuf
cum
@@ -98381,7 +98400,7 @@ aaf
cua
ctE
ctL
-ctW
+ajX
cuf
cum
cuw
@@ -101379,7 +101398,7 @@ bbE
aIr
bav
aLf
-dkk
+aaL
kLR
aRO
aQp
@@ -101961,10 +101980,10 @@ aaa
aaa
aaa
aaa
-ikx
-mwb
-xWM
-rxH
+aaH
+adO
+aeD
+aeE
aaa
aaa
aaa
@@ -102219,10 +102238,10 @@ xNY
kvb
aaa
aaa
-ikx
-ikx
-ikx
-rxH
+aaH
+aaH
+aaH
+aeE
aaa
aaa
aaa
@@ -102473,13 +102492,13 @@ czZ
cOT
aaa
jmC
-dbM
-dbM
-ikx
-ikx
-ikx
-thr
-mwb
+aaH
+aaH
+aaH
+aaH
+aaH
+aaH
+adO
aaa
aaa
aaa
@@ -102732,8 +102751,8 @@ gXs
xNY
kvb
gJg
-dbM
-dbM
+aaH
+aaH
aaa
aaa
gJg
@@ -102990,8 +103009,8 @@ aaa
aaa
gJg
gJg
-mwb
-ikx
+adO
+aaH
gXs
aaa
aaa
@@ -106072,7 +106091,7 @@ cNW
clt
cQw
cNW
-cNW
+abG
cNW
cNW
aaf
@@ -106328,7 +106347,7 @@ aaa
cOT
clt
cQw
-cOe
+aaO
cOe
cOe
cNW
@@ -106585,11 +106604,11 @@ aaa
cOT
clt
cQw
+aaQ
cOe
cOe
-cOe
-cOe
-sQX
+cNW
+aaa
jzi
jzi
jzi
@@ -106842,11 +106861,11 @@ aaa
cNW
clt
cQw
-cOe
+bNB
cOe
cOe
cNW
-aaf
+lCL
aaS
aaa
aaf
@@ -107099,7 +107118,7 @@ cNW
cNW
clt
cQw
-cOe
+aaY
cOe
cOe
cNW
diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm
index 36ea64de2c..54f4648006 100644
--- a/code/__DEFINES/reagents.dm
+++ b/code/__DEFINES/reagents.dm
@@ -8,7 +8,7 @@
#define REAGENT_PURITY_ACCURACY 0.001
#define DEFAULT_SPECIFIC_HEAT 200
-// container_type defines
+//reagents_holder_flags defines
#define INJECTABLE (1<<0) // Makes it possible to add reagents through droppers and syringes.
#define DRAWABLE (1<<1) // Makes it possible to remove reagents through syringes.
@@ -29,6 +29,11 @@
#define PATCH 4 // patches
#define INJECT 5 // injection
+//container_flags
+#define PH_WEAK (1 << 0)
+#define TEMP_WEAK (1 << 1)
+#define APTFT_VERB (1 << 2) //APTFT stands for "amount per transfer from this"
+#define APTFT_ALTCLICK (1 << 3)
//defines passed through to the on_reagent_change proc
#define DEL_REAGENT 1 // reagent deleted (fully cleared)
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 59bf210853..605f7f8ae7 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -145,20 +145,6 @@
turfs += T
return turfs
-
-//This is the new version of recursive_mob_check, used for say().
-//The other proc was left intact because morgue trays use it.
-//Sped this up again for real this time
-/proc/recursive_hear_check(O)
- var/list/processing_list = list(O)
- . = list()
- while(processing_list.len)
- var/atom/A = processing_list[1]
- if(A.flags_1 & HEAR_1)
- . += A
- processing_list.Cut(1, 2)
- processing_list += A.contents
-
/** recursive_organ_check
* inputs: O (object to start with)
* outputs:
@@ -238,35 +224,30 @@
return found_mobs
-
/proc/get_hearers_in_view(R, atom/source)
- // Returns a list of hearers in view(R) from source (ignoring luminosity). Used in saycode.
var/turf/T = get_turf(source)
. = list()
-
if(!T)
return
-
- var/list/processing_list = list()
- if (R == 0) // if the range is zero, we know exactly where to look for, we can skip view
- processing_list += T.contents // We can shave off one iteration by assuming turfs cannot hear
- else // A variation of get_hear inlined here to take advantage of the compiler's fastpath for obj/mob in view
+ var/list/processing = list()
+ if(R == 0)
+ processing += T.contents
+ else
var/lum = T.luminosity
- T.luminosity = 6 // This is the maximum luminosity
- var/list/cachedview = view(R, T)
- for(var/mob/M in cachedview)
- processing_list += M
- for(var/obj/O in cachedview)
- processing_list += O
+ T.luminosity = 6
+ var/list/cached_view = view(R, T)
+ for(var/mob/M in cached_view)
+ processing += M
+ for(var/obj/O in cached_view)
+ processing += O
T.luminosity = lum
-
- while(processing_list.len) // recursive_hear_check inlined here
- var/atom/A = processing_list[1]
+ var/i = 0
+ while(i < length(processing))
+ var/atom/A = processing[++i]
if(A.flags_1 & HEAR_1)
. += A
- SEND_SIGNAL(A, COMSIG_ATOM_HEARER_IN_VIEW, processing_list, .)
- processing_list.Cut(1, 2)
- processing_list += A.contents
+ SEND_SIGNAL(A, COMSIG_ATOM_HEARER_IN_VIEW, processing, .)
+ processing += A.contents
/proc/get_mobs_in_radio_ranges(list/obj/item/radio/radios)
. = list()
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 8b86ce691d..2f960e350b 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -457,36 +457,35 @@ Turf and target are separate in case you want to teleport some distance from a t
/atom/proc/GetAllContents(var/T)
var/list/processing_list = list(src)
- var/list/assembled = list()
if(T)
- while(processing_list.len)
- var/atom/A = processing_list[1]
- processing_list.Cut(1, 2)
+ . = list()
+ var/i = 0
+ while(i < length(processing_list))
+ var/atom/A = processing_list[++i]
//Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed
//This is also why we don't need to check against assembled as we go along
processing_list += A.contents
if(istype(A,T))
- assembled += A
+ . += A
else
- while(processing_list.len)
- var/atom/A = processing_list[1]
- processing_list.Cut(1, 2)
+ var/i = 0
+ while(i < length(processing_list))
+ var/atom/A = processing_list[++i]
processing_list += A.contents
- assembled += A
- return assembled
+ return processing_list
/atom/proc/GetAllContentsIgnoring(list/ignore_typecache)
if(!length(ignore_typecache))
return GetAllContents()
var/list/processing = list(src)
- var/list/assembled = list()
- while(processing.len)
- var/atom/A = processing[1]
- processing.Cut(1,2)
+ . = list()
+ var/i = 0
+ while(i < length(processing))
+ var/atom/A = processing[++i]
if(!ignore_typecache[A.type])
processing += A.contents
- assembled += A
- return assembled
+ . += A
+
//Step-towards method of determining whether one atom can see another. Similar to viewers()
/proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate.
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index e958345d4f..31dd6d32a3 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -309,6 +309,15 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
recipes = GLOB.bamboo_recipes
return ..()
+/obj/item/stack/sheet/mineral/bamboo/ten
+ amount = 10
+
+/obj/item/stack/sheet/mineral/bamboo/twenty
+ amount = 20
+
+/obj/item/stack/sheet/mineral/bamboo/fifty
+ amount = 50
+
/*
* Cloth
*/
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 9a095bf69d..daf15832fb 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -532,7 +532,7 @@
/obj/structure/closet/CtrlShiftClick(mob/living/user)
if(!HAS_TRAIT(user, TRAIT_SKITTISH))
return ..()
- if(!user.canUseTopic(src) || !isturf(user.loc))
+ if(!user.canUseTopic(src) || !isturf(user.loc) || !user.Adjacent(src) || !user.CanReach(src))
return
dive_into(user)
diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm
index 372824c8e4..ea8ef8ba0f 100644
--- a/code/modules/cargo/packs/armory.dm
+++ b/code/modules/cargo/packs/armory.dm
@@ -201,22 +201,6 @@
var/item = pick(contains)
new item(C)
-/datum/supply_pack/security/armory/spinfusor
- name = "Stormhammer Spinfusor Crate"
- cost = 14000
- desc = "Got yourself a code red? Blob, nukies or even worst knocking on your door? Well with the Stormhammer Spinfusor you can stop crime in one shot, dont miss! Contains two Stormhammer Spinfusors (Note, guns may or may not be loaded). Requires Armory access to open."
- contains = list(/obj/item/gun/ballistic/automatic/spinfusor,
- /obj/item/gun/ballistic/automatic/spinfusor)
- crate_name = "spinfusor crate"
-
-/datum/supply_pack/security/armory/spinfusorammo
- name = "Spinfusor Disk Crate"
- cost = 7000
- desc = "Need more ammo for a Stormhammer? Well we got some for a price! Contains two boxes of Spinfusor disks. Requires Armory access to open."
- contains = list(/obj/item/ammo_box/aspinfusor,
- /obj/item/ammo_box/aspinfusor)
- crate_name = "spinfusor disk crate"
-
/datum/supply_pack/security/armory/swat
name = "SWAT Crate"
desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open."
diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm
index f41a43070d..4a64979502 100644
--- a/code/modules/cargo/packs/costumes_toys.dm
+++ b/code/modules/cargo/packs/costumes_toys.dm
@@ -3,7 +3,7 @@
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
// cost = 700- Minimum cost, or infinite points are possible.
//////////////////////////////////////////////////////////////////////////////
-//////////////////////////// Costumes & Toys /////////////////////////////////
+////////////////////////////////// Toys //////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/costumes_toys
@@ -98,40 +98,6 @@
/obj/item/ammo_box/magazine/toy/pistol)
crate_name = "foam force crate"
-/datum/supply_pack/costumes_toys/formalwear
- name = "Formalwear Crate"
- desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing."
- cost = 4750 //Lots of fancy clothing that can be sold back!
- contains = list(/obj/item/clothing/under/blacktango,
- /obj/item/clothing/under/assistantformal,
- /obj/item/clothing/under/assistantformal,
- /obj/item/clothing/under/lawyer/bluesuit,
- /obj/item/clothing/suit/toggle/lawyer,
- /obj/item/clothing/under/lawyer/purpsuit,
- /obj/item/clothing/suit/toggle/lawyer/purple,
- /obj/item/clothing/under/lawyer/blacksuit,
- /obj/item/clothing/suit/toggle/lawyer/black,
- /obj/item/clothing/accessory/waistcoat,
- /obj/item/clothing/neck/tie/blue,
- /obj/item/clothing/neck/tie/red,
- /obj/item/clothing/neck/tie/black,
- /obj/item/clothing/head/bowler,
- /obj/item/clothing/head/fedora,
- /obj/item/clothing/head/flatcap,
- /obj/item/clothing/head/beret,
- /obj/item/clothing/head/that,
- /obj/item/clothing/shoes/laceup,
- /obj/item/clothing/shoes/laceup,
- /obj/item/clothing/shoes/laceup,
- /obj/item/clothing/under/suit_jacket/charcoal,
- /obj/item/clothing/under/suit_jacket/navy,
- /obj/item/clothing/under/suit_jacket/burgundy,
- /obj/item/clothing/under/suit_jacket/checkered,
- /obj/item/clothing/under/suit_jacket/tan,
- /obj/item/lipstick/random)
- crate_name = "formalwear crate"
- crate_type = /obj/structure/closet/crate/wooden
-
/datum/supply_pack/costumes_toys/clownpin
name = "Hilarious Firing Pin Crate"
desc = "I uh... I'm not really sure what this does. Wanna buy it?"
@@ -173,47 +139,6 @@
contains = list(/obj/item/storage/box/lasertagpins)
crate_name = "laser tag crate"
-/datum/supply_pack/costumes_toys/costume_original
- name = "Original Costume Crate"
- desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!"
- cost = 1750
- contains = list(/obj/item/clothing/head/snowman,
- /obj/item/clothing/suit/snowman,
- /obj/item/clothing/head/chicken,
- /obj/item/clothing/suit/chickensuit,
- /obj/item/clothing/mask/gas/monkeymask,
- /obj/item/clothing/suit/monkeysuit,
- /obj/item/clothing/head/cardborg,
- /obj/item/clothing/suit/cardborg,
- /obj/item/clothing/head/xenos,
- /obj/item/clothing/suit/xenos,
- /obj/item/clothing/suit/hooded/ian_costume,
- /obj/item/clothing/suit/hooded/carp_costume,
- /obj/item/clothing/suit/hooded/bee_costume)
- crate_name = "original costume crate"
- crate_type = /obj/structure/closet/crate/wooden
-
-/datum/supply_pack/costumes_toys/costume
- name = "Standard Costume Crate"
- desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing."
- cost = 1300
- access = ACCESS_THEATRE
- contains = list(/obj/item/storage/backpack/clown,
- /obj/item/clothing/shoes/clown_shoes,
- /obj/item/clothing/mask/gas/clown_hat,
- /obj/item/clothing/under/rank/clown,
- /obj/item/bikehorn,
- /obj/item/clothing/under/rank/mime,
- /obj/item/clothing/shoes/sneakers/black,
- /obj/item/clothing/gloves/color/white,
- /obj/item/clothing/mask/gas/mime,
- /obj/item/clothing/head/beret,
- /obj/item/clothing/suit/suspenders,
- /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing,
- /obj/item/storage/backpack/mime)
- crate_name = "standard costume crate"
- crate_type = /obj/structure/closet/crate/wooden
-
/datum/supply_pack/costumes_toys/randomised/toys
name = "Toy Crate"
desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors."
@@ -284,6 +209,86 @@
crate_name = "plushie crate"
crate_type = /obj/structure/closet/crate/wooden
+
+//////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// Costumes //////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/costumes_toys/formalwear
+ name = "Formalwear Crate"
+ desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing."
+ cost = 4750 //Lots of fancy clothing that can be sold back!
+ contains = list(/obj/item/clothing/under/blacktango,
+ /obj/item/clothing/under/assistantformal,
+ /obj/item/clothing/under/assistantformal,
+ /obj/item/clothing/under/lawyer/bluesuit,
+ /obj/item/clothing/suit/toggle/lawyer,
+ /obj/item/clothing/under/lawyer/purpsuit,
+ /obj/item/clothing/suit/toggle/lawyer/purple,
+ /obj/item/clothing/under/lawyer/blacksuit,
+ /obj/item/clothing/suit/toggle/lawyer/black,
+ /obj/item/clothing/accessory/waistcoat,
+ /obj/item/clothing/neck/tie/blue,
+ /obj/item/clothing/neck/tie/red,
+ /obj/item/clothing/neck/tie/black,
+ /obj/item/clothing/head/bowler,
+ /obj/item/clothing/head/fedora,
+ /obj/item/clothing/head/flatcap,
+ /obj/item/clothing/head/beret,
+ /obj/item/clothing/head/that,
+ /obj/item/clothing/shoes/laceup,
+ /obj/item/clothing/shoes/laceup,
+ /obj/item/clothing/shoes/laceup,
+ /obj/item/clothing/under/suit_jacket/charcoal,
+ /obj/item/clothing/under/suit_jacket/navy,
+ /obj/item/clothing/under/suit_jacket/burgundy,
+ /obj/item/clothing/under/suit_jacket/checkered,
+ /obj/item/clothing/under/suit_jacket/tan,
+ /obj/item/lipstick/random)
+ crate_name = "formalwear crate"
+ crate_type = /obj/structure/closet/crate/wooden
+
+/datum/supply_pack/costumes_toys/costume_original
+ name = "Original Costume Crate"
+ desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!"
+ cost = 1750
+ contains = list(/obj/item/clothing/head/snowman,
+ /obj/item/clothing/suit/snowman,
+ /obj/item/clothing/head/chicken,
+ /obj/item/clothing/suit/chickensuit,
+ /obj/item/clothing/mask/gas/monkeymask,
+ /obj/item/clothing/suit/monkeysuit,
+ /obj/item/clothing/head/cardborg,
+ /obj/item/clothing/suit/cardborg,
+ /obj/item/clothing/head/xenos,
+ /obj/item/clothing/suit/xenos,
+ /obj/item/clothing/suit/hooded/ian_costume,
+ /obj/item/clothing/suit/hooded/carp_costume,
+ /obj/item/clothing/suit/hooded/bee_costume)
+ crate_name = "original costume crate"
+ crate_type = /obj/structure/closet/crate/wooden
+
+/datum/supply_pack/costumes_toys/costume
+ name = "Standard Costume Crate"
+ desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing."
+ cost = 1300
+ access = ACCESS_THEATRE
+ contains = list(/obj/item/storage/backpack/clown,
+ /obj/item/clothing/shoes/clown_shoes,
+ /obj/item/clothing/mask/gas/clown_hat,
+ /obj/item/clothing/under/rank/clown,
+ /obj/item/bikehorn,
+ /obj/item/clothing/under/rank/mime,
+ /obj/item/clothing/shoes/sneakers/black,
+ /obj/item/clothing/gloves/color/white,
+ /obj/item/clothing/mask/gas/mime,
+ /obj/item/clothing/head/beret,
+ /obj/item/clothing/suit/suspenders,
+ /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing,
+ /obj/item/storage/backpack/mime)
+ crate_name = "standard costume crate"
+ crate_type = /obj/structure/closet/crate/wooden
+
/datum/supply_pack/costumes_toys/wizard
name = "Wizard Costume Crate"
desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life."
@@ -294,76 +299,3 @@
/obj/item/clothing/head/wizard/fake)
crate_name = "wizard costume crate"
crate_type = /obj/structure/closet/crate/wooden
-
-/datum/supply_pack/costumes_toys/wardrobes/autodrobe
- name = "Autodrobe Supply Crate"
- desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
- cost = 1500
- contains = list(/obj/item/vending_refill/autodrobe)
- crate_name = "autodrobe supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/cargo
- name = "Cargo Wardrobe Supply Crate"
- desc = "This crate contains a refill for the CargoDrobe."
- cost = 750
- contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe)
- crate_name = "cargo department supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/engineering
- name = "Engineering Wardrobe Supply Crate"
- desc = "This crate contains refills for the EngiDrobe and AtmosDrobe."
- cost = 1500
- contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe,
- /obj/item/vending_refill/wardrobe/atmos_wardrobe)
- crate_name = "engineering department wardrobe supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/general
- name = "General Wardrobes Supply Crate"
- desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe."
- cost = 3750
- contains = list(/obj/item/vending_refill/wardrobe/curator_wardrobe,
- /obj/item/vending_refill/wardrobe/bar_wardrobe,
- /obj/item/vending_refill/wardrobe/chef_wardrobe,
- /obj/item/vending_refill/wardrobe/jani_wardrobe,
- /obj/item/vending_refill/wardrobe/chap_wardrobe)
- crate_name = "general wardrobes vendor refills"
-
-/datum/supply_pack/costumes_toys/wardrobes/hydroponics
- name = "Hydrobe Supply Crate"
- desc = "This crate contains a refill for the Hydrobe."
- cost = 750
- contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe)
- crate_name = "hydrobe supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/medical
- name = "Medical Wardrobe Supply Crate"
- desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe."
- cost = 3000
- contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe,
- /obj/item/vending_refill/wardrobe/chem_wardrobe,
- /obj/item/vending_refill/wardrobe/gene_wardrobe,
- /obj/item/vending_refill/wardrobe/viro_wardrobe)
- crate_name = "medical department wardrobe supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/science
- name = "Science Wardrobe Supply Crate"
- desc = "This crate contains refills for the SciDrobe and RoboDrobe."
- cost = 1500
- contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe,
- /obj/item/vending_refill/wardrobe/science_wardrobe)
- crate_name = "science department wardrobe supply crate"
-
-/datum/supply_pack/costumes_toys/wardrobes/security
- name = "Security Wardrobe Supply Crate"
- desc = "This crate contains refills for the SecDrobe and LawDrobe."
- cost = 1500
- contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe,
- /obj/item/vending_refill/wardrobe/law_wardrobe)
- crate_name = "security department supply crate"
-
-/datum/supply_pack/costumes_toys/kinkmate
- name = "Kinkmate construction kit"
- cost = 2000
- contraband = TRUE
- contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate)
- crate_name = "Kinkmate construction kit"
diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm
index 747e820f52..e32811f2d0 100644
--- a/code/modules/cargo/packs/emergency.dm
+++ b/code/modules/cargo/packs/emergency.dm
@@ -11,11 +11,13 @@
/datum/supply_pack/emergency/vehicle
name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN
- desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!"
+ desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, two cans of spraypaint, and a complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!"
cost = 2500
contraband = TRUE
contains = list(/obj/vehicle/ridden/atv,
/obj/item/key,
+ /obj/item/toy/crayon/spraycan,
+ /obj/item/toy/crayon/spraycan,
/obj/item/clothing/suit/jacket/leather/overcoat,
/obj/item/clothing/gloves/color/black,
/obj/item/clothing/head/soft,
@@ -126,21 +128,6 @@
crate_name = "emergency rcds"
crate_type = /obj/structure/closet/crate/internals
-/datum/supply_pack/emergency/soft_suit
- name = "Emergency Space Suit"
- desc = "Are there bombs going off left and right? Are there meteors shooting around the station? Well then! Here's two fragile space suits for emergencies. Comes with air and masks."
- cost = 1200
- contains = list(/obj/item/tank/internals/air,
- /obj/item/tank/internals/air,
- /obj/item/clothing/mask/gas,
- /obj/item/clothing/mask/gas,
- /obj/item/clothing/suit/space/fragile,
- /obj/item/clothing/suit/space/fragile,
- /obj/item/clothing/head/helmet/space/fragile,
- /obj/item/clothing/head/helmet/space/fragile)
- crate_name = "emergency crate"
- crate_type = /obj/structure/closet/crate/internals
-
/datum/supply_pack/emergency/bomb
name = "Explosive Emergency Crate"
desc = "Science gone bonkers? Beeping behind the airlock? Buy now and be the hero the station des... I mean needs! (Time not included.)"
@@ -208,7 +195,7 @@
crate_name = "metal foam grenade crate"
/datum/supply_pack/emergency/mre
- name = "MRE supply kit (emergency rations)"
+ name = "MRE Packs (Emergency Rations)"
desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank."
cost = 2000
contains = list(/obj/item/storage/box/mre/menu1/safe,
@@ -296,6 +283,21 @@
crate_name = "space suit crate"
crate_type = /obj/structure/closet/crate/secure
+/datum/supply_pack/emergency/soft_suit
+ name = "Space Suits (Fragile)"
+ desc = "Are there bombs going off left and right? Are there meteors shooting around the station? Well then! Here's two fragile space suits for emergencies. Comes with air and masks."
+ cost = 1200
+ contains = list(/obj/item/tank/internals/air,
+ /obj/item/tank/internals/air,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/mask/gas,
+ /obj/item/clothing/suit/space/fragile,
+ /obj/item/clothing/suit/space/fragile,
+ /obj/item/clothing/head/helmet/space/fragile,
+ /obj/item/clothing/head/helmet/space/fragile)
+ crate_name = "emergency crate"
+ crate_type = /obj/structure/closet/crate/internals
+
/datum/supply_pack/emergency/spacejets
name = "Spare EVA Jetpacks"
desc = "Contains three EVA grade jectpaks. Requires EVA access to open."
diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm
index 6492df5215..22258d19a7 100644
--- a/code/modules/cargo/packs/engineering.dm
+++ b/code/modules/cargo/packs/engineering.dm
@@ -3,7 +3,7 @@
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
// cost = 700- Minimum cost, or infinite points are possible.
//////////////////////////////////////////////////////////////////////////////
-//////////////////////////// Engineering /////////////////////////////////////
+///////////////////////////// Engineering ////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/engineering
@@ -45,6 +45,7 @@
/obj/item/clothing/glasses/meson/engine,
/obj/item/clothing/glasses/meson/engine)
crate_name = "engineering gear crate"
+ crate_type = /obj/structure/closet/crate/secure/engineering
/datum/supply_pack/engineering/engihardsuit
name = "Engineering Hardsuit"
@@ -55,6 +56,7 @@
/obj/item/clothing/mask/gas,
/obj/item/clothing/suit/space/hardsuit/engine)
crate_name = "engineering hardsuit"
+ crate_type = /obj/structure/closet/crate/secure/engineering
/datum/supply_pack/engineering/atmoshardsuit
name = "Atmospherics Hardsuit"
@@ -114,6 +116,22 @@
crate_name = "PACMAN generator crate"
crate_type = /obj/structure/closet/crate/engineering/electrical
+/datum/supply_pack/engineering/airpump
+ name = "Portable Air Pump Crate"
+ desc = "We all know you work in a high pressure workplace. Keep it that way with two additional air pumps!"
+ cost = 3000
+ contains = list(/obj/machinery/portable_atmospherics/pump,
+ /obj/machinery/portable_atmospherics/pump)
+ crate_name = "portable air pump crate"
+
+/datum/supply_pack/engineering/airscrubber
+ name = "Portable Scrubber Crate"
+ desc = "Miasma got you down? Plasma in the vents? Freshen up with these two brand-new air scrubbers!"
+ cost = 3000
+ contains = list(/obj/machinery/portable_atmospherics/scrubber,
+ /obj/machinery/portable_atmospherics/scrubber)
+ crate_name = "portable scrubber crate"
+
/datum/supply_pack/engineering/power
name = "Power Cell Crate"
desc = "Looking for power overwhelming? Look no further. Contains three high-voltage power cells."
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index d4fcdab962..ea327ae820 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -10,6 +10,10 @@
group = "Medical"
crate_type = /obj/structure/closet/crate/medical
+//////////////////////////////////////////////////////////////////////////////
+/////////////////////////////// Equipment ////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
/datum/supply_pack/medical/bodybags
name = "Bodybags"
desc = "For when the bodies hit the floor. Contains 4 boxes of bodybags."
@@ -20,24 +24,6 @@
/obj/item/storage/box/bodybags,)
crate_name = "bodybag crate"
-/datum/supply_pack/medical/firstaidbruises
- name = "Bruise Treatment Kit Crate"
- desc = "Contains three first aid kits focused on healing bruises and broken bones."
- cost = 1000
- contains = list(/obj/item/storage/firstaid/brute,
- /obj/item/storage/firstaid/brute,
- /obj/item/storage/firstaid/brute)
- crate_name = "brute treatment kit crate"
-
-/datum/supply_pack/medical/firstaidburns
- name = "Burn Treatment Kit Crate"
- desc = "Contains three first aid kits focused on healing severe burns."
- cost = 1000
- contains = list(/obj/item/storage/firstaid/fire,
- /obj/item/storage/firstaid/fire,
- /obj/item/storage/firstaid/fire)
- crate_name = "burn treatment kit crate"
-
/datum/supply_pack/medical/bloodpacks
name = "Blood Pack Variety Crate"
desc = "Contains nine different blood packs for reintroducing blood to patients, plus two universal synthetic blood packs."
@@ -86,16 +72,6 @@
/obj/item/defibrillator/loaded)
crate_name = "defibrillator crate"
-/datum/supply_pack/medical/firstaid
- name = "First Aid Kit Crate"
- desc = "Contains four first aid kits for healing most types of wounds."
- cost = 1000
- contains = list(/obj/item/storage/firstaid/regular,
- /obj/item/storage/firstaid/regular,
- /obj/item/storage/firstaid/regular,
- /obj/item/storage/firstaid/regular)
- crate_name = "first aid kit crate"
-
/datum/supply_pack/medical/iv_drip
name = "IV Drip Crate"
desc = "Contains a single IV drip stand for intravenous delivery."
@@ -140,13 +116,57 @@
/obj/item/storage/pill_bottle/stimulant)
crate_name = "medical supplies crate"
-/datum/supply_pack/medical/vending
- name = "Medical Vending Crate"
- desc = "Contains refills for medical vending machines."
- cost = 2000
- contains = list(/obj/item/vending_refill/medical,
- /obj/item/vending_refill/wallmed)
- crate_name = "medical vending crate"
+/datum/supply_pack/medical/adv_surgery_tools
+ name = "Med-Co Advanced Surgery Tools"
+ desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
+ cost = 5500
+ access = ACCESS_SURGERY
+ contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
+ /obj/item/reagent_containers/medspray/synthflesh,
+ /obj/item/reagent_containers/medspray/sterilizine)
+ crate_name = "medco surgery tools"
+ crate_type = /obj/structure/closet/crate/medical
+
+/datum/supply_pack/medical/surgery
+ name = "Surgical Supplies Crate"
+ desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed."
+ cost = 1300
+ contains = list(/obj/item/storage/backpack/duffelbag/med/surgery,
+ /obj/item/reagent_containers/medspray/sterilizine,
+ /obj/item/roller)
+ crate_name = "surgical supplies crate"
+
+//////////////////////////////////////////////////////////////////////////////
+///////////////////////////// Medical Kits ///////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/medical/firstaidbruises
+ name = "Bruise Treatment Kit Crate"
+ desc = "Contains three first aid kits focused on healing bruises and broken bones."
+ cost = 1000
+ contains = list(/obj/item/storage/firstaid/brute,
+ /obj/item/storage/firstaid/brute,
+ /obj/item/storage/firstaid/brute)
+ crate_name = "brute treatment kit crate"
+
+/datum/supply_pack/medical/firstaidburns
+ name = "Burn Treatment Kit Crate"
+ desc = "Contains three first aid kits focused on healing severe burns."
+ cost = 1000
+ contains = list(/obj/item/storage/firstaid/fire,
+ /obj/item/storage/firstaid/fire,
+ /obj/item/storage/firstaid/fire)
+ crate_name = "burn treatment kit crate"
+
+/datum/supply_pack/medical/firstaid
+ name = "First Aid Kit Crate"
+ desc = "Contains four first aid kits for healing most types of wounds."
+ cost = 1000
+ contains = list(/obj/item/storage/firstaid/regular,
+ /obj/item/storage/firstaid/regular,
+ /obj/item/storage/firstaid/regular,
+ /obj/item/storage/firstaid/regular)
+ crate_name = "first aid kit crate"
/datum/supply_pack/medical/sprays
name = "Medical Sprays"
@@ -182,6 +202,15 @@
/obj/item/storage/firstaid/o2)
crate_name = "oxygen deprivation kit crate"
+/datum/supply_pack/medical/firstaidtoxins
+ name = "Toxin Treatment Kit Crate"
+ desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins."
+ cost = 1000
+ contains = list(/obj/item/storage/firstaid/toxin,
+ /obj/item/storage/firstaid/toxin,
+ /obj/item/storage/firstaid/toxin)
+ crate_name = "toxin treatment kit crate"
+
/datum/supply_pack/medical/advrad
name = "Radiation Treatment Crate Deluxe"
desc = "A crate for when radiation is out of hand... Contains two rad-b-gone kits, one bottle of anti radiation deluxe pills, as well as a radiation treatment deluxe pill bottle!"
@@ -195,23 +224,9 @@
crate_name = "radiation protection crate"
crate_type = /obj/structure/closet/crate/radiation
-/datum/supply_pack/medical/surgery
- name = "Surgical Supplies Crate"
- desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed."
- cost = 1300
- contains = list(/obj/item/storage/backpack/duffelbag/med/surgery,
- /obj/item/reagent_containers/medspray/sterilizine,
- /obj/item/roller)
- crate_name = "surgical supplies crate"
-
-/datum/supply_pack/medical/firstaidtoxins
- name = "Toxin Treatment Kit Crate"
- desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins."
- cost = 1000
- contains = list(/obj/item/storage/firstaid/toxin,
- /obj/item/storage/firstaid/toxin,
- /obj/item/storage/firstaid/toxin)
- crate_name = "toxin treatment kit crate"
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////// Virology ////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/medical/virus
name = "Virus Crate"
@@ -255,4 +270,4 @@
/obj/item/storage/box/syringes,
/obj/item/storage/box/beakers)
crate_name = "virus containment unit crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
+ crate_type = /obj/structure/closet/crate/secure/plasma
\ No newline at end of file
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index ca2d2009ee..deac656109 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -13,16 +13,6 @@
//////////////////// Paperwork and Writing Supplies //////////////////////////
//////////////////////////////////////////////////////////////////////////////
-/datum/supply_pack/misc/abandonedcrate
- name = "Loot Box"
- desc = "Try your luck with these highly secure loot boxes! Solve the lock, win great prizes! WARNING: EXPLOSIVE FAILURE."
- contraband = TRUE
- cost = 15000
- contains = list(/obj/structure/closet/crate/secure/loot)
- crate_name = "abandoned crate"
- crate_type = /obj/structure/closet/crate/large
- dangerous = TRUE
-
/datum/supply_pack/misc/artsupply
name = "Art Supplies"
desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!"
@@ -243,10 +233,41 @@
contains = list(/obj/item/storage/lockbox/dueling)
crate_name = "dueling pistols (elimination)"
+/datum/supply_pack/misc/dirtymags
+ name = "Dirty Magazines"
+ desc = "Get your mind out of the gutter operative, you have work to do. Three items per order. Possible Results: .357 Speedloaders, Kitchen Gun Mags, Stetchkin Mags."
+ hidden = TRUE
+ cost = 12000
+ var/num_contained = 3
+ contains = list(/obj/item/ammo_box/a357,
+ /obj/item/ammo_box/a357,
+ /obj/item/ammo_box/a357,
+ /obj/item/ammo_box/magazine/pistolm9mm,
+ /obj/item/ammo_box/magazine/pistolm9mm,
+ /obj/item/ammo_box/magazine/pistolm9mm,
+ /obj/item/ammo_box/magazine/m45/kitchengun,
+ /obj/item/ammo_box/magazine/m45/kitchengun)
+ crate_name = "crate"
+
+/datum/supply_pack/misc/dirtymags/fill(obj/structure/closet/crate/C)
+ var/list/L = contains.Copy()
+ for(var/i in 1 to num_contained)
+ var/item = pick_n_take(L)
+ new item(C)
+
//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////// Misc Supplies ///////////////////////////////
+///////////////////////////////// Misc Supplies //////////////////////////////
//////////////////////////////////////////////////////////////////////////////
+/datum/supply_pack/misc/candles
+ name = "Candle Crate"
+ desc = "Set up a romantic dinner or host a séance with these extra candles and crayons."
+ cost = 850
+ contains = list(/obj/item/storage/fancy/candle_box,
+ /obj/item/storage/fancy/candle_box,
+ /obj/item/storage/box/matches)
+ crate_name = "candle crate"
+
/datum/supply_pack/misc/exoticfootwear
name = "Exotic Footwear Crate"
desc = "Popularised by lizards and exotic dancers, the footwear included in this shipment is sure to give your feet the breathing room they deserve. Sweet Kicks Inc. is not responsible for any damage, distress, or @r0u$a1 caused by this shipment."
@@ -263,14 +284,6 @@
/obj/item/clothing/shoes/kindleKicks)
crate_name = "footie crate"
-/datum/supply_pack/misc/wrapping_paper
- name = "Festive Wrapping Paper Crate"
- desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, or the Clown's severed head? You can do all that, with this crate full of wrapping paper."
- cost = 1000
- contains = list(/obj/item/stack/wrapping_paper)
- crate_type = /obj/structure/closet/crate/wooden
- crate_name = "festive wrapping paper crate"
-
/datum/supply_pack/misc/funeral
name = "Funeral Supplies"
desc = "Mourn your dead properly buy sending them off with love filled notes, clean clothes, and a proper ceremony. Contains two candle packs, funeral garb, flowers, a paperbin , and crayons to help aid in religious rituals. Coffin included."
@@ -296,6 +309,16 @@
contains = list(/obj/machinery/jukebox)
crate_name = "Jukebox"
+/datum/supply_pack/misc/abandonedcrate
+ name = "Loot Box"
+ desc = "Try your luck with these highly secure loot boxes! Solve the lock, win great prizes! WARNING: EXPLOSIVE FAILURE."
+ contraband = TRUE
+ cost = 15000
+ contains = list(/obj/structure/closet/crate/secure/loot)
+ crate_name = "abandoned crate"
+ crate_type = /obj/structure/closet/crate/large
+ dangerous = TRUE
+
/datum/supply_pack/misc/potted_plants
name = "Potted Plants Crate"
desc = "Spruce up the station with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown."
diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm
index 2d0af18670..4aa991fc3f 100644
--- a/code/modules/cargo/packs/organic.dm
+++ b/code/modules/cargo/packs/organic.dm
@@ -3,22 +3,47 @@
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
// cost = 700- Minimum cost, or infinite points are possible.
//////////////////////////////////////////////////////////////////////////////
-//////////////////////////// Organic /////////////////////////////////////////
+//////////////////////////////// Organic /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/organic
group = "Food & Hydroponics"
crate_type = /obj/structure/closet/crate/freezer
+/datum/supply_pack/organic/randomized
+ var/num_contained = 15
+
+/datum/supply_pack/organic/randomized/fill(obj/structure/closet/crate/C)
+ for(var/i in 1 to num_contained)
+ var/item = pick(contains)
+ new item(C)
+
//////////////////////////////////////////////////////////////////////////////
-/////////////////////////////// Food /////////////////////////////////////////
+//////////////////////////////// Meals ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
-/datum/supply_pack/organic/candy/randomised
+/datum/supply_pack/organic/combomeal2
+ name = "Burger Combo #2"
+ desc = "We value our customers at the Greasy Griddle, so much so that we're willing to deliver -just for you.- This combo meal contains two burgers, a soda, fries, a toy, and some chicken nuggets."
+ cost = 3200
+ contains = list(/obj/item/reagent_containers/food/snacks/burger/bigbite,
+ /obj/item/reagent_containers/food/snacks/burger/cheese,
+ /obj/item/reagent_containers/food/snacks/fries,
+ /obj/item/reagent_containers/food/condiment/pack/ketchup,
+ /obj/item/reagent_containers/food/condiment/pack/ketchup,
+ /obj/item/reagent_containers/food/snacks/nugget,
+ /obj/item/reagent_containers/food/snacks/nugget,
+ /obj/item/reagent_containers/food/snacks/nugget,
+ /obj/item/reagent_containers/food/snacks/nugget,
+ /obj/item/toy/plush/random)
+ crate_name = "combo meal w/toy"
+ crate_type = /obj/structure/closet/crate/wooden
+
+/datum/supply_pack/organic/randomized/candy
name = "Candy Crate"
desc = "For people that have an insatiable sweet tooth! Has ten candies to be eaten up.."
cost = 2500
- var/num_contained = 10 //number of items picked to be contained in a randomised crate
+ num_contained = 10
contains = list(/obj/item/reagent_containers/food/snacks/candy,
/obj/item/reagent_containers/food/snacks/lollipop,
/obj/item/reagent_containers/food/snacks/gumball,
@@ -47,97 +72,6 @@
/obj/item/storage/fancy/donut_box)
crate_name = "candy crate"
-/datum/supply_pack/organic/candy/randomised/fill(obj/structure/closet/crate/C)
- var/list/L = contains.Copy()
- for(var/i in 1 to num_contained)
- var/item = pick_n_take(L)
- new item(C)
-
-/datum/supply_pack/organic/randomized/chef
- name = "Excellent Meat Crate"
- desc = "The best cuts in the whole galaxy."
- cost = 2000
- contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime,
- /obj/item/reagent_containers/food/snacks/meat/slab/killertomato,
- /obj/item/reagent_containers/food/snacks/meat/slab/bear,
- /obj/item/reagent_containers/food/snacks/meat/slab/xeno,
- /obj/item/reagent_containers/food/snacks/meat/slab/spider,
- /obj/item/reagent_containers/food/snacks/meat/rawbacon,
- /obj/item/reagent_containers/food/snacks/spiderleg,
- /obj/item/reagent_containers/food/snacks/carpmeat,
- /obj/item/reagent_containers/food/snacks/meat/slab/human)
- crate_name = "food crate"
-
-/datum/supply_pack/organic/randomized/chef/fill(obj/structure/closet/crate/C)
- for(var/i in 1 to 15)
- var/item = pick(contains)
- new item(C)
-
-/datum/supply_pack/organic/exoticseeds
- name = "Exotic Seeds Crate"
- desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!"
- cost = 1500
- contains = list(/obj/item/seeds/nettle,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/plump,
- /obj/item/seeds/liberty,
- /obj/item/seeds/amanita,
- /obj/item/seeds/reishi,
- /obj/item/seeds/banana,
- /obj/item/seeds/bamboo,
- /obj/item/seeds/eggplant/eggy,
- /obj/item/seeds/random,
- /obj/item/seeds/random)
- crate_name = "exotic seeds crate"
- crate_type = /obj/structure/closet/crate/hydroponics
-
-/datum/supply_pack/organic/food
- name = "Food Crate"
- desc = "Get things cooking with this crate full of useful ingredients! Contains a two dozen eggs, three bananas, and two bags of flour and rice, two cartons of milk, soymilk, as well as salt and pepper shakers, an enzyme and sugar bottle, and three slabs of monkeymeat."
- cost = 1000
- contains = list(/obj/item/reagent_containers/food/condiment/flour,
- /obj/item/reagent_containers/food/condiment/flour,
- /obj/item/reagent_containers/food/condiment/rice,
- /obj/item/reagent_containers/food/condiment/rice,
- /obj/item/reagent_containers/food/condiment/milk,
- /obj/item/reagent_containers/food/condiment/milk,
- /obj/item/reagent_containers/food/condiment/soymilk,
- /obj/item/reagent_containers/food/condiment/saltshaker,
- /obj/item/reagent_containers/food/condiment/peppermill,
- /obj/item/storage/fancy/egg_box,
- /obj/item/storage/fancy/egg_box,
- /obj/item/reagent_containers/food/condiment/enzyme,
- /obj/item/reagent_containers/food/condiment/sugar,
- /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
- /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
- /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
- /obj/item/reagent_containers/food/snacks/grown/banana,
- /obj/item/reagent_containers/food/snacks/grown/banana,
- /obj/item/reagent_containers/food/snacks/grown/banana)
- crate_name = "food crate"
-
-/datum/supply_pack/organic/randomized/chef/fruits
- name = "Fruit Crate"
- desc = "Rich in vitamins, may contain oranges."
- cost = 1500
- contains = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime,
- /obj/item/reagent_containers/food/snacks/grown/citrus/orange,
- /obj/item/reagent_containers/food/snacks/grown/banana,
- /obj/item/reagent_containers/food/snacks/grown/watermelon,
- /obj/item/reagent_containers/food/snacks/grown/apple,
- /obj/item/reagent_containers/food/snacks/grown/berries,
- /obj/item/reagent_containers/food/snacks/grown/citrus/lemon,
- /obj/item/reagent_containers/food/snacks/grown/pineapple,
- /obj/item/reagent_containers/food/snacks/grown/cherries,
- /obj/item/reagent_containers/food/snacks/grown/grapes,
- /obj/item/reagent_containers/food/snacks/grown/grapes/green,
- /obj/item/reagent_containers/food/snacks/grown/eggplant,
- /obj/item/reagent_containers/food/snacks/grown/peach,
- /obj/item/reagent_containers/food/snacks/grown/strawberry)
- crate_name = "food crate"
-
/datum/supply_pack/organic/fiestatortilla
name = "Fiesta Crate"
desc = "Spice up the kitchen with this fiesta themed food order! Contains 8 tortilla based food items, as well as a sombrero, moustache, and cloak!"
@@ -157,102 +91,6 @@
/obj/item/reagent_containers/glass/bottle/capsaicin)
crate_name = "fiesta crate"
-/datum/supply_pack/organic/grill
- name = "Grilling Starter Kit"
- desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets."
- cost = 3000
- crate_type = /obj/structure/closet/crate
- contains = list(/obj/item/stack/sheet/mineral/coal/five,
- /obj/machinery/grill/unwrenched)
- crate_name = "grilling starter kit crate"
-
-/datum/supply_pack/organic/grillfuel
- name = "Grilling Fuel Kit"
- desc = "Contains coal and coal accessories. (Note: only ten coal sheets.)"
- cost = 1000
- crate_type = /obj/structure/closet/crate
- contains = list(/obj/item/stack/sheet/mineral/coal/ten)
- crate_name = "grilling fuel kit crate"
-
-/datum/supply_pack/organic/cream_piee
- name = "High-yield Clown-grade Cream Pie Crate"
- desc = "Designed by Aussec's Advanced Warfare Research Division, these high-yield, Clown-grade cream pies are powered by a synergy of performance and efficiency. Guaranteed to provide maximum results."
- cost = 6000
- contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie)
- crate_name = "party equipment crate"
- contraband = TRUE
- access = ACCESS_THEATRE
- crate_type = /obj/structure/closet/crate/secure
-
-/datum/supply_pack/organic/fakemeat
- name = "Meat Crate"
- desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 12 slabs of meat product, and 4 slabs of *carp*."
- cost = 1200 // Buying 3 food crates nets you 9 meat for 900 points, plus like, 6 bags of rice, flour, and egg boxes. This is 12 for 500, but you -only- get meat and carp.
- contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
- /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
- /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
- /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
- /obj/item/reagent_containers/food/snacks/carpmeat/imitation)
- crate_name = "meaty crate"
- crate_type = /obj/structure/closet/crate/freezer
-
-/datum/supply_pack/organic/monkeydripmeat
- name = "*Meat* Crate"
- desc = "Need some meat? With this do-it-yourself kit you'll be swimming in it! Contains a monkey cube, an IV drip, and some cryoxadone!"
- cost = 2150
- contraband = TRUE
- contains = list(/obj/item/reagent_containers/food/snacks/monkeycube,
- /obj/item/restraints/handcuffs/cable,
- /obj/machinery/iv_drip,
- /obj/item/reagent_containers/glass/beaker/cryoxadone,
- /obj/item/reagent_containers/glass/beaker/cryoxadone)
- crate_name = "monkey meat crate"
-
-/datum/supply_pack/organic/mixedboxes
- name = "Mixed Ingredient Boxes"
- desc = "Get overwhelmed with inspiration by ordering these boxes of surprise ingredients! Get four boxes filled with an assortment of products!"
- cost = 2300
- contains = list(/obj/item/storage/box/ingredients/wildcard,
- /obj/item/storage/box/ingredients/wildcard,
- /obj/item/storage/box/ingredients/wildcard,
- /obj/item/storage/box/ingredients/wildcard)
- crate_name = "wildcard food crate"
- crate_type = /obj/structure/closet/crate/freezer
-
-/datum/supply_pack/organic/party
- name = "Party Equipment"
- desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, a drinking shaker, and a bottle of patron & goldschlager!"
- cost = 2000
- contains = list(/obj/item/storage/box/drinkingglasses,
- /obj/item/reagent_containers/food/drinks/shaker,
- /obj/item/reagent_containers/food/drinks/bottle/patron,
- /obj/item/reagent_containers/food/drinks/bottle/goldschlager,
- /obj/item/reagent_containers/food/drinks/ale,
- /obj/item/reagent_containers/food/drinks/ale,
- /obj/item/reagent_containers/food/drinks/beer,
- /obj/item/reagent_containers/food/drinks/beer,
- /obj/item/reagent_containers/food/drinks/beer,
- /obj/item/reagent_containers/food/drinks/beer,
- /obj/item/flashlight/glowstick,
- /obj/item/flashlight/glowstick/red,
- /obj/item/flashlight/glowstick/blue,
- /obj/item/flashlight/glowstick/cyan,
- /obj/item/flashlight/glowstick/orange,
- /obj/item/flashlight/glowstick/yellow,
- /obj/item/flashlight/glowstick/pink)
- crate_name = "party equipment crate"
-
/datum/supply_pack/organic/pizza
name = "Pizza Crate"
desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!"
@@ -287,9 +125,129 @@
considered \[REDACTED\] and returned at your leisure. Note that objects the anomaly produces are specifically attuned exactly to the individual opening the anomaly; regardless \
of species, the individual will find the object edible and it will taste great according to their personal definitions, which vary significantly based on person and species.")
-/datum/supply_pack/organic/randomized/chef/vegetables
- name = "Vegetables Crate"
- desc = "Grown in vats."
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Raw Ingredients /////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/organic/food
+ name = "Food Crate"
+ desc = "Get things cooking with this crate full of useful ingredients! Contains a two dozen eggs, three bananas, and two bags of flour and rice, two cartons of milk, soymilk, as well as salt and pepper shakers, an enzyme and sugar bottle, and three slabs of monkeymeat."
+ cost = 1000
+ contains = list(/obj/item/reagent_containers/food/condiment/flour,
+ /obj/item/reagent_containers/food/condiment/flour,
+ /obj/item/reagent_containers/food/condiment/rice,
+ /obj/item/reagent_containers/food/condiment/rice,
+ /obj/item/reagent_containers/food/condiment/milk,
+ /obj/item/reagent_containers/food/condiment/milk,
+ /obj/item/reagent_containers/food/condiment/soymilk,
+ /obj/item/reagent_containers/food/condiment/saltshaker,
+ /obj/item/reagent_containers/food/condiment/peppermill,
+ /obj/item/storage/fancy/egg_box,
+ /obj/item/storage/fancy/egg_box,
+ /obj/item/reagent_containers/food/condiment/enzyme,
+ /obj/item/reagent_containers/food/condiment/sugar,
+ /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
+ /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
+ /obj/item/reagent_containers/food/snacks/meat/slab/monkey,
+ /obj/item/reagent_containers/food/snacks/grown/banana,
+ /obj/item/reagent_containers/food/snacks/grown/banana,
+ /obj/item/reagent_containers/food/snacks/grown/banana)
+ crate_name = "food crate"
+
+/datum/supply_pack/organic/randomized/fruits
+ name = "Fruit Crate"
+ desc = "Rich in vitamins and possibly sugar. Contains 15 assorted fruits."
+ cost = 1500
+ contains = list(/obj/item/reagent_containers/food/snacks/grown/citrus/lime,
+ /obj/item/reagent_containers/food/snacks/grown/citrus/orange,
+ /obj/item/reagent_containers/food/snacks/grown/banana,
+ /obj/item/reagent_containers/food/snacks/grown/watermelon,
+ /obj/item/reagent_containers/food/snacks/grown/apple,
+ /obj/item/reagent_containers/food/snacks/grown/berries,
+ /obj/item/reagent_containers/food/snacks/grown/citrus/lemon,
+ /obj/item/reagent_containers/food/snacks/grown/pineapple,
+ /obj/item/reagent_containers/food/snacks/grown/cherries,
+ /obj/item/reagent_containers/food/snacks/grown/grapes,
+ /obj/item/reagent_containers/food/snacks/grown/grapes/green,
+ /obj/item/reagent_containers/food/snacks/grown/eggplant,
+ /obj/item/reagent_containers/food/snacks/grown/peach,
+ /obj/item/reagent_containers/food/snacks/grown/strawberry)
+ crate_name = "fruit crate"
+
+/datum/supply_pack/organic/cream_piee
+ name = "High-yield Clown-grade Cream Pie Crate"
+ desc = "Designed by Aussec's Advanced Warfare Research Division, these high-yield, Clown-grade cream pies are powered by a synergy of performance and efficiency. Guaranteed to provide maximum results."
+ cost = 6000
+ contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie)
+ crate_name = "party equipment crate"
+ contraband = TRUE
+ access = ACCESS_THEATRE
+ crate_type = /obj/structure/closet/crate/secure
+
+/datum/supply_pack/organic/randomized
+ name = "Meat Crate (Exotic)"
+ desc = "The best cuts in the whole galaxy. Contains 15 assorted exotic meats."
+ cost = 2000
+ contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime,
+ /obj/item/reagent_containers/food/snacks/meat/slab/killertomato,
+ /obj/item/reagent_containers/food/snacks/meat/slab/bear,
+ /obj/item/reagent_containers/food/snacks/meat/slab/xeno,
+ /obj/item/reagent_containers/food/snacks/meat/slab/spider,
+ /obj/item/reagent_containers/food/snacks/meat/rawbacon,
+ /obj/item/reagent_containers/food/snacks/spiderleg,
+ /obj/item/reagent_containers/food/snacks/carpmeat,
+ /obj/item/reagent_containers/food/snacks/meat/slab/human)
+ crate_name = "exotic meat crate"
+
+/datum/supply_pack/organic/monkeydripmeat
+ name = "Meat Crate (Fresh)"
+ desc = "Need some meat? With this do-it-yourself kit you'll be swimming in it! Contains a monkey cube, an IV drip, and some cryoxadone!"
+ cost = 2150
+ contraband = TRUE
+ contains = list(/obj/item/reagent_containers/food/snacks/monkeycube,
+ /obj/item/restraints/handcuffs/cable,
+ /obj/machinery/iv_drip,
+ /obj/item/reagent_containers/glass/beaker/cryoxadone,
+ /obj/item/reagent_containers/glass/beaker/cryoxadone)
+ crate_name = "monkey meat crate"
+
+/datum/supply_pack/organic/fakemeat
+ name = "Meat Crate 'Synthetic'"
+ desc = "Run outta meat already? Keep the lizards content with this freezer filled with cruelty-free chemically compounded meat! Contains 12 slabs of meat product, and 4 slabs of *carp*."
+ cost = 1200 // Buying 3 food crates nets you 9 meat for 900 points, plus like, 6 bags of rice, flour, and egg boxes. This is 12 for 500, but you -only- get meat and carp.
+ contains = list(/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct,
+ /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
+ /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
+ /obj/item/reagent_containers/food/snacks/carpmeat/imitation,
+ /obj/item/reagent_containers/food/snacks/carpmeat/imitation)
+ crate_name = "meaty crate"
+ crate_type = /obj/structure/closet/crate/freezer
+
+/datum/supply_pack/organic/mixedboxes
+ name = "Mixed Ingredient Boxes"
+ desc = "Get overwhelmed with inspiration by ordering these boxes of surprise ingredients! Get four boxes filled with an assortment of products!"
+ cost = 2300
+ contains = list(/obj/item/storage/box/ingredients/wildcard,
+ /obj/item/storage/box/ingredients/wildcard,
+ /obj/item/storage/box/ingredients/wildcard,
+ /obj/item/storage/box/ingredients/wildcard)
+ crate_name = "wildcard food crate"
+ crate_type = /obj/structure/closet/crate/freezer
+
+/datum/supply_pack/organic/randomized/vegetables
+ name = "Vegetable Crate"
+ desc = "Grown in vats. Contains 15 assorted vegetables."
cost = 1300
contains = list(/obj/item/reagent_containers/food/snacks/grown/chili,
/obj/item/reagent_containers/food/snacks/grown/corn,
@@ -299,7 +257,7 @@
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle,
/obj/item/reagent_containers/food/snacks/grown/onion,
/obj/item/reagent_containers/food/snacks/grown/pumpkin)
- crate_name = "food crate"
+ crate_name = "veggie crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Hydroponics /////////////////////////////////////
@@ -331,25 +289,6 @@
crate_name = "beekeeping starter crate"
crate_type = /obj/structure/closet/crate/hydroponics
-/datum/supply_pack/organic/exoticseeds
- name = "Exotic Seeds Crate"
- desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!"
- cost = 1500
- contains = list(/obj/item/seeds/nettle,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/replicapod,
- /obj/item/seeds/plump,
- /obj/item/seeds/liberty,
- /obj/item/seeds/amanita,
- /obj/item/seeds/reishi,
- /obj/item/seeds/banana,
- /obj/item/seeds/eggplant/eggy,
- /obj/item/seeds/random,
- /obj/item/seeds/random)
- crate_name = "exotic seeds crate"
- crate_type = /obj/structure/closet/crate/hydroponics
-
/datum/supply_pack/organic/hydroponics/hydrotank
name = "Hydroponics Backpack Crate"
desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O. Requires hydroponics access to open."
@@ -402,10 +341,30 @@
/obj/item/seeds/sunflower,
/obj/item/seeds/chanter,
/obj/item/seeds/potato,
- /obj/item/seeds/sugarcane)
+ /obj/item/seeds/sugarcane,
+ /obj/item/seeds/ambrosia)
crate_name = "seeds crate"
crate_type = /obj/structure/closet/crate/hydroponics
+/datum/supply_pack/organic/exoticseeds
+ name = "Seeds Crate (Exotic)"
+ desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!"
+ cost = 1500
+ contains = list(/obj/item/seeds/nettle,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/replicapod,
+ /obj/item/seeds/plump,
+ /obj/item/seeds/liberty,
+ /obj/item/seeds/amanita,
+ /obj/item/seeds/reishi,
+ /obj/item/seeds/banana,
+ /obj/item/seeds/eggplant/eggy,
+ /obj/item/seeds/random,
+ /obj/item/seeds/random)
+ crate_name = "exotic seeds crate"
+ crate_type = /obj/structure/closet/crate/hydroponics
+
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// Misc /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -426,6 +385,29 @@
crate_name = "sporting crate"
crate_type = /obj/structure/closet/crate/secure // Would have liked a wooden crate but access >:(
+/datum/supply_pack/organic/party
+ name = "Party Equipment"
+ desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, a drinking shaker, and a bottle of patron & goldschlager!"
+ cost = 2000
+ contains = list(/obj/item/storage/box/drinkingglasses,
+ /obj/item/reagent_containers/food/drinks/shaker,
+ /obj/item/reagent_containers/food/drinks/bottle/patron,
+ /obj/item/reagent_containers/food/drinks/bottle/goldschlager,
+ /obj/item/reagent_containers/food/drinks/ale,
+ /obj/item/reagent_containers/food/drinks/ale,
+ /obj/item/reagent_containers/food/drinks/beer,
+ /obj/item/reagent_containers/food/drinks/beer,
+ /obj/item/reagent_containers/food/drinks/beer,
+ /obj/item/reagent_containers/food/drinks/beer,
+ /obj/item/flashlight/glowstick,
+ /obj/item/flashlight/glowstick/red,
+ /obj/item/flashlight/glowstick/blue,
+ /obj/item/flashlight/glowstick/cyan,
+ /obj/item/flashlight/glowstick/orange,
+ /obj/item/flashlight/glowstick/yellow,
+ /obj/item/flashlight/glowstick/pink)
+ crate_name = "party equipment crate"
+
/datum/supply_pack/organic/vday
name = "Surplus Valentine Crate"
desc = "Turns out we got warehouses of this love-y dove-y crap. We're sending out small bargain buddle of Valentine gear. This crate has two boxes of chocolate, three poppy flowers, five candy hearts, and three cards."
diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm
index a009c998a3..79675cf3ec 100644
--- a/code/modules/cargo/packs/science.dm
+++ b/code/modules/cargo/packs/science.dm
@@ -29,7 +29,7 @@
crate_name = "alien bro alloy crate"
/datum/supply_pack/science/beakers
- name = "Chemistry Beackers Crate"
+ name = "Chemistry Beakers Crate"
desc = "Glassware for any chemistry lab! Contains four small beakers, three large, two plastic, and one metamaterial. As well as three droppers and two pairs of latex gloves."
cost = 1500
contains = list(/obj/item/reagent_containers/glass/beaker,
@@ -82,7 +82,7 @@
crate_name = "circuitry starter pack crate"
/datum/supply_pack/science/glasswork
- name = "Glass blower kit Crate"
+ name = "Glass Blower Kit Crate"
desc = "Learn and make glassworks of usefull things for a profit! Contains glassworking tools and blowing rods. Glass not included."
cost = 1000
contains = list(/obj/item/glasswork/glasskit,
@@ -91,17 +91,6 @@
/obj/item/glasswork/blowing_rod)
crate_name = "glassblower gear crate"
-/datum/supply_pack/science/adv_surgery_tools
- name = "Med-Co Advanced surgery tools"
- desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
- cost = 5500
- access = ACCESS_SURGERY
- contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
- /obj/item/reagent_containers/medspray/synthflesh,
- /obj/item/reagent_containers/medspray/sterilizine)
- crate_name = "medco newest surgery tools"
- crate_type = /obj/structure/closet/crate/medical
-
/datum/supply_pack/science/monkey
name = "Monkey Cube Crate"
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm
index 69967d65d1..3b602d54d2 100644
--- a/code/modules/cargo/packs/security.dm
+++ b/code/modules/cargo/packs/security.dm
@@ -163,13 +163,6 @@
/obj/item/storage/box/handcuffs)
crate_name = "security supply crate"
-/datum/supply_pack/security/vending/security
- name = "SecTech Supply Crate"
- desc = "Officer Paul bought all the donuts? Then refill the security vendor with ths crate."
- cost = 1500
- contains = list(/obj/machinery/vending/security)
- crate_name = "SecTech supply crate"
-
/datum/supply_pack/security/firingpins
name = "Standard Firing Pins Crate"
desc = "Upgrade your arsenal with 10 standard firing pins. Requires Security access to open."
diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm
index 34b8bbc249..942720dd6b 100644
--- a/code/modules/cargo/packs/service.dm
+++ b/code/modules/cargo/packs/service.dm
@@ -10,9 +10,24 @@
group = "Service"
//////////////////////////////////////////////////////////////////////////////
-/////////////////////////////// Cargo ////////////////////////////////////////
+//////////////////////////////// Cargo ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
+/datum/supply_pack/service/wrapping_paper
+ name = "Cargo Packaging Crate"
+ desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, or the Clown's severed head? You can do all that, with this crate full of festive (and normal) wrapping paper. Also contains a hand labeler and a destination tagger for easy shipping!"
+ cost = 1000
+ contains = list(/obj/item/stack/wrapping_paper,
+ /obj/item/stack/wrapping_paper,
+ /obj/item/stack/wrapping_paper,
+ /obj/item/stack/packageWrap,
+ /obj/item/stack/packageWrap,
+ /obj/item/stack/packageWrap,
+ /obj/item/destTagger,
+ /obj/item/hand_labeler)
+ crate_type = /obj/structure/closet/crate/wooden
+ crate_name = "wrapping paper crate"
+
/datum/supply_pack/service/cargo_supples
name = "Cargo Supplies Crate"
desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping. Now with extra toner cartidges!"
@@ -101,6 +116,23 @@
crate_name = "ice cream vat crate"
crate_type = /obj/structure/closet/crate
+/datum/supply_pack/service/grill
+ name = "Grilling Starter Kit"
+ desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets."
+ cost = 3000
+ contains = list(/obj/item/stack/sheet/mineral/coal/five,
+ /obj/machinery/grill/unwrenched)
+ crate_name = "grilling starter kit crate"
+ crate_type = /obj/structure/closet/crate
+
+/datum/supply_pack/service/grillfuel
+ name = "Grilling Fuel Kit"
+ desc = "Contains coal and coal accessories. (Note: only ten coal sheets.)"
+ cost = 1000
+ contains = list(/obj/item/stack/sheet/mineral/coal/ten)
+ crate_name = "grilling fuel kit crate"
+ crate_type = /obj/structure/closet/crate
+
/datum/supply_pack/service/cutlery
name = "Kitchen Cutlery Deluxe Set"
desc = "Need to slice and dice away those \"Tomatoes\"? Well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal."
@@ -240,45 +272,3 @@
crate_name = "janitorial cart crate"
crate_type = /obj/structure/closet/crate/large
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////// Vendor Refills //////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-/datum/supply_pack/service/vending/bartending
- name = "Bartending Supply Crate"
- desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
- cost = 2000
- contains = list(/obj/item/vending_refill/boozeomat,
- /obj/item/vending_refill/coffee,
- /obj/item/book/granter/action/drink_fling)
- crate_name = "bartending supply crate"
-
-/datum/supply_pack/service/vending/cigarette
- name = "Cigarette Supply Crate"
- desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill."
- cost = 1500
- contains = list(/obj/item/vending_refill/cigarette)
- crate_name = "cigarette supply crate"
- crate_type = /obj/structure/closet/crate
-
-/datum/supply_pack/service/vending/games
- name = "Games Supply Crate"
- desc = "Get your game on with this game vending machine refill."
- cost = 1000
- contains = list(/obj/item/vending_refill/games)
- crate_name = "games supply crate"
- crate_type = /obj/structure/closet/crate
-
-/datum/supply_pack/service/vending/snack
- name = "Snack Supply Crate"
- desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
- cost = 1500
- contains = list(/obj/item/vending_refill/snack)
- crate_name = "snacks supply crate"
-
-/datum/supply_pack/service/vending/cola
- name = "Softdrinks Supply Crate"
- desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!"
- cost = 1500
- contains = list(/obj/item/vending_refill/cola)
- crate_name = "soft drinks supply crate"
diff --git a/code/modules/cargo/packs/vending.dm b/code/modules/cargo/packs/vending.dm
new file mode 100644
index 0000000000..f9982d17b6
--- /dev/null
+++ b/code/modules/cargo/packs/vending.dm
@@ -0,0 +1,148 @@
+
+//Reminders-
+// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
+// cost = 700- Minimum cost, or infinite points are possible.
+//////////////////////////////////////////////////////////////////////////////
+/////////////////////////////// Vending //////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/vending
+ group = "Vending"
+
+//////////////////////////////////////////////////////////////////////////////
+///////////////////////// Service, Medical, Sec //////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/vending/bartending
+ name = "Bartending Supply Crate"
+ desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
+ cost = 2000
+ contains = list(/obj/item/vending_refill/boozeomat,
+ /obj/item/vending_refill/coffee,
+ /obj/item/book/granter/action/drink_fling)
+ crate_name = "bartending supply crate"
+
+/datum/supply_pack/vending/cigarette
+ name = "Cigarette Supply Crate"
+ desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill."
+ cost = 1500
+ contains = list(/obj/item/vending_refill/cigarette)
+ crate_name = "cigarette supply crate"
+ crate_type = /obj/structure/closet/crate
+
+/datum/supply_pack/vending/games
+ name = "Games Supply Crate"
+ desc = "Get your game on with this game vending machine refill."
+ cost = 1000
+ contains = list(/obj/item/vending_refill/games)
+ crate_name = "games supply crate"
+ crate_type = /obj/structure/closet/crate
+
+/datum/supply_pack/vending/kinkmate
+ name = "Kinkmate Supply and Construction Kit"
+ cost = 2000
+ contraband = TRUE
+ contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate)
+ crate_name = "Kinkmate construction kit"
+
+/datum/supply_pack/vending/medical
+ name = "Medical Vending Crate"
+ desc = "Contains refills for medical vending machines."
+ cost = 2000
+ contains = list(/obj/item/vending_refill/medical,
+ /obj/item/vending_refill/wallmed)
+ crate_name = "medical vending crate"
+ crate_type = /obj/structure/closet/crate/medical
+
+/datum/supply_pack/vending/security
+ name = "SecTech Supply Crate"
+ desc = "Officer Paul bought all the donuts? Then refill the security vendor with ths crate. Requires Security Access to open."
+ cost = 1500
+ access = ACCESS_SECURITY
+ contains = list(/obj/machinery/vending/security)
+ crate_name = "SecTech supply crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+
+/datum/supply_pack/vending/snack
+ name = "Snack Supply Crate"
+ desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
+ cost = 1500
+ contains = list(/obj/item/vending_refill/snack)
+ crate_name = "snacks supply crate"
+
+/datum/supply_pack/vending/cola
+ name = "Softdrinks Supply Crate"
+ desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!"
+ cost = 1500
+ contains = list(/obj/item/vending_refill/cola)
+ crate_name = "soft drinks supply crate"
+
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////// Wardrobe Vendors ////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+/datum/supply_pack/vending/wardrobes/autodrobe
+ name = "Autodrobe Supply Crate"
+ desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
+ cost = 1500
+ contains = list(/obj/item/vending_refill/autodrobe)
+ crate_name = "autodrobe supply crate"
+
+/datum/supply_pack/vending/wardrobes/cargo
+ name = "Cargo Wardrobe Supply Crate"
+ desc = "This crate contains a refill for the CargoDrobe."
+ cost = 750
+ contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe)
+ crate_name = "cargo department supply crate"
+
+/datum/supply_pack/vending/wardrobes/engineering
+ name = "Engineering Wardrobe Supply Crate"
+ desc = "This crate contains refills for the EngiDrobe and AtmosDrobe."
+ cost = 1500
+ contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe,
+ /obj/item/vending_refill/wardrobe/atmos_wardrobe)
+ crate_name = "engineering department wardrobe supply crate"
+
+/datum/supply_pack/vending/wardrobes/general
+ name = "General Wardrobes Supply Crate"
+ desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe."
+ cost = 3750
+ contains = list(/obj/item/vending_refill/wardrobe/curator_wardrobe,
+ /obj/item/vending_refill/wardrobe/bar_wardrobe,
+ /obj/item/vending_refill/wardrobe/chef_wardrobe,
+ /obj/item/vending_refill/wardrobe/jani_wardrobe,
+ /obj/item/vending_refill/wardrobe/chap_wardrobe)
+ crate_name = "general wardrobes vendor refills"
+
+/datum/supply_pack/vending/wardrobes/hydroponics
+ name = "Hydrobe Supply Crate"
+ desc = "This crate contains a refill for the Hydrobe."
+ cost = 750
+ contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe)
+ crate_name = "hydrobe supply crate"
+
+/datum/supply_pack/vending/wardrobes/medical
+ name = "Medical Wardrobe Supply Crate"
+ desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe."
+ cost = 3000
+ contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe,
+ /obj/item/vending_refill/wardrobe/chem_wardrobe,
+ /obj/item/vending_refill/wardrobe/gene_wardrobe,
+ /obj/item/vending_refill/wardrobe/viro_wardrobe)
+ crate_name = "medical department wardrobe supply crate"
+
+/datum/supply_pack/vending/wardrobes/science
+ name = "Science Wardrobe Supply Crate"
+ desc = "This crate contains refills for the SciDrobe and RoboDrobe."
+ cost = 1500
+ contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe,
+ /obj/item/vending_refill/wardrobe/science_wardrobe)
+ crate_name = "science department wardrobe supply crate"
+
+/datum/supply_pack/vending/wardrobes/security
+ name = "Security Wardrobe Supply Crate"
+ desc = "This crate contains refills for the SecDrobe and LawDrobe."
+ cost = 1500
+ contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe,
+ /obj/item/vending_refill/wardrobe/law_wardrobe)
+ crate_name = "security department supply crate"
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 8edd5847de..ef8a745b89 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -385,20 +385,17 @@
else if(isobserver(user) && traitstring)
. += "Traits: [traitstring]"
- if(print_flavor_text())
- if(get_visible_name() == "Unknown") //Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation.
- . += "...?"
- else if(skipface) //Sometimes we're not unknown, but impersonating someone in a hardsuit, let's not reveal our flavor text then either.
- . += "...?"
- else
- . += "[print_flavor_text()]"
- if(print_flavor_text_2())
- if(get_visible_name() == "Unknown") //Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation.
- . += "...?"
- else if(skipface) //Sometimes we're not unknown, but impersonating someone in a hardsuit, let's not reveal our flavor text then either.
- . += "...?"
- else
- . += "[print_flavor_text_2()]"
+ //No flavor text unless the face can be seen. Prevents certain metagaming with impersonation.
+ var/invisible_man = skipface || get_visible_name() == "Unknown"
+ if(invisible_man)
+ . += "...?"
+ else
+ var/flavor = print_flavor_text()
+ if(flavor)
+ . += flavor
+ var/temp_flavor = print_flavor_text_2()
+ if(temp_flavor)
+ . += temp_flavor
. += "*---------*"
/mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects!
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 5343256c8e..441eb27621 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -193,9 +193,9 @@
var/on = FALSE // 1 if on, 0 if off
var/on_gs = FALSE
var/static_power_used = 0
- var/brightness = 8 // luminosity when on, also used in power calculation
+ var/brightness = 11 // luminosity when on, also used in power calculation
var/bulb_power = 0.75 // basically the alpha of the emitted light source
- var/bulb_colour = "#FFEEDD" // befault colour of the light.
+ var/bulb_colour = "#FFF6ED" // befault colour of the light.
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
var/flickering = FALSE
var/light_type = /obj/item/light/tube // the type of light item
@@ -231,7 +231,7 @@
icon_state = "bulb"
base_state = "bulb"
fitting = "bulb"
- brightness = 4
+ brightness = 6
bulb_colour = "#FFDDBB"
desc = "A small lighting fixture."
light_type = /obj/item/light/bulb
@@ -272,11 +272,11 @@
spawn(2)
switch(fitting)
if("tube")
- brightness = 8
+ brightness = 11
if(prob(2))
break_light_tube(1)
if("bulb")
- brightness = 4
+ brightness = 6
if(prob(5))
break_light_tube(1)
spawn(1)
@@ -351,11 +351,11 @@
set_light(0)
update_icon()
- active_power_usage = (brightness * 10)
+ active_power_usage = (brightness * 7.2)
if(on != on_gs)
on_gs = on
if(on)
- static_power_used = brightness * 20 //20W per unit luminosity
+ static_power_used = brightness * 14.4 //20W per unit luminosity
addStaticPower(static_power_used, STATIC_LIGHT)
else
removeStaticPower(static_power_used, STATIC_LIGHT)
@@ -738,7 +738,7 @@
icon_state = "ltube"
base_state = "ltube"
item_state = "c_tube"
- brightness = 8
+ brightness = 11
/obj/item/light/tube/broken
status = LIGHT_BROKEN
@@ -751,7 +751,7 @@
item_state = "contvapour"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- brightness = 4
+ brightness = 6
/obj/item/light/bulb/broken
status = LIGHT_BROKEN
@@ -820,7 +820,7 @@
icon = 'icons/obj/lighting.dmi'
base_state = "floor" // base description and icon_state
icon_state = "floor"
- brightness = 4
+ brightness = 6
layer = 2.5
light_type = /obj/item/light/bulb
fitting = "bulb"
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index ab9dd6d6a6..611f8c57bd 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -96,15 +96,20 @@
"Gold Trim" = "detective_gold",
"The Peacemaker" = "detective_peacemaker"
)
+ var/list/safe_calibers
+
+/obj/item/gun/ballistic/revolver/detective/Initialize()
+ . = ..()
+ safe_calibers = magazine.caliber
/obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
- if(magazine.caliber != initial(magazine.caliber))
+ if(chambered && !(chambered.caliber in safe_calibers))
if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60
playsound(user, fire_sound, 50, 1)
to_chat(user, "[src] blows up in your face!")
user.take_bodypart_damage(0,20)
user.dropItemToGround(src)
- return 0
+ return FALSE
..()
/obj/item/gun/ballistic/revolver/detective/screwdriver_act(mob/living/user, obj/item/I)
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index ad3a2c90a4..a32cb94401 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -153,20 +153,37 @@
color = "#669900" // rgb: 102, 153, 0
toxpwr = 0.5
taste_description = "death"
+ var/fakedeath_active = FALSE
pH = 13
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L)
..()
- L.fakedeath(type)
+ ADD_TRAIT(L, TRAIT_FAKEDEATH, type)
/datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/L)
L.cure_fakedeath(type)
..()
-/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M)
- M.adjustOxyLoss(0.5*REM, 0)
+/datum/reagent/toxin/zombiepowder/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
+ L.adjustOxyLoss(0.5*REM, 0)
+ if(method == INGEST)
+ fakedeath_active = TRUE
+ L.fakedeath(type)
+
+/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/M)
..()
- . = 1
+ if(fakedeath_active)
+ return TRUE
+ switch(current_cycle)
+ if(1 to 5)
+ M.confused += 1
+ M.drowsyness += 1
+ M.slurring += 3
+ if(5 to 8)
+ M.adjustStaminaLoss(40, 0)
+ if(9 to INFINITY)
+ fakedeath_active = TRUE
+ M.fakedeath(type)
/datum/reagent/toxin/ghoulpowder
name = "Ghoul Powder"
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index e08fba604d..eb473950d5 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -70,6 +70,14 @@
required_other = TRUE
required_container = /obj/item/slime_extract/green
+/datum/chemical_reaction/slime/slimemammal
+ name = "Mammal Mutation Toxin"
+ id = /datum/reagent/mutationtoxin/mammal
+ results = list(/datum/reagent/mutationtoxin/mammal = 1)
+ required_reagents = list(/datum/reagent/water = 1)
+ required_other = TRUE
+ required_container = /obj/item/slime_extract/green
+
//Metal
/datum/chemical_reaction/slime/slimemetal
name = "Slime Metal"
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 5fb51ddaa9..23176f8a05 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -1,6 +1,3 @@
-#define PH_WEAK (1 << 0)
-#define TEMP_WEAK (1 << 1)
-
/obj/item/reagent_containers
name = "Container"
desc = "..."
@@ -9,14 +6,13 @@
w_class = WEIGHT_CLASS_TINY
var/amount_per_transfer_from_this = 5
var/list/possible_transfer_amounts = list(5,10,15,20,25,30)
- var/APTFT_altclick = TRUE //will the set amount_per_transfer_from_this proc be called on AltClick() ?
var/volume = 30
- var/reagent_flags
+ var/reagent_flags //used to determine the reagent holder flags on add_initial_reagents()
var/list/list_reagents = null
var/spawned_disease = null
var/disease_amount = 20
var/spillable = FALSE
- var/beaker_weakness_bitflag = NONE//Bitflag!
+ var/container_flags = APTFT_ALTCLICK|APTFT_VERB //the container item flags
var/container_HP = 2
var/cached_icon
@@ -24,7 +20,7 @@
. = ..()
if(isnum(vol) && vol > 0)
volume = vol
- if(length(possible_transfer_amounts))
+ if(container_flags & APTFT_VERB && length(possible_transfer_amounts))
verbs += /obj/item/reagent_containers/proc/set_APTFT
create_reagents(volume, reagent_flags)
if(spawned_disease)
@@ -37,12 +33,12 @@
. = ..()
if(length(possible_transfer_amounts) > 1)
. += "Currently transferring [amount_per_transfer_from_this] units per use."
- if(APTFT_altclick && user.Adjacent(src))
+ if(container_flags & APTFT_ALTCLICK && user.Adjacent(src))
. += "Alt-click it to set its transfer amount."
/obj/item/reagent_containers/AltClick(mob/user)
. = ..()
- if(APTFT_altclick && length(possible_transfer_amounts) > 1 && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
+ if(container_flags & APTFT_ALTCLICK && length(possible_transfer_amounts) > 1 && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
set_APTFT()
return TRUE
@@ -157,7 +153,7 @@
//melts plastic beakers
/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/M)
reagents.expose_temperature(1000)
- if(beaker_weakness_bitflag & TEMP_WEAK)
+ if(container_flags & TEMP_WEAK)
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
for(var/mob/H in seen)
@@ -172,13 +168,13 @@
temp_check()
/obj/item/reagent_containers/proc/temp_check()
- if(beaker_weakness_bitflag & TEMP_WEAK)
+ if(container_flags & TEMP_WEAK)
if(reagents.chem_temp >= 444)//assuming polypropylene
START_PROCESSING(SSobj, src)
//melts glass beakers
/obj/item/reagent_containers/proc/pH_check()
- if(beaker_weakness_bitflag & PH_WEAK)
+ if(container_flags & PH_WEAK)
if((reagents.pH < 1.5) || (reagents.pH > 12.5))
START_PROCESSING(SSobj, src)
else if((reagents.pH < -3) || (reagents.pH > 17))
@@ -192,7 +188,7 @@
cached_icon = icon_state
var/damage
var/cause
- if(beaker_weakness_bitflag & PH_WEAK)
+ if(container_flags & PH_WEAK)
if(reagents.pH < 2)
damage = (2 - reagents.pH)/20
cause = "from the extreme pH"
@@ -203,7 +199,7 @@
cause = "from the extreme pH"
playsound(get_turf(src), 'sound/FermiChem/bufferadd.ogg', 50, 1)
- if(beaker_weakness_bitflag & TEMP_WEAK)
+ if(container_flags & TEMP_WEAK)
if(reagents.chem_temp >= 444)
if(damage)
damage += (reagents.chem_temp/444)/5
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index b1b5f86e0e..3b28b0d60b 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -110,7 +110,7 @@
item_state = "beaker"
materials = list(MAT_GLASS=500)
possible_transfer_amounts = list(5,10,15,20,25,30,50,60)
- beaker_weakness_bitflag = PH_WEAK
+ container_flags = PH_WEAK|APTFT_ALTCLICK|APTFT_VERB
/obj/item/reagent_containers/glass/beaker/Initialize()
. = ..()
@@ -203,11 +203,7 @@
volume = 180
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,180)
-
-/obj/item/reagent_containers/glass/beaker/plastic/Initialize()
- beaker_weakness_bitflag &= ~PH_WEAK
- beaker_weakness_bitflag |= TEMP_WEAK
- . = ..()
+ container_flags = TEMP_WEAK|APTFT_ALTCLICK|APTFT_VERB
/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
@@ -222,10 +218,7 @@
volume = 240
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,40,50,60,120,200,240)
-
-/obj/item/reagent_containers/glass/beaker/meta/Initialize() // why the fuck can't you just set the beaker weakness bitflags to nothing? fuck you
- beaker_weakness_bitflag &= ~PH_WEAK
- . = ..()
+ container_flags = APTFT_ALTCLICK|APTFT_VERB
/obj/item/reagent_containers/glass/beaker/noreact
name = "cryostasis beaker"
@@ -236,13 +229,9 @@
reagent_flags = OPENCONTAINER | NO_REACT
volume = 50
amount_per_transfer_from_this = 10
+ container_flags = APTFT_ALTCLICK|APTFT_VERB
container_HP = 10//shouldn't be needed
-/obj/item/reagent_containers/glass/beaker/noreact/Initialize()
- beaker_weakness_bitflag &= ~PH_WEAK
- . = ..()
- //reagents.set_reacting(FALSE) was this removed in a recent pr?
-
/obj/item/reagent_containers/glass/beaker/bluespace
name = "bluespace beaker"
desc = "A bluespace beaker, powered by experimental bluespace technology \
@@ -310,12 +299,9 @@
SLOT_L_STORE, SLOT_R_STORE,\
SLOT_GENERC_DEXTROUS_STORAGE
)
+ container_flags = APTFT_ALTCLICK|APTFT_VERB
container_HP = 1
-/obj/item/reagent_containers/glass/bucket/Initialize()
- beaker_weakness_bitflag |= TEMP_WEAK
- . = ..()
-
/obj/item/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params)
if(istype(O, /obj/item/mop))
if(reagents.total_volume < 1)
@@ -365,12 +351,9 @@
volume = 50
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50)
+ container_flags = TEMP_WEAK|APTFT_ALTCLICK|APTFT_VERB
container_HP = 1
-/obj/item/reagent_containers/glass/beaker/waterbottle/Initialize()
- beaker_weakness_bitflag |= TEMP_WEAK
- . = ..()
-
/obj/item/reagent_containers/glass/beaker/waterbottle/empty
list_reagents = list()
diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
index c0db92e0e8..db2d73c697 100644
--- a/code/modules/reagents/reagent_containers/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -7,7 +7,7 @@
spillable = FALSE
volume = 10
possible_transfer_amounts = list(1,2,5,10)
- APTFT_altclick = FALSE
+ container_flags = APTFT_VERB
obj_flags = UNIQUE_RENAME
unique_reskin = list("hypovial" = "hypovial",
"red hypovial" = "hypovial-b",
@@ -25,9 +25,6 @@
if(!icon_state)
icon_state = "hypovial"
update_icon()
-// beaker_weakness_bitflag |= PH_WEAK // fuck you if you're using these like beakers
-// beaker_weakness_bitflag |= TEMP_WEAK
-
/obj/item/reagent_containers/glass/bottle/vial/on_reagent_change()
update_icon()
diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm
index 0fe30efd6b..59c956acd6 100644
--- a/code/modules/reagents/reagent_containers/rags.dm
+++ b/code/modules/reagents/reagent_containers/rags.dm
@@ -8,7 +8,7 @@
reagent_flags = REFILLABLE | DRAINABLE
amount_per_transfer_from_this = 5
possible_transfer_amounts = list()
- APTFT_altclick = FALSE
+ container_flags = APTFT_VERB
volume = 5
spillable = FALSE
var/wipe_sound
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index edaa5ce269..e8c8d14141 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -23,6 +23,7 @@
amount_per_transfer_from_this = 5
volume = 250
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
+ container_flags = NONE //APTFT is alternated between the initial value and stream_amount and shouldn't be exploited.
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
. = ..()
diff --git a/config/game_options.txt b/config/game_options.txt
index 9fc50fcd0f..97c5ff3a68 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -39,7 +39,7 @@ WALK_DELAY 4
## Entries completely override all subtypes. Later entries have precedence over earlier entries.
## This means if you put /mob 0 on the last entry, it will null out all changes, while if you put /mob as the first entry and
## /mob/living/carbon/human on the last entry, the last entry will override the first.
-##MULTIPLICATIVE_MOVESPEED /mob/living/carbon/human 0
+MULTIPLICATIVE_MOVESPEED /mob/living/carbon/human 1
##MULTIPLICATIVE_MOVESPEED /mob/living/silicon/robot 0
##MULTIPLICATIVE_MOVESPEED /mob/living/carbon/monkey 0
##MULTIPLICATIVE_MOVESPEED /mob/living/carbon/alien 0
diff --git a/html/changelogs/AutoChangeLog-pr-10414.yml b/html/changelogs/AutoChangeLog-pr-10414.yml
new file mode 100644
index 0000000000..25750a889d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10414.yml
@@ -0,0 +1,4 @@
+author: "CameronWoof"
+delete-after: True
+changes:
+ - tweak: "Lighting looks better now. I can say that because the PR wouldn't be merged and you wouldn't be reading this if it wasn't true."
diff --git a/html/changelogs/AutoChangeLog-pr-10590.yml b/html/changelogs/AutoChangeLog-pr-10590.yml
new file mode 100644
index 0000000000..e59c8decf0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10590.yml
@@ -0,0 +1,11 @@
+author: "KathrinBailey"
+delete-after: True
+changes:
+ - bugfix: "Missing turf_decals in Cargo Office."
+ - bugfix: "Turns on the docking beacons on Box."
+ - bugfix: "Fixes Starboard Quarter maint room being spaced. It was never intended to be like how it was."
+ - bugfix: "The aforementioned maint room not having stuff in it."
+ - bugfix: "varedited photocopier sometimes not opening any UI."
+ - bugfix: "Atmos differences in Starboard Quarter maint."
+ - bugfix: "Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with airless plating."
+ - bugfix: "Rotates AI satellite computers. These have probably been like this since computers had the old sprites and no directional ones. You shouldn't sit at a chair to operate a sideways computer."
diff --git a/html/changelogs/AutoChangeLog-pr-10706.yml b/html/changelogs/AutoChangeLog-pr-10706.yml
new file mode 100644
index 0000000000..8bf1cd449c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10706.yml
@@ -0,0 +1,5 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Stopped the ellipsis question mark from being displayed twice in the examine message for masked/unknown human mobs."
+ - tweak: "Made the aforementioned ellipsis question mark display on flavor-text-less masked/unknown human mobs too for consistency."
diff --git a/html/changelogs/AutoChangeLog-pr-10709.yml b/html/changelogs/AutoChangeLog-pr-10709.yml
new file mode 100644
index 0000000000..8c9d74c5f1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10709.yml
@@ -0,0 +1,4 @@
+author: "Seris02"
+delete-after: True
+changes:
+ - rscadd: "recipe for mammal mutation toxin"
diff --git a/html/changelogs/AutoChangeLog-pr-10733.yml b/html/changelogs/AutoChangeLog-pr-10733.yml
new file mode 100644
index 0000000000..33e2ee216c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10733.yml
@@ -0,0 +1,4 @@
+author: "Hatterhat"
+delete-after: True
+changes:
+ - balance: "Zombie powder is now instant when ingested, but delayed when injected or applied through touch."
diff --git a/html/changelogs/AutoChangeLog-pr-10737.yml b/html/changelogs/AutoChangeLog-pr-10737.yml
new file mode 100644
index 0000000000..fa4023c148
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10737.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Stopped an APTFT exploit with spray bottles."
diff --git a/html/changelogs/AutoChangeLog-pr-10742.yml b/html/changelogs/AutoChangeLog-pr-10742.yml
new file mode 100644
index 0000000000..ece862d112
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10742.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - bugfix: "Fixed the detective revolver being quite risky to use."
diff --git a/html/changelogs/AutoChangeLog-pr-10743.yml b/html/changelogs/AutoChangeLog-pr-10743.yml
new file mode 100644
index 0000000000..d9775f7bc3
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10743.yml
@@ -0,0 +1,4 @@
+author: "necromanceranne"
+delete-after: True
+changes:
+ - rscdel: "You can no longer order spinfusors or their ammo from cargo."
diff --git a/html/changelogs/AutoChangeLog-pr-10752.yml b/html/changelogs/AutoChangeLog-pr-10752.yml
new file mode 100644
index 0000000000..9bb50f1da1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10752.yml
@@ -0,0 +1,9 @@
+author: "Owai-Seek"
+delete-after: True
+changes:
+ - rscadd: "Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates."
+ - rscdel: "Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat Crate"
+ - tweak: "Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint."
+ - tweak: "Organised some crates with sub-categories. Also, moved all vendor refills to a new tab."
+ - tweak: "Moved Grill to Service Tab"
+ - bugfix: "Engineering Hardsuit Access"
diff --git a/html/changelogs/AutoChangeLog-pr-10764.yml b/html/changelogs/AutoChangeLog-pr-10764.yml
new file mode 100644
index 0000000000..25dfebd5fb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10764.yml
@@ -0,0 +1,4 @@
+author: "deathride58"
+delete-after: True
+changes:
+ - bugfix: "Spacemen no longer run at lightspeed on local servers."
diff --git a/html/changelogs/AutoChangeLog-pr-10765.yml b/html/changelogs/AutoChangeLog-pr-10765.yml
new file mode 100644
index 0000000000..975a3ac5c5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-10765.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - bugfix: "no more bluespace skittish locker diving,"
diff --git a/tgstation.dme b/tgstation.dme
index 83c3fd82ed..d0b3536b7f 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1601,6 +1601,7 @@
#include "code\modules\cargo\packs\science.dm"
#include "code\modules\cargo\packs\security.dm"
#include "code\modules\cargo\packs\service.dm"
+#include "code\modules\cargo\packs\vending.dm"
#include "code\modules\chatter\chatter.dm"
#include "code\modules\client\asset_cache.dm"
#include "code\modules\client\client_colour.dm"