From 6fb816a7453070ae44c66f10371f9a7597ce4eab Mon Sep 17 00:00:00 2001
From: Aquidu <98631832+Aquidu@users.noreply.github.com>
Date: Sun, 25 Aug 2024 09:05:55 -0700
Subject: [PATCH] Extra ration icons (#3290)
## About The Pull Request
Adds a unique emblem for each ration box, providing a visual cue for
what kind of food can be found inside, adds coloring to the condiment
sprites, and creates new sprites for the ration heater side-size
rations, drink mixes, and vodka!
Ration boxes
![Screenshot
(2932)](https://github.com/user-attachments/assets/5e88056f-4428-4dcc-b20a-eba7d0f54a78)
Side ration, heater, and vodka
![Screenshot
(2933)](https://github.com/user-attachments/assets/94185737-83c6-4722-975d-a8055408c67c)
Drink mixes
![Screenshot
(2927)](https://github.com/user-attachments/assets/8f47233c-e339-4c15-98a9-eea9ee5f50df)
Condiments
![Screenshot
(2926)](https://github.com/user-attachments/assets/db9b791e-912a-459a-b6d2-0c44c8d618da)
## Why It's Good For The Game
Currently, the ration heater and vodka use the same icon as the ration
box, all ration boxes look the same, "snack" and "side" rations look
identical, condiments and drink packs use the same model, and filling
color doesn't work for either one. This PR gives each ration a unique
icon to be recognized by.
Maintainer edit: cleaned up changelog
## Changelog
:cl:Aquidu
add: Rations now have icons that help show the contents.
add: Condiments and drink mixes now have colors when full to help show
the contents.
add: Unique sprites for the ration heater, drink packs ration drinks,
and "side" category rations.
code: Changes the sound effect for opening the drink ration to the
bottle cap sound to line up with the icon.
/:cl:
---
code/game/objects/items/storage/ration.dm | 52 +++++++++++-------
code/modules/food_and_drinks/drinks/drinks.dm | 4 +-
code/modules/food_and_drinks/food/ration.dm | 27 ++++++++-
.../kitchen_machinery/microwave.dm | 2 +-
icons/obj/food/ration.dmi | Bin 1832 -> 2145 bytes
5 files changed, 58 insertions(+), 27 deletions(-)
diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm
index 482ba202a73e2..b016cc3392601 100644
--- a/code/game/objects/items/storage/ration.dm
+++ b/code/game/objects/items/storage/ration.dm
@@ -9,10 +9,20 @@
resistance_flags = FLAMMABLE
drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
+ var/emblem_icon_state = "null"
+ var/ration_overlay = "null"
/obj/item/storage/ration/Initialize(mapload)
. = ..()
update_icon()
+ update_overlays()
+
+/obj/item/storage/ration/update_overlays()
+ . = ..()
+ var/mutable_appearance/ration_overlay
+ if(emblem_icon_state)
+ ration_overlay = mutable_appearance(icon, emblem_icon_state)
+ add_overlay(ration_overlay)
/obj/item/storage/ration/ComponentInitialize()
. = ..()
@@ -38,7 +48,7 @@
/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."
-
+ emblem_icon_state = "emblem_vegan_chili"
/obj/item/storage/ration/vegan_chili/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/vegan_chili = 1,
@@ -54,7 +64,7 @@
/obj/item/storage/ration/shredded_beef
name = "shredded beef in barbecue sauce ration"
desc = "Enjoy the rich and savory flavors of shredded beef in smoky barbecue sauce with this satisfying ration. Accompanied by a fruit puree, jerky wrap, cinnamon bun, and additional condiments, this ration is perfect for meat lovers."
-
+ emblem_icon_state = "emblem_shredded_beef"
/obj/item/storage/ration/shredded_beef/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/shredded_beef = 1,
@@ -70,7 +80,7 @@
/obj/item/storage/ration/pork_spaghetti
name = "spaghetti with pork and sauce ration"
desc = "Indulge in a comforting meal of spaghetti with tender pork and savory sauce with this ration. Complemented by a toaster pastry, seasoned bread sticks, dried raisins, and other accompaniments, this ration offers a flavorful experience."
-
+ emblem_icon_state = "emblem_pork_spaghetti"
/obj/item/storage/ration/pork_spaghetti/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/pork_spaghetti = 1,
@@ -86,7 +96,7 @@
/obj/item/storage/ration/fried_fish
name = "fried fish chunks ration"
desc = "Experience the crispy delight of fried fish chunks with this ration. Accompanied by an energy bar, tortillas, toasted corn kernels, and more, this ration provides a satisfying combination of flavors and textures."
-
+ emblem_icon_state = "emblem_fried_fish"
/obj/item/storage/ration/fried_fish/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/fried_fish = 1,
@@ -103,7 +113,7 @@
/obj/item/storage/ration/beef_strips
name = "beef strips in tomato sauce ration"
desc = "Savor the deliciousness of tender beef strips in a flavorful tomato sauce with this ration. Enjoy a chocolate pudding, white wheat snack bread, blackberry preserves, and peppermint candy rings as delightful accompaniments."
-
+ emblem_icon_state = "emblem_beef_strips"
/obj/item/storage/ration/beef_strips/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/beef_strips = 1,
@@ -120,7 +130,7 @@
/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."
-
+ emblem_icon_state = "emblem_chili_macaroni"
/obj/item/storage/ration/chili_macaroni/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/chili_macaroni = 1,
@@ -137,7 +147,7 @@
/obj/item/storage/ration/chicken_wings_hot_sauce
name = "chicken wings in hot sauce ration"
desc = "Experience the bold and spicy flavors of chicken wings drenched in hot sauce. This ration also includes a mix of delightful snacks for a well-rounded meal."
-
+ emblem_icon_state = "emblem_chicken_wings_hot_sauce"
/obj/item/storage/ration/chicken_wings_hot_sauce/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/chicken_wings_hot_sauce = 1,
@@ -153,7 +163,7 @@
/obj/item/storage/ration/fish_stew
name = "fish stew ration"
desc = "Dive into the depths of flavor with this fish stew ration. Enjoy a hearty blend of seafood and vegetables, complemented by a selection of tasty accompaniments."
-
+ emblem_icon_state = "emblem_fish_stew"
/obj/item/storage/ration/fish_stew/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/fish_stew = 1,
@@ -170,7 +180,7 @@
/obj/item/storage/ration/lemon_pepper_chicken
name = "lemon pepper chicken ration"
desc = "A tasty Lemon Pepper Chicken ration that combines the flavors of fruit and meat. Perfect for a satisfying meal."
-
+ emblem_icon_state = "emblem_lemon_pepper_chicken"
/obj/item/storage/ration/lemon_pepper_chicken/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/lemon_pepper_chicken = 1,
@@ -186,7 +196,7 @@
/obj/item/storage/ration/sausage_peppers_onions
name = "sausage, peppers and onions ration"
desc = "Indulge in the delightful combination of juicy sausage, peppers, and onions in this hearty ration."
-
+ emblem_icon_state = "emblem_sausage_peppers_onions"
/obj/item/storage/ration/sausage_peppers_onions/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/sausage_peppers_onions = 1,
@@ -202,7 +212,7 @@
/obj/item/storage/ration/pork_dumplings_chili_sauce
name = "pork dumplings in chili sauce ration"
desc = "Savor the rich flavors of pork dumplings in a spicy chili sauce, accompanied by a variety of complementary snacks."
-
+ emblem_icon_state = "emblem_pork_dumplings_chili_sauce"
/obj/item/storage/ration/pork_dumplings_chili_sauce/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/dumplings_chili_sauce = 1,
@@ -218,7 +228,7 @@
/obj/item/storage/ration/battered_fish_sticks
name = "battered fish sticks ration"
desc = "Enjoy the crispy goodness of battered fish sticks, along with a selection of sides and a delectable dessert."
-
+ emblem_icon_state = "emblem_battered_fish_sticks"
/obj/item/storage/ration/battered_fish_sticks/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/battered_fish_sticks = 1,
@@ -234,7 +244,7 @@
/obj/item/storage/ration/assorted_salted_offal
name = "assorted salted offal ration"
desc = "An adventurous choice, this ration offers an assortment of salted offal, providing a unique culinary experience."
-
+ emblem_icon_state = "emblem_assorted_salted_offal"
/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,
@@ -250,7 +260,7 @@
/obj/item/storage/ration/maple_pork_sausage_patty
name = "maple pork sausage patty ration"
desc = "Start your day with a satisfying breakfast featuring a maple-infused pork sausage patty and a variety of treats."
-
+ emblem_icon_state = "emblem_maple_pork_sausage_patty"
/obj/item/storage/ration/maple_pork_sausage_patty/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/maple_pork_sausage_patty = 1,
@@ -267,7 +277,7 @@
/obj/item/storage/ration/pepper_jack_beef_patty
name = "jalapeno pepper jack beef patty ration"
desc = "Experience a flavorful fusion of jalapeno, pepper jack cheese, and beef in this grilled beef patty ration."
-
+ emblem_icon_state = "emblem_pepper_jack_beef_patty"
/obj/item/storage/ration/pepper_jack_beef_patty/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/pepper_jack_beef_patty = 1,
@@ -284,7 +294,7 @@
/obj/item/storage/ration/beef_goulash
name = "beef goulash ration"
desc = "Delight in the rich flavors of beef goulash, accompanied by a selection of sides and a sweet treat."
-
+ emblem_icon_state = "emblem_beef_goulash"
/obj/item/storage/ration/beef_goulash/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/beef_goulash = 1,
@@ -301,7 +311,7 @@
/obj/item/storage/ration/pepperoni_pizza_slice
name = "pepperoni pizza slice ration"
desc = "Indulge in the classic taste of pepperoni pizza with this ration, complete with sides and a refreshing beverage."
-
+ emblem_icon_state = "emblem_pepperoni_pizza_slice"
/obj/item/storage/ration/pepperoni_pizza_slice/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/pepperoni_pizza_slice = 1,
@@ -317,7 +327,7 @@
/obj/item/storage/ration/blackened_calamari
name = "blackened calamari in red sauce ration"
desc = "Enjoy the savory delight of blackened calamari served in a rich red sauce."
-
+ emblem_icon_state = "emblem_blackened_calamari"
/obj/item/storage/ration/blackened_calamari/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/blackened_calamari = 1,
@@ -334,7 +344,7 @@
/obj/item/storage/ration/elbow_macaroni
name = "elbow macaroni in tomato sauce ration"
desc = "Savor the comforting taste of elbow macaroni in a delicious tomato sauce."
-
+ emblem_icon_state = "emblem_elbow_macaroni"
/obj/item/storage/ration/elbow_macaroni/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/elbow_macaroni = 1,
@@ -351,7 +361,7 @@
/obj/item/storage/ration/cheese_pizza_slice
name = "cheese pizza slice ration"
desc = "Experience the timeless flavor of a classic cheese pizza slice."
-
+ emblem_icon_state = "emblem_cheese_pizza_slice"
/obj/item/storage/ration/cheese_pizza_slice/PopulateContents()
var/static/items_inside = list(
/obj/item/reagent_containers/food/snacks/ration/entree/cheese_pizza_slice = 1,
@@ -368,7 +378,7 @@
/obj/item/storage/ration/crayons
name = "military grade crayon ration"
desc = "Proven to increase kill count by atleast 1."
-
+ emblem_icon_state = "emblem_crayons"
/obj/item/storage/ration/crayons/PopulateContents()
var/static/items_inside = list(
/obj/item/toy/crayon/red = 1,
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 6ffea82fb9453..ec10f7dfb0f2c 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -762,7 +762,7 @@
desc = "If you ever wondered where air came from..."
list_reagents = list(/datum/reagent/oxygen = 6, /datum/reagent/nitrogen = 24)
icon = 'icons/obj/food/ration.dmi'
- icon_state = "ration_package"
+ icon_state = "ration_drink"
drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
in_container = TRUE
@@ -773,7 +773,7 @@
/obj/item/reagent_containers/food/drinks/ration/proc/open_ration(mob/user)
to_chat(user, "You tear open \the [src].")
- playsound(user.loc, 'sound/effects/rip3.ogg', 50)
+ playsound(user.loc, 'sound/items/glass_cap.ogg', 50)
reagents.flags |= OPENCONTAINER
spillable = TRUE
diff --git a/code/modules/food_and_drinks/food/ration.dm b/code/modules/food_and_drinks/food/ration.dm
index 261fe707ed7f6..6766a6aedbdad 100644
--- a/code/modules/food_and_drinks/food/ration.dm
+++ b/code/modules/food_and_drinks/food/ration.dm
@@ -83,7 +83,7 @@
list_reagents = list(/datum/reagent/consumable/nutriment = 4)
/obj/item/reagent_containers/food/snacks/ration/snack
- icon_state = "ration_side"
+ icon_state = "ration_snack"
list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3)
/obj/item/reagent_containers/food/snacks/ration/bar
@@ -92,7 +92,7 @@
/obj/item/reagent_containers/food/snacks/ration/condiment
name = "condiment pack"
- desc = "Just your average condiment pacl."
+ desc = "Just your average condiment pack."
icon_state = "ration_condi"
volume = 10
amount_per_transfer_from_this = 10
@@ -126,7 +126,7 @@
/obj/item/reagent_containers/food/snacks/ration/pack
name = "powder pack"
desc = "Mix into a bottle of water and shake."
- icon_state = "ration_condi"
+ icon_state = "ration_pack"
volume = 10
amount_per_transfer_from_this = 10
possible_transfer_amounts = list()
@@ -742,84 +742,105 @@
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread
name = "cheese spread pack"
+ filling_color = "#ffcc00"
list_reagents = list(/datum/reagent/consumable/cheese_spread = 8)
/obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread
name = "jalapeno cheddar cheese spread pack"
+ filling_color = "#ffaa00"
list_reagents = list(/datum/reagent/consumable/cheese_spread = 5 , /datum/reagent/consumable/capsaicin = 3)
/obj/item/reagent_containers/food/snacks/ration/condiment/garlic_cheese_spread
name = "garlic parmesan cheese spread pack"
+ filling_color = "#ffff00"
list_reagents = list(/datum/reagent/consumable/cheese_spread = 8)
/obj/item/reagent_containers/food/snacks/ration/condiment/bacon_cheddar_cheese_spread
name = "bacon cheddar cheese spread pack"
+ filling_color = "#ff9900"
list_reagents = list(/datum/reagent/consumable/cheese_spread = 8)
/obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter
name = "peanut butter pack"
+ filling_color = "#664400"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/peanut_butter = 5)
/obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter
name = "chunky peanut butter pack"
+ filling_color = "#663300"
list_reagents = list(/datum/reagent/consumable/peanut_butter = 10)
/obj/item/reagent_containers/food/snacks/ration/condiment/maple_syrup
name = "maple syrup pack"
+ filling_color = "#661100"
list_reagents = list(/datum/reagent/consumable/sugar = 10)
/obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage
name = "chocolate hazelnut protein drink powder pack"
+ filling_color = "#664400"
list_reagents = list(/datum/reagent/consumable/coco = 5, /datum/reagent/consumable/eggyolk = 5)
/obj/item/reagent_containers/food/snacks/ration/pack/fruit_beverage
name = "fruit punch beverage powder, carb-electrolyte pack"
+ filling_color = "#ff4400"
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/pack/fruit_smoothie_beverage
name = "tropical blend fruit and vegetable smoothie powder pack"
+ filling_color = "#ffaa00"
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/pack/grape_beverage
name = "grape beverage powder, carb-fortified pack"
+ filling_color = "#9900ff"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/grapejuice = 5)
/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage_sugar_free
name = "sugar-free grape beverage base powder"
+ filling_color = "#9900ff"
list_reagents = list(/datum/reagent/consumable/grapejuice = 10)
/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage
name = "lemonade drink powder pack"
+ filling_color = "#ffff80"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/lemonjuice = 5)
/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage_suger_free
name = "lemonade sugar-free beverage base pack"
+ filling_color = "#ffff00"
list_reagents = list(/datum/reagent/consumable/lemonjuice = 10)
/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage
name = "orange beverage powder, carb-fortified pack"
+ filling_color = "#ffbb00"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/orangejuice = 5)
/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free
name = "orange beverage base, sugar-free pack"
+ filling_color = "#ff9900"
list_reagents = list(/datum/reagent/consumable/orangejuice = 10)
/obj/item/reagent_containers/food/snacks/ration/pack/cherry_beverage
name = "cherry high-energy beverage powder pack"
+ filling_color = "#ff5555"
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/cherryjelly = 5)
/obj/item/reagent_containers/food/snacks/ration/pack/pineapple_beverage
name = "pinapple fruit beverage base pack"
+ filling_color = "#fff111"
list_reagents = list(/datum/reagent/consumable/pineapplejuice = 10)
/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_orange
name = "freeze-dried coffee flavored with orange pack"
+ filling_color = "#cc7400"
list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/orangejuice = 3)
/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_chocolate
name = "freeze-dried coffee flavored with chocolate pack"
+ filling_color = "#803300"
list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/coco = 3)
/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_hazelnut
name = "freeze-dried coffee flavored with hazelnut pack"
+ filling_color = "#553300"
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 2762892110f81..0df04a08658bf 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -362,7 +362,7 @@
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"
+ icon_state = "ration_heater"
grind_results = list(/datum/reagent/iron = 10, /datum/reagent/water = 10, /datum/reagent/consumable/sodiumchloride = 5)
heat = 3800
var/obj/item/tocook = null
diff --git a/icons/obj/food/ration.dmi b/icons/obj/food/ration.dmi
index 5bcf1f2b490bdd68274c1a00f70b8e9b549b0589..42cc013cc14053eb394fd6b55c1d3aa7c926de7a 100644
GIT binary patch
literal 2145
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
uknYmWR)5kfAVpqQFm%A&N8^7HyM