diff --git a/_maps/configs/syndicate_lugol.json b/_maps/configs/syndicate_lugol.json
index 891a19641252..e8436c7d128d 100644
--- a/_maps/configs/syndicate_lugol.json
+++ b/_maps/configs/syndicate_lugol.json
@@ -42,5 +42,5 @@
"slots": 2
}
},
-"enabled": true
+"enabled": false
}
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index bedf2c894b03..e43ffd7cb182 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -1273,5 +1273,5 @@
/obj/item/storage/ration/blackened_calamari = 5,
/obj/item/storage/ration/elbow_macaroni = 5,
/obj/item/storage/ration/cheese_pizza_slice = 5,
- /obj/item/storage/ration/crayons
+ /obj/item/storage/ration/crayons = 2 // :)
)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index a811ae46d822..041233b0d54a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \
+ new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \
null, \
new/datum/stack_recipe_list("office chairs", list( \
new/datum/stack_recipe("gray office chair", /obj/structure/chair/office, 5, one_per_turf = TRUE, on_floor = TRUE), \
diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm
index 5d0e2972954e..482ba202a73e 100644
--- a/code/game/objects/items/storage/ration.dm
+++ b/code/game/objects/items/storage/ration.dm
@@ -35,7 +35,6 @@
icon_state = "[icon_state]_open"
return ..()
-
/obj/item/storage/ration/vegan_chili
name = "vegan chili with beans ration"
desc = "A complete meal package containing a hearty vegan chili with beans, complemented by vegetable crackers, savory cornbread, flavorful pizza crackers, and more. A perfect choice for plant-based nourishment."
@@ -47,7 +46,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/cornbread = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/pizza_crackers = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/grape_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside,src)
@@ -63,7 +62,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/fruit_puree = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/cinnamon_bun = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/chocolate_protein_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside,src)
@@ -79,7 +78,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/dried_raisins = 1,
/obj/item/reagent_containers/food/snacks/ration/side/bread_sticks = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/lemonade_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside,src)
@@ -96,7 +95,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/corn_kernels = 1,
/obj/item/reagent_containers/food/snacks/ration/bar/energy_bar = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/fruit_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/fruit_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside,src)
@@ -113,12 +112,11 @@
/obj/item/reagent_containers/food/snacks/ration/snack/blackberry_preserves = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/candy_rings = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/fruit_smoothie_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/fruit_smoothie_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside,src)
-
/obj/item/storage/ration/chili_macaroni
name = "chili and macaroni ration"
desc = "Indulge in the comforting combination of chili and macaroni in this flavorful ration. Satisfy your taste buds with a mix of sweet and savory treats."
@@ -131,7 +129,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/lemon_pound_cake = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/cherry_snackers = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -147,7 +145,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/mint_chocolate_snack_cake = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/cherry_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/cherry_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -164,7 +162,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/wheat_bread = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/sour_gummy_worms = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/garlic_cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_orange = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_orange = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -180,7 +178,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/pretzel_sticks_honey_mustard = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/blue_raspberry_candies = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/peanut_cranberry_mix = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_chocolate = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_chocolate = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -212,7 +210,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/pretzel_sticks_honey_mustard = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/pick_me_up_energy_gum = 1,
/obj/item/reagent_containers/food/snacks/ration/bar/rationers_guild_chocolate_bar = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_hazelnut = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_hazelnut = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -228,7 +226,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/fried_potato_curls = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/chocolate_orange_snack_cake = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/apple_slices = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/pineapple_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/pineapple_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -237,7 +235,6 @@
name = "assorted salted offal ration"
desc = "An adventurous choice, this ration offers an assortment of salted offal, providing a unique culinary experience."
-
/obj/item/storage/ration/assorted_salted_offal/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/assorted_salted_offal = 1,
@@ -262,7 +259,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/maple_muffin = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/smoked_almonds = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/maple_syrup = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/grape_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -279,7 +276,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/chocolate_chunk_oatmeal_cookie = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/peanut_candies = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/bacon_cheddar_cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage_sugar_free = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -296,7 +293,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/patriotic_sugar_cookies = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -312,7 +309,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/oatmeal_cookie = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/lemonade_beverage_suger_free = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage_suger_free = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -329,7 +326,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/dried_cranberries = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/dry_roasted_peanuts = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage_sugar_free = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -346,7 +343,7 @@
/obj/item/reagent_containers/food/snacks/ration/side/white_bread_mini_loaf = 1,
/obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/chocolate_protein_beverage = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
@@ -363,7 +360,7 @@
/obj/item/reagent_containers/food/snacks/ration/snack/jalapeno_cashews = 1,
/obj/item/reagent_containers/food/snacks/ration/bar/quik_energy_bar_chocolate = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter = 1,
- /obj/item/reagent_containers/food/snacks/ration/condiment/grape_beverage_sugar_free = 1,
+ /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage_sugar_free = 1,
/obj/item/ration_heater = 1
)
generate_items_inside(items_inside, src)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 06c2b28e903c..8db4c2846dcb 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -772,4 +772,6 @@
return ..()
/obj/item/reagent_containers/food/drinks/ration/pan_genezan_vodka
- list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 30)
+ name = "Pan-Genezan vodka"
+ desc = "Vodka made from the finest potatoes."
+ list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 15)
diff --git a/code/modules/food_and_drinks/food/ration.dm b/code/modules/food_and_drinks/food/ration.dm
index ab6c72d55516..b74db1f0ccb7 100644
--- a/code/modules/food_and_drinks/food/ration.dm
+++ b/code/modules/food_and_drinks/food/ration.dm
@@ -33,7 +33,6 @@
to_chat(user, "You tear open \the [src].")
playsound(user.loc, 'sound/effects/rip3.ogg', 50)
reagents.flags |= OPENCONTAINER
- spillable = TRUE
desc += "\nIt's been opened."
update_overlays()
@@ -52,6 +51,8 @@
/obj/item/reagent_containers/food/snacks/ration/microwave_act(obj/machinery/microwave/Heater)
if (cookable == FALSE)
..()
+ else if (cooked == TRUE)
+ ..()
else
name = "warm [initial(name)]"
bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2)
@@ -60,7 +61,7 @@
/obj/item/reagent_containers/food/snacks/ration/examine(mob/user)
. = ..()
if(cookable && !cooked)
- . += "It can be cooked in a microwave or warmed using a flameless ration heater.\n"
+ . += "It can be cooked in a microwave or warmed using a flameless ration heater."
/obj/item/reagent_containers/food/snacks/ration/entree
icon_state = "ration_main"
@@ -79,6 +80,71 @@
icon_state = "ration_bar"
list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2)
+/obj/item/reagent_containers/food/snacks/ration/condiment
+ name = "condiment pack"
+ desc = "Just your average condiment pacl."
+ icon_state = "ration_condi"
+ volume = 10
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list()
+
+/obj/item/reagent_containers/food/snacks/ration/condiment/attack(mob/living/M, mob/user, def_zone)
+ if (!is_drainable())
+ to_chat(user, "[src] is sealed shut!")
+ return 0
+ else
+ to_chat(user, "[src] cant be eaten like that!")
+ return 0
+
+/obj/item/reagent_containers/food/snacks/ration/condiment/afterattack(obj/target, mob/user , proximity)
+ . = ..()
+ if(!is_drainable())
+ to_chat(user, "[src] is sealed shut!")
+ return
+ if(!proximity)
+ return
+ //You can tear the bag open above food to put the condiments on it, obviously.
+ if(istype(target, /obj/item/reagent_containers/food/snacks))
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "[target] is too full!" )
+ return
+ else
+ to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.")
+ src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
+ qdel(src)
+
+/obj/item/reagent_containers/food/snacks/ration/pack
+ name = "powder pack"
+ desc = "Mix into a bottle of water and shake."
+ icon_state = "ration_condi"
+ volume = 10
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list()
+
+/obj/item/reagent_containers/food/snacks/ration/pack/attack(mob/living/M, mob/user, def_zone)
+ if (!is_drainable())
+ to_chat(user, "[src] is sealed shut!")
+ return 0
+ else
+ to_chat(user, "[src] cant be eaten like that!")
+ return 0
+
+/obj/item/reagent_containers/food/snacks/ration/pack/afterattack(obj/target, mob/user , proximity)
+ . = ..()
+ if(!is_drainable())
+ to_chat(user, "[src] is sealed shut!")
+ return
+ if(!proximity)
+ return
+ if(istype(target, /obj/item/reagent_containers))
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "[target] is too full!" )
+ return
+ else
+ to_chat(user, "You pour the [src] into [target] and shake.")
+ src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
+ qdel(src)
+
/obj/item/reagent_containers/food/snacks/ration/entree/vegan_chili
name = "vegan chili with beans"
desc = "A hearty and flavorful vegan chili made with beans. It's so delicious, you won't believe it's not meat!"
@@ -218,6 +284,7 @@
filling_color = "#ffcc00"
tastes = list("cheese" = 1, "pizza" = 1)
foodtype = GRAIN | DAIRY
+
/obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers
name = "vegetable 'crackers'"
desc = "Delicious vegetable-based crackers that are the perfect crunchy and nutritious snack."
@@ -277,6 +344,7 @@
filling_color = "#e6e600"
tastes = list("garlic" = 1, "potatoes" = 1)
foodtype = GRAIN | VEGETABLES
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/soup_crackers
name = "soup crackers"
@@ -291,6 +359,7 @@
filling_color = "#b82121"
tastes = list("mushrooms" = 1, "chili" = 1)
foodtype = VEGETABLES | MEAT
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/white_sandwich_bread
name = "white sandwich bread"
@@ -319,13 +388,15 @@
filling_color = "#99cc00"
tastes = list("asparagus" = 1, "butter" = 1)
foodtype = VEGETABLES
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/broth_tuna_rice
- name = "broth with tuna and rice"
+ name = "bone broth with tuna and rice"
desc = "A warm and comforting broth with tender tuna and rice, offering a nourishing and satisfying meal."
filling_color = "#669999"
tastes = list("broth" = 1, "tuna" = 1, "rice" = 1)
foodtype = MEAT | GRAIN
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/trail_crackers
name = "trail crackers"
@@ -335,11 +406,12 @@
foodtype = GRAIN | FRUIT
/obj/item/reagent_containers/food/snacks/ration/side/hash_brown_bacon
- name = "hash brown with bacon"
+ name = "hash brown potatoes with bacon, peppers and onions"
desc = "Crispy hash brown paired with savory bacon, creating a satisfying and indulgent snack option."
filling_color = "#ffcc00"
tastes = list("hash brown" = 1, "bacon" = 1)
foodtype = GRAIN | MEAT
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/granola_milk_blueberries
name = "granola with milk and blueberries"
@@ -361,6 +433,7 @@
filling_color = "#ffcc00"
tastes = list("au gratin potatoes" = 1)
foodtype = GRAIN | DAIRY | VEGETABLES
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/side/applesauce_carb_enhanced
name = "carb-enhanced applesauce"
@@ -410,6 +483,7 @@
filling_color = "#663300"
tastes = list("crackers" = 1)
foodtype = GRAIN
+
/obj/item/reagent_containers/food/snacks/ration/side/barbecue_fried_pork_rinds
name = "barbecue fried pork rinds"
desc = "Crispy and flavorful fried pork rinds coated in a savory barbecue seasoning, creating a satisfying snack option."
@@ -451,6 +525,7 @@
filling_color = "#e2a054"
tastes = list("chocolate" = 1, "pastry" = 1, "sweet" = 1)
foodtype = SUGAR | GRAIN | JUNKFOOD | BREAKFAST
+ cookable = TRUE
/obj/item/reagent_containers/food/snacks/ration/snack/dried_raisins
name = "dried raisins"
@@ -655,33 +730,6 @@
tastes = list("chocolate" = 1)
foodtype = SUGAR
-/obj/item/reagent_containers/food/snacks/ration/condiment
- name = "condiment bottle"
- desc = "Just your average condiment bottle."
- icon_state = "ration_condi"
- volume = 10
- amount_per_transfer_from_this = 10
- possible_transfer_amounts = list()
-
-/obj/item/reagent_containers/food/snacks/ration/condiment/afterattack(obj/target, mob/user , proximity)
- . = ..()
- if(!is_drainable())
- to_chat(user, "The [src] is sealed shut!")
- return
- if(!proximity)
- return
-
- //You can tear the bag open above food to put the condiments on it, obviously.
- if(istype(target, /obj/item/reagent_containers/food/snacks))
- if(target.reagents.total_volume >= target.reagents.maximum_volume)
- to_chat(user, "You tear open [src], but [target] is stacked so high that it just drips off!" )
- qdel(src)
- return
- else
- to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.")
- src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
- qdel(src)
-
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread
name = "cheese spread pack"
list_reagents = list(/datum/reagent/consumable/cheese_spread = 8)
@@ -710,58 +758,58 @@
name = "maple syrup pack"
list_reagents = list(/datum/reagent/consumable/sugar = 10)
-/obj/item/reagent_containers/food/snacks/ration/condiment/chocolate_protein_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage
name = "chocolate hazelnut protein drink powder pack"
list_reagents = list(/datum/reagent/consumable/coco = 5, /datum/reagent/consumable/eggyolk = 5)
-/obj/item/reagent_containers/food/snacks/ration/condiment/fruit_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/fruit_beverage
name = "fruit punch beverage powder, carb-electrolyte pack"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/applejuice = 2, /datum/reagent/consumable/orangejuice = 2)
-/obj/item/reagent_containers/food/snacks/ration/condiment/fruit_smoothie_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/fruit_smoothie_beverage
name = "tropical blend fruit and vegetable smoothie powder pack"
list_reagents = list(/datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/orangejuice = 3, /datum/reagent/consumable/eggyolk = 3)
-/obj/item/reagent_containers/food/snacks/ration/condiment/grape_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage
name = "grape beverage powder, carb-fortified pack"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/grapejuice = 5)
-/obj/item/reagent_containers/food/snacks/ration/condiment/grape_beverage_sugar_free
+/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage_sugar_free
name = "sugar-free grape beverage base powder"
list_reagents = list(/datum/reagent/consumable/grapejuice = 10)
-/obj/item/reagent_containers/food/snacks/ration/condiment/lemonade_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage
name = "lemonade drink powder pack"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/lemonjuice = 5)
-/obj/item/reagent_containers/food/snacks/ration/condiment/lemonade_beverage_suger_free
+/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage_suger_free
name = "lemonade sugar-free beverage base pack"
list_reagents = list(/datum/reagent/consumable/lemonjuice = 10)
-/obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage
name = "orange beverage powder, carb-fortified pack"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/orangejuice = 5)
-/obj/item/reagent_containers/food/snacks/ration/condiment/orange_beverage_sugar_free
+/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free
name = "orange beverage base, sugar-free pack"
list_reagents = list(/datum/reagent/consumable/orangejuice = 10)
-/obj/item/reagent_containers/food/snacks/ration/condiment/cherry_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/cherry_beverage
name = "cherry high-energy beverage powder pack"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/cherryjelly = 5)
-/obj/item/reagent_containers/food/snacks/ration/condiment/pineapple_beverage
+/obj/item/reagent_containers/food/snacks/ration/pack/pineapple_beverage
name = "pinapple fruit beverage base pack"
list_reagents = list(/datum/reagent/consumable/pineapplejuice = 10)
-/obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_orange
+/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_orange
name = "freeze-dried coffee flavored with orange pack"
list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/orangejuice = 3)
-/obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_chocolate
+/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_chocolate
name = "freeze-dried coffee flavored with chocolate pack"
list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/coco = 3)
-/obj/item/reagent_containers/food/snacks/ration/condiment/freeze_dried_coffee_hazelnut
+/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_hazelnut
name = "freeze-dried coffee flavored with hazelnut pack"
list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/coco = 3)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index ba728daf7797..5736d187fc78 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -362,6 +362,7 @@
/obj/item/ration_heater
name = "flameless ration heater"
+ desc = "A magnisium based ration heater. It can be used to heat up entrees and other food items. reaches the same temperature as a microwave with half the volume."
icon = 'icons/obj/food/ration.dmi'
icon_state = "ration_package"
grind_results = list(/datum/reagent/iron = 10, /datum/reagent/water = 10, /datum/reagent/consumable/sodiumchloride = 5)
@@ -382,7 +383,7 @@
RegisterSignal(tocook, COMSIG_PARENT_QDELETING, PROC_REF(clear_cooking))
target.add_overlay(ration_overlay)
addtimer(CALLBACK(src, .proc/cook), 100)
- visible_message("\The [target] rapidly begins cooking...")
+ target.visible_message("\The [target] rapidly begins cooking...")
playsound(src, 'sound/items/cig_light.ogg', 50, 1)
moveToNullspace()
@@ -391,22 +392,27 @@
UnregisterSignal(tocook, COMSIG_PARENT_QDELETING)
tocook.cut_overlay(ration_overlay)
tocook = null
+
/obj/item/ration_heater/proc/cook()
- var/cookturf = get_turf(tocook)
- tocook.visible_message("\The [tocook] is done warming up!")
- playsound(tocook, 'sound/items/cig_snuff.ogg', 50, 1)
- if(istype(tocook, /obj/item/reagent_containers/food) || istype(tocook, /obj/item/grown))
- clear_cooking()
- tocook.microwave_act()
- if(uses == 0)
- qdel()
- else
- uses--
- src.forceMove(cookturf)
+ if(!QDELETED(tocook))
+ var/cookturf = get_turf(tocook)
+ tocook.visible_message("\The [src] lets out a final hiss...")
+ playsound(tocook, 'sound/items/cig_snuff.ogg', 50, 1)
+ if(istype(tocook, /obj/item/reagent_containers/food) || istype(tocook, /obj/item/grown))
+ tocook.visible_message("\The [tocook] is done warming up!")
+ tocook.microwave_act()
+ if(!QDELETED(tocook))
+ clear_cooking()
+ if(uses == 0)
+ qdel()
+ else
+ uses--
+ src.forceMove(cookturf)
/obj/item/ration_heater/examine(mob/user)
. = ..()
. += "It has [uses] uses left..."
+ . += "Examine rations to see which ones can be microwaved."
#undef MICROWAVE_NORMAL
#undef MICROWAVE_MUCK
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index f7f471a3d860..3aa9cc7d7767 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -215,6 +215,14 @@
category = list("initial", "Electronics")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
+/datum/design/lightswitch_frame
+ name = "Lightswitch Frame"
+ id = "lightswitch_frame"
+ build_type = AUTOLATHE
+ materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
+ build_path = /obj/item/wallframe/light_switch
+ category = list("initial", "Misc")
+
/datum/design/camera
name = "Camera"
id = "camera"
diff --git a/html/changelogs/AutoChangeLog-pr-2404.yml b/html/changelogs/AutoChangeLog-pr-2404.yml
new file mode 100644
index 000000000000..cabacc0614bf
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-2404.yml
@@ -0,0 +1,4 @@
+author: thgvr
+delete-after: true
+changes:
+ - bugfix: Lugol is now admin spawn only
diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml
index ff1b93028602..375c3c1276bb 100644
--- a/html/changelogs/archive/2023-10.yml
+++ b/html/changelogs/archive/2023-10.yml
@@ -19,3 +19,12 @@
thgvr:
- rscadd: Added an option for Sarathi to have ears, in the frills slot of character
creation.
+2023-10-07:
+ Zytolg:
+ - imageadd: All forms and beds and bedsheets now have directional sprites.
+ - code_imp: Made Double Beds craftable at the request of Rylie. Have fun with that.
+ meemofcourse:
+ - rscadd: You can now build lightswitch frames from an autolathe
+2023-10-11:
+ FalloutFalcon:
+ - bugfix: fixed multiple bugs and oversights with rations
diff --git a/icons/obj/bedsheets.dmi b/icons/obj/bedsheets.dmi
index 414bbc38ed81..56657861f576 100644
Binary files a/icons/obj/bedsheets.dmi and b/icons/obj/bedsheets.dmi differ
diff --git a/icons/obj/lavaland/survival_pod.dmi b/icons/obj/lavaland/survival_pod.dmi
index 84ea0e1e8320..960a7f24aca3 100644
Binary files a/icons/obj/lavaland/survival_pod.dmi and b/icons/obj/lavaland/survival_pod.dmi differ
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index 356f91406367..d779a15bc717 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/tgui/yarn.lock b/tgui/yarn.lock
index 00295b8ed55e..7bbeb56d0362 100644
--- a/tgui/yarn.lock
+++ b/tgui/yarn.lock
@@ -6467,12 +6467,12 @@ __metadata:
languageName: node
linkType: hard
-"nanoid@npm:^3.3.4":
- version: 3.3.4
- resolution: "nanoid@npm:3.3.4"
+"nanoid@npm:^3.3.6":
+ version: 3.3.6
+ resolution: "nanoid@npm:3.3.6"
bin:
nanoid: bin/nanoid.cjs
- checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c
+ checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3
languageName: node
linkType: hard
@@ -7065,13 +7065,13 @@ __metadata:
linkType: hard
"postcss@npm:^8.2.15":
- version: 8.4.14
- resolution: "postcss@npm:8.4.14"
+ version: 8.4.31
+ resolution: "postcss@npm:8.4.31"
dependencies:
- nanoid: ^3.3.4
+ nanoid: ^3.3.6
picocolors: ^1.0.0
source-map-js: ^1.0.2
- checksum: fe58766ff32e4becf65a7d57678995cfd239df6deed2fe0557f038b47c94e4132e7e5f68b5aa820c13adfec32e523b693efaeb65798efb995ce49ccd83953816
+ checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea
languageName: node
linkType: hard
diff --git a/tools/requirements.txt b/tools/requirements.txt
index d7ead1a00123..21efd65b62db 100644
--- a/tools/requirements.txt
+++ b/tools/requirements.txt
@@ -1,6 +1,6 @@
pygit2==1.7.2
bidict==0.22.0
-Pillow==9.3.0
+Pillow==10.0.1
# check_regex.py
colorama==0.4.4