Files
Bubberstation/code/game/objects/items/food/frozen.dm
Ghom ca537ce829 Ice cream now gives a chilling food effect (plus small food haste buff) (#81719)
## About The Pull Request
We have a `crafted_food_buff` in the code meant for specific food buffs
(and perhaps one day, debuffs) that has gone unused ever since it was
created during the 'Foodening' PR.

Anyway, yeah, this PR takes the fire step to implement it with ice cream
and other frozen treats.

Frozen treats (all food found in the `food/frozen.dm` file) have it by
default. Other ice cream holders such as waffles cones (and now regular
waffles too!) can aquire it when filled with ice cream. Using the ice
cream vat also adds the 'Chef Made' trait now, which is required for
food effects to happen.

Also very slight food effect refactor. There's no need to have five
different alert screen objects when only have to switch icon states.

This PR also adds an action speed modifier to the generic 'haste' food
effect. I'm confident the original creator would have done that too, but
action speed modifiers aren't as well-known.

## Why It's Good For The Game
People tend to make one feature, call it a day and then move on to the
next. Food effects are nice, however they're barely implemented, and I
don't like food being all the same-ish in the end.

## Changelog

🆑
add: Ice cream and frozen treats now have a chilling effect.
add: You can add a scoop of ice cream on waffles.
balance: added an action speed modifier to the generic food haste effect
(you do things, and not just run, an itsy bitsy faster)
/🆑
2024-03-16 12:02:06 +00:00

457 lines
15 KiB
Plaintext

/obj/item/food/icecreamsandwich
name = "ice cream sandwich"
desc = "Portable ice cream in its own packaging."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "icecreamsandwich"
w_class = WEIGHT_CLASS_TINY
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
/datum/reagent/consumable/ice = 4,
)
tastes = list("ice cream" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
crafting_complexity = FOOD_COMPLEXITY_2
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/strawberryicecreamsandwich
name = "strawberry ice cream sandwich"
desc = "Portable ice cream in its own packaging of the strawberry variety."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "strawberryicecreamsandwich"
w_class = WEIGHT_CLASS_TINY
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/ice = 4,
)
tastes = list("ice cream" = 2, "berry" = 2)
foodtypes = FRUIT | DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
crafting_complexity = FOOD_COMPLEXITY_3
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/spacefreezy
name = "space freezy"
desc = "The best ice cream in space."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "spacefreezy"
w_class = WEIGHT_CLASS_TINY
food_reagents = list(
/datum/reagent/consumable/nutriment = 8,
/datum/reagent/consumable/bluecherryjelly = 5,
/datum/reagent/consumable/nutriment/vitamin = 5,
)
tastes = list("blue cherries" = 2, "ice cream" = 2)
foodtypes = FRUIT | DAIRY | SUGAR
crafting_complexity = FOOD_COMPLEXITY_3
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/spacefreezy/make_edible()
. = ..()
AddComponent(/datum/component/ice_cream_holder)
/obj/item/food/sundae
name = "sundae"
desc = "A classic dessert."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "sundae"
w_class = WEIGHT_CLASS_SMALL
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/banana = 5,
/datum/reagent/consumable/nutriment/vitamin = 2,
)
tastes = list("ice cream" = 1, "banana" = 1)
foodtypes = FRUIT | DAIRY | SUGAR
crafting_complexity = FOOD_COMPLEXITY_3
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/sundae/make_edible()
. = ..()
AddComponent(/datum/component/ice_cream_holder, y_offset = -2, sweetener = /datum/reagent/consumable/caramel)
/obj/item/food/honkdae
name = "honkdae"
desc = "The clown's favorite dessert."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "honkdae"
w_class = WEIGHT_CLASS_SMALL
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/banana = 10,
/datum/reagent/consumable/nutriment/vitamin = 4,
)
tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1)
foodtypes = FRUIT | DAIRY | SUGAR
crafting_complexity = FOOD_COMPLEXITY_4
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/honkdae/make_edible()
. = ..()
AddComponent(/datum/component/ice_cream_holder, y_offset = -2) //The sugar will react with the banana forming laughter. Honk!
/////////////
//SNOWCONES//
/////////////
/obj/item/food/snowcones //We use this as a base for all other snowcones
name = "flavorless snowcone"
desc = "It's just shaved ice. Still fun to chew on."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "flavorless_sc"
w_class = WEIGHT_CLASS_SMALL
trash_type = /obj/item/reagent_containers/cup/glass/sillycup //We dont eat paper cups
food_reagents = list(
/datum/reagent/water = 11,
) // We dont get food for water/juices
tastes = list("ice" = 1, "water" = 1)
foodtypes = SUGAR //We use SUGAR as a base line to act in as junkfood, other wise we use fruit
food_flags = FOOD_FINGER_FOOD
crafting_complexity = FOOD_COMPLEXITY_2
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/snowcones/lime
name = "lime snowcone"
desc = "Lime syrup drizzled over a snowball in a paper cup."
icon_state = "lime_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/limejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "limes" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/lemon
name = "lemon snowcone"
desc = "Lemon syrup drizzled over a snowball in a paper cup."
icon_state = "lemon_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/lemonjuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "lemons" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/apple
name = "apple snowcone"
desc = "Apple syrup drizzled over a snowball in a paper cup."
icon_state = "amber_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/applejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "apples" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/grape
name = "grape snowcone"
desc = "Grape syrup drizzled over a snowball in a paper cup."
icon_state = "grape_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/grapejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "grape" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/orange
name = "orange snowcone"
desc = "Orange syrup drizzled over a snowball in a paper cup."
icon_state = "orange_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/orangejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "orange" = 5)
foodtypes = FRUIT | ORANGES
/obj/item/food/snowcones/blue
name = "bluecherry snowcone"
desc = "Bluecherry syrup drizzled over a snowball in a paper cup, how rare!"
icon_state = "blue_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/bluecherryjelly = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "blue" = 5, "cherries" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/red
name = "cherry snowcone"
desc = "Cherry syrup drizzled over a snowball in a paper cup."
icon_state = "red_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/cherryjelly = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "red" = 5, "cherries" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/berry
name = "berry snowcone"
desc = "Berry syrup drizzled over a snowball in a paper cup."
icon_state = "berry_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/berryjuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "berries" = 5)
foodtypes = FRUIT
/obj/item/food/snowcones/fruitsalad
name = "fruit salad snowcone"
desc = "A delightful mix of citrus syrups drizzled over a snowball in a paper cup."
icon_state = "fruitsalad_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/lemonjuice = 5,
/datum/reagent/consumable/limejuice = 5,
/datum/reagent/consumable/orangejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5)
foodtypes = FRUIT | ORANGES
/obj/item/food/snowcones/pineapple
name = "pineapple snowcone"
desc = "Pineapple syrup drizzled over a snowball in a paper cup."
icon_state = "pineapple_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/pineapplejuice = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "pineapples" = 5)
foodtypes = PINEAPPLE //Pineapple to allow all that like pineapple to enjoy
/obj/item/food/snowcones/mime
name = "mime snowcone"
desc = "..."
icon_state = "mime_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/nothing = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "nothing" = 5)
foodtypes = SUGAR
/obj/item/food/snowcones/clown
name = "clown snowcone"
desc = "Laughter drizzled over a snowball in a paper cup."
icon_state = "clown_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/laughter = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "jokes" = 5, "brainfreeze" = 5, "joy" = 5)
foodtypes = SUGAR | FRUIT
/obj/item/food/snowcones/soda
name = "space cola snowcone"
desc = "Space Cola drizzled over a snowball in a paper cup."
icon_state = "soda_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/space_cola = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "cola" = 5)
foodtypes = SUGAR
/obj/item/food/snowcones/spacemountainwind
name = "Space Mountain Wind snowcone"
desc = "Space Mountain Wind drizzled over a snowball in a paper cup."
icon_state = "mountainwind_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/spacemountainwind = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5)
foodtypes = SUGAR
/obj/item/food/snowcones/pwrgame
name = "pwrgame snowcone"
desc = "Pwrgame soda drizzled over a snowball in a paper cup."
icon_state = "pwrgame_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/pwr_game = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "valid" = 5, "salt" = 5, "wats" = 5)
foodtypes = SUGAR
/obj/item/food/snowcones/honey
name = "honey snowcone"
desc = "Honey drizzled over a snowball in a paper cup."
icon_state = "amber_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/honey = 5,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1)
foodtypes = SUGAR
crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/snowcones/rainbow
name = "rainbow snowcone"
desc = "A very colorful snowball in a paper cup."
icon_state = "rainbow_sc"
food_reagents = list(
/datum/reagent/consumable/nutriment = 5,
/datum/reagent/consumable/laughter = 25,
/datum/reagent/water = 11,
)
tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3)
foodtypes = SUGAR
/obj/item/food/popsicle
name = "bug popsicle"
desc = "Mmmm, this should not exist."
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "popsicle_stick_s"
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 2,
/datum/reagent/consumable/sugar = 4,
)
tastes = list("beetle juice")
trash_type = /obj/item/popsicle_stick
w_class = WEIGHT_CLASS_SMALL
foodtypes = DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
crafting_complexity = FOOD_COMPLEXITY_3
crafted_food_buff = /datum/status_effect/food/chilling
var/overlay_state = "creamsicle_o" //This is the edible part of the popsicle.
var/bite_states = 4 //This value value is used for correctly setting the bite_consumption to ensure every bite changes the sprite. Do not set to zero.
var/bitecount = 0
/obj/item/food/popsicle/Initialize(mapload)
. = ..()
bite_consumption = reagents.total_volume / bite_states
update_icon() // make sure the popsicle overlay is primed so it's not just a stick until you start eating it
/obj/item/food/popsicle/make_edible()
. = ..()
AddComponent(/datum/component/edible, after_eat = CALLBACK(src, PROC_REF(after_bite)))
/obj/item/food/popsicle/update_overlays()
. = ..()
if(!bitecount)
. += initial(overlay_state)
return
. += "[initial(overlay_state)]_[min(bitecount, 3)]"
/obj/item/food/popsicle/proc/after_bite(mob/living/eater, mob/living/feeder, bitecount)
src.bitecount = bitecount
update_appearance()
/obj/item/popsicle_stick
name = "popsicle stick"
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "popsicle_stick"
desc = "This humble little stick usually carries a frozen treat, at the moment it seems freed from this Atlassian burden."
custom_materials = list(/datum/material/wood = SMALL_MATERIAL_AMOUNT * 0.20)
resistance_flags = FLAMMABLE
w_class = WEIGHT_CLASS_TINY
force = 0
/obj/item/food/popsicle/creamsicle_orange
name = "orange creamsicle"
desc = "A classic orange creamsicle. A sunny frozen treat."
food_reagents = list(
/datum/reagent/consumable/orangejuice = 4,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 2,
/datum/reagent/consumable/sugar = 4,
)
foodtypes = FRUIT | DAIRY | SUGAR | ORANGES
crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/creamsicle_berry
name = "berry creamsicle"
desc = "A vibrant berry creamsicle. A berry good frozen treat."
food_reagents = list(
/datum/reagent/consumable/berryjuice = 4,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 2,
/datum/reagent/consumable/sugar = 4,
)
overlay_state = "creamsicle_m"
foodtypes = FRUIT | DAIRY | SUGAR
crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/jumbo
name = "jumbo ice cream"
desc = "A luxurious ice cream covered in rich chocolate. It seems smaller than you remember it being."
food_reagents = list(
/datum/reagent/consumable/hot_coco = 4,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 3,
/datum/reagent/consumable/sugar = 2,
)
overlay_state = "jumbo"
crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/licorice_creamsicle
name = "Void Bar™"
desc = "A salty licorice ice cream. A salty frozen treat."
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/salt = 1,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 1,
/datum/reagent/consumable/sugar = 4,
)
tastes = list("salty liquorice")
overlay_state = "licorice_creamsicle"
crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cornuto
name = "cornuto"
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/food/frozen_treats.dmi'
icon_state = "cornuto"
desc = "A neapolitan vanilla and chocolate ice cream cone. It menaces with a sprinkling of caramelized nuts."
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/hot_coco = 4,
/datum/reagent/consumable/cream = 2,
/datum/reagent/consumable/vanilla = 4,
/datum/reagent/consumable/sugar = 2,
)
tastes = list("chopped hazelnuts", "waffle")
foodtypes = DAIRY | SUGAR
venue_value = FOOD_PRICE_NORMAL
crafting_complexity = FOOD_COMPLEXITY_3
crafted_food_buff = /datum/status_effect/food/chilling
/obj/item/food/popsicle/meatsicle
name = "Meatsicle"
desc = "A horrific abomination of raw meat, glazed with sugar on a stick, then frozen."
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/nutriment/fat = 2,
/datum/reagent/consumable/nutriment/protein = 2,
/datum/reagent/consumable/sugar = 4,
)
overlay_state = "meatsicle"
foodtypes = RAW | MEAT | SUGAR
crafting_complexity = FOOD_COMPLEXITY_4