diff --git a/code/datums/cargoprofile.dm b/code/datums/cargoprofile.dm index bf331bae619..90b7930937b 100644 --- a/code/datums/cargoprofile.dm +++ b/code/datums/cargoprofile.dm @@ -245,7 +245,7 @@ id = "trash" //Note that this filters out blueprints because they are a paper item. Do NOT throw out the station blueprints unless you be trollin'. blacklist = null - whitelist = list(/obj/item/trash,/obj/item/toy,/obj/item/weapon/ectoplasm,/obj/item/weapon/bananapeel,/obj/item/weapon/broken_bottle,/obj/item/weapon/bikehorn, + whitelist = list(/obj/item/trash,/obj/item/toy,/obj/item/weapon/reagent_containers/food/snacks/ectoplasm,/obj/item/weapon/bananapeel,/obj/item/weapon/broken_bottle,/obj/item/weapon/bikehorn, /obj/item/weapon/cigbutt,/obj/item/weapon/contraband,/obj/item/weapon/corncob,/obj/item/weapon/paper,/obj/item/weapon/shard, /obj/item/weapon/sord,/obj/item/weapon/photo,/obj/item/weapon/folder, /obj/item/areaeditor/blueprints,/obj/item/weapon/contraband,/obj/item/weapon/kitchen,/obj/item/weapon/book,/obj/item/clothing/mask/facehugger) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index eb9cca9ec93..c8e76fa8ac9 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -829,13 +829,6 @@ origin_tech = "magnets=3;materials=3;bluespace=2" m_amt = 50 -/obj/item/weapon/ectoplasm - name = "ectoplasm" - desc = "spooky" - gender = PLURAL - icon = 'icons/obj/wizard.dmi' - icon_state = "ectoplasm" - /obj/item/weapon/research//Makes testing much less of a pain -Sieve name = "research" icon = 'icons/obj/stock_parts.dmi' diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index cec48a49a99..10d74c98f0f 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -177,7 +177,7 @@ /datum/recipe/microwave/ghostburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, - /obj/item/weapon/ectoplasm //where do you even find this stuff + /obj/item/weapon/reagent_containers/food/snacks/ectoplasm //where do you even find this stuff ) result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index a5bd0ecc58b..a63f834fe7c 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -1032,7 +1032,7 @@ proc/populate_seed_list() products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans) plant_icon = "soybean" harvest_repeat = 1 - chems = list("nutriment" = list(1,20)) + chems = list("nutriment" = list(1,20), "soybeanoil" = list(1,20)) lifespan = 25 maturation = 4 diff --git a/code/modules/mining/surprises/tg.dm b/code/modules/mining/surprises/tg.dm index cadebb94841..0fc8eb9dd65 100644 --- a/code/modules/mining/surprises/tg.dm +++ b/code/modules/mining/surprises/tg.dm @@ -54,7 +54,7 @@ /obj/item/toy/crayon/red=2, /obj/effect/decal/cleanable/blood=4, /obj/structure/table/woodentable=2, - /obj/item/weapon/ectoplasm=3 + /obj/item/weapon/reagent_containers/food/snacks/ectoplasm=3 ) flags = CONTIGUOUS_WALLS | CONTIGUOUS_FLOORS diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index dfa3cb878b9..809844ea3b7 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -222,6 +222,17 @@ message = "[src] makes a strong noise." m_type = 2 + if ("burp") + if(miming) + message = "[src] opens their mouth rather obnoxiously." + m_type = 1 + else + if (!muzzled) + message = "[src] burps." + m_type = 2 + else + message = "[src] makes a peculiar noise." + m_type = 2 if ("clap") if (!src.restrained()) message = "[src] claps." diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index c54c1329707..0d637fc6c78 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -35,7 +35,7 @@ /mob/living/simple_animal/construct/Die() ..() - new /obj/item/weapon/ectoplasm (src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc) for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) M.show_message("\red [src] collapses in a shattered heap. ") diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 6abf37ba978..417e4d99f3e 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -68,7 +68,7 @@ invisibility = pick(0,60,60,invisibility) ..() /mob/living/simple_animal/hostile/retaliate/ghost/Die() - new /obj/item/weapon/ectoplasm(loc) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(loc) del src return diff --git a/code/modules/mob/living/simple_animal/pony.dm b/code/modules/mob/living/simple_animal/pony.dm index 7680e8ee42a..edd3480cc23 100644 --- a/code/modules/mob/living/simple_animal/pony.dm +++ b/code/modules/mob/living/simple_animal/pony.dm @@ -28,7 +28,7 @@ Life() ..() if(stat == 2) - new /obj/item/weapon/ectoplasm (src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc) for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 779692028ec..aa1a9509b5a 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -31,7 +31,7 @@ Life() ..() if(stat == 2) - new /obj/item/weapon/ectoplasm (src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc) for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 748282e346d..09d27ee57dc 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2094,6 +2094,12 @@ datum description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" // rgb: 223, 215, 175 + chocolate_milk + name = "Chocolate milk" + id ="chocolate_milk" + description = "Chocolate-flavored milk, tastes like being a kid again." + color = "#85432C" + hot_coco name = "Hot Chocolate" id = "hot_coco" @@ -2383,6 +2389,7 @@ datum var/confused_adj = 2 var/slur_start = 65 //amount absorbed after which mob starts slurring var/confused_start = 130 //amount absorbed after which mob starts confusing directions + var/vomit_start = 180 //amount absorbed after which mob starts vomitting var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision var/pass_out = 325 //amount absorbed after which mob starts passing out @@ -2416,6 +2423,9 @@ datum if(d >= blur_start) M.eye_blurry = max(M.eye_blurry, 10/sober_str) M:drowsyness = max(M:drowsyness, 0) + if(d >= vomit_start) + if(prob(8)) + M.fakevomit() if(d >= pass_out) M:paralysis = max(M:paralysis, 20/sober_str) M:drowsyness = max(M:drowsyness, 30/sober_str) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index a3591a943c1..b90620e69f6 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -979,6 +979,14 @@ datum required_reagents = list("water" = 5, "coco" = 1) result_amount = 5 + chocolate_milk + name = "Chocolate Milk" + id = "chocolate_milk" + result = "chocolate_milk" + required_reagents = list("chocolate" = 1, "milk" = 1) + result_amount = 2 + mix_message = "The mixture turns a nice brown color." + coffee name = "Coffee" id = "coffee" diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index 52be1d5848a..0ac2019e031 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -139,6 +139,12 @@ datum/reagent/chocolate/on_mob_life(var/mob/living/M as mob) ..() return +datum/reagent/chocolate/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/item/weapon/reagent_containers/food/snacks/reagentchocolatebar(T) + return + /datum/reagent/mugwort name = "Mugwort" id = "mugwort" @@ -220,6 +226,27 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) ..() return +/datum/reagent/cheese + name = "Cheese" + id = "cheese" + description = "Some cheese. Pour it out to make it solid." + reagent_state = SOLID + color = "#FFFF00" + +datum/reagent/cheese/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T) + return + +/datum/chemical_reaction/cheese + name = "weird_cheese" + id = "weird_cheese" + result = "weird_cheese" + required_reagents = list("vomit" = 1, "milk" = 1) + result_amount = 1 + mix_message = "The mixture curdles up." + /datum/reagent/fake_cheese name = "Cheese substitute" id = "fake_cheese" @@ -227,6 +254,27 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) reagent_state = LIQUID color = "#B2B139" +/datum/reagent/weird_cheese + name = "Weird cheese" + id = "weird_cheese" + description = "Hell, I don't even know if this IS cheese. Whatever it is, it ain't normal. If you want to, pour it out to make it solid." + reagent_state = SOLID + color = "#50FF00" + +datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T) + return + +/datum/chemical_reaction/weird_cheese + name = "Weird cheese" + id = "weird_cheese" + result = "weird_cheese" + required_reagents = list("green_vomit" = 1, "milk" = 1) + result_amount = 1 + mix_message = "The disgusting mixture sloughs together horribly, emitting a foul stench." + datum/reagent/beans name = "Refried beans" id = "beans" @@ -241,5 +289,208 @@ datum/reagent/beans/on_mob_life(var/mob/living/M as mob) ..() return +/datum/reagent/bread + name = "Bread" + id = "bread" + description = "Bread! Yep, bread." + reagent_state = SOLID + color = "#9C5013" + +datum/reagent/bread/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T) + return + +/datum/reagent/vomit + name = "Vomit" + id = "vomit" + description = "Looks like someone lost their lunch. And then collected it. Yuck." + reagent_state = LIQUID + color = "#FFFF00" + +datum/reagent/vomit/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/effect/decal/cleanable/vomit(T) + playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) + return + +/datum/reagent/greenvomit + name = "Green vomit" + id = "green_vomit" + description = "Whoa, that can't be natural. That's horrible." + reagent_state = LIQUID + color = "#78FF74" + +datum/reagent/greenvomit/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 5) + new /obj/effect/decal/cleanable/vomit/green(T) + playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) + return +/datum/reagent/ectoplasm + name = "Ectoplasm" + id = "ectoplasm" + description = "A bizarre gelatinous substance supposedly derived from ghosts." + reagent_state = LIQUID + color = "#8EAE7B" + +datum/reagent/ectoplasm/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + if(!istype(M, /mob/living)) + return + if(method == INGEST) + var/spooky_eat = pick("Ugh, why did you eat that? Your mouth feels haunted. Haunted with bad flavors.", "Ugh, why did you eat that? It has the texture of ham aspic. From the 1950s. Left out in the sun.", "Ugh, why did you eat that? It tastes like a ghost fart.", "Ugh, why did you eat that? It tastes like flavor died.") + M << "[spooky_eat]" + +/datum/reagent/ectoplasm/on_mob_life(var/mob/living/M as mob) + var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...") + if(prob(5)) + M << "[spooky_message]" + ..() + return + +datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume) + src = null + if(volume >= 10) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T) + return + +/datum/reagent/soybeanoil + name = "Space-soybean oil " + id = "soybeanoil" + description = "An oil derived from extra-terrestrial soybeans." + reagent_state = LIQUID + color = "#B1B0B0" + +/datum/reagent/soybeanoil/on_mob_life(var/mob/living/M as mob) + if(prob(5)) + M.reagents.add_reagent("porktonium",5) + ..() + return + +/datum/reagent/hydrogenated_soybeanoil + name = "Partially hydrogenated space-soybean oil" + id = "hydrogenated_soybeanoil" + description = "An oil derived from extra-terrestrial soybeans, with additional hydrogen atoms added to convert it into a saturated form." + reagent_state = LIQUID + color = "#B1B0B0" + +/datum/reagent/hydrogenated_soybeanoil/on_mob_life(var/mob/living/M as mob) + if(prob(8)) + M.reagents.add_reagent("porktonium",5) + ..() + return + +/datum/chemical_reaction/hydrogenated_soybeanoil + name = "Partially hydrogenated space-soybean oil" + id = "hydrogenated_soybeanoil" + result = "hydrogenated_soybeanoil" + required_reagents = list("soybeanoil" = 1, "hydrogen" = 1) + result_amount = 2 + required_temp = 520 + mix_message = "The mixture emits a burnt, oily smell." + +/datum/reagent/meatslurry + name = "Meat Slurry" + id = "meatslurry" + description = "A paste comprised of highly-processed organic material. Uncomfortably similar to deviled ham spread." + reagent_state = LIQUID + color = "#EBD7D7" + +/datum/chemical_reaction/meatslurry + name = "Meat Slurry" + id = "meatslurry" + result = "meatslurry" + required_reagents = list("corn_starch" = 1, "blood" = 1) + result_amount = 2 + mix_message = "The mixture congeals into a bloody mass." + +/datum/reagent/mashedpotatoes + name = "Mashed potatoes" + id = "mashedpotatoes" + description = "A starchy food paste made from boiled potatoes." + reagent_state = SOLID + color = "#D6D9C1" + +/datum/reagent/gravy + name = "Gravy" + id = "gravy" + description = "A savory sauce made from a simple meat-dripping roux and milk." + reagent_state = LIQUID + color = "#B4641B" + +/datum/chemical_reaction/gravy + name = "Gravy" + id = "gravy" + result = "gravy" + required_reagents = list("porktonium" = 1, "corn_starch" = 1, "milk" = 1) + result_amount = 3 + required_temp = 374 + mix_message = "The substance thickens and takes on a meaty odor." + +/datum/reagent/beff + name = "Beff" + id = "beff" + description = "An advanced blend of mechanically-recovered meat and textured synthesized protein product notable for its unusual crystalline grain when sliced." + reagent_state = SOLID + color = "#AC7E67" + +/datum/reagent/beff/on_mob_life(var/mob/living/M as mob) + if(prob(5)) + M.reagents.add_reagent("porktonium",5) + if(prob(5)) + M.reagents.add_reagent(pick("blood", "corn_syrup", "synthflesh", "hydrogenated_soybeanoil"), 0.8) + if(prob(5)) + M.emote("groan") + if(prob(2)) + M << "You feel sick." + ..() + return + +/datum/chemical_reaction/beff + name = "Beff" + id = "beff" + result = "beff" + required_reagents = list("hydrogenated_soybeanoil" = 2, "meatslurry" = 1, "plasma" = 1) + result_amount = 4 + mix_message = "The mixture solidifies, taking a crystalline appearance." + +/datum/reagent/pepperoni + name = "Pepperoni" + id = "pepperoni" + description = "An Italian-American variety of salami usually made from beef and pork" + reagent_state = SOLID + color = "#AC7E67" + +datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + if(method == TOUCH) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + if(H.wear_mask) + H << "The pepperoni bounces off your mask!" + return + + if(H.head) + H << "Your mask protects you from the errant pepperoni!" + return + + if(prob(50)) + M.adjustBruteLoss(1) + playsound(M, 'sound/effects/woodhit.ogg', 50, 1, -1) + M << "A slice of pepperoni slaps you!" + else + M.emote("burp") + M << "My goodness, that was tasty!" + + +/datum/chemical_reaction/pepperoni + name = "Pepperoni" + id = "pepperoni" + result = "pepperoni" + required_reagents = list("beff" = 1, "saltpetre" = 1, "synthflesh" = 1) + result_amount = 2 + mix_message = "The beff and the synthflesh combine to form a smoky red log." \ No newline at end of file diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index f437c3c37ce..77e21383cec 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -262,6 +262,7 @@ result = "smoke_powder" required_reagents = list("stabilizing_agent" = 1, "potassium" = 1, "sugar" = 1, "phosphorus" = 1) result_amount = 1 + mix_message = "The mixture sets into a greyish powder!" /datum/chemical_reaction/smoke name = "smoke" @@ -269,6 +270,7 @@ result = null required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) result_amount = 1 + mix_message = "The mixture quickly turns into a pall of smoke!" /datum/chemical_reaction/smoke/on_reaction(var/datum/reagents/holder, var/created_volume) var/forbidden_reagents = list(id, "sugar", "phosphorus", "potassium") //Do not transfer this stuff through smoke. diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 4b2c250b4ee..c4a75cbe7d2 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -392,6 +392,18 @@ reagents.add_reagent("coco", 2) bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/reagentchocolatebar //for reagent chocolate + name = "Chocolate Bar" + desc = "A plain chocolate bar. Is it dark chocolate, milk chocolate? Who knows!" + icon_state = "chocolatebar" + filling_color = "#7D5F46" + + New() + ..() + reagents.add_reagent("sugar", 10) + reagents.add_reagent("chocolate",10) + bitesize = 2 + /obj/item/weapon/reagent_containers/food/snacks/chocolateegg name = "Chocolate Egg" desc = "Such sweet, fattening food." @@ -2576,7 +2588,18 @@ filling_color = "#FFF700" bitesize = 2 - +/obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge + name = "Weird Cheese" + desc = "Some kind of... gooey, messy, gloopy thing. Similar to cheese, but only in the looser sense of the word." + icon_state = "weirdcheesewedge" + filling_color = "#00FF33" + bitesize = 2 + New() + ..() + reagents.add_reagent("mercury", 5) + reagents.add_reagent("mindbreaker", 5) + reagents.add_reagent("ethanol", 5) + reagents.add_reagent("weird_cheese", 5) /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake name = "Birthday Cake" @@ -2604,7 +2627,7 @@ icon_state = "Some plain old Earthen bread." icon_state = "bread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice - slices_num = 5 + slices_num = 6 filling_color = "#FFE396" New() @@ -2620,6 +2643,9 @@ filling_color = "#D27332" bitesize = 2 + New() + ..() + reagents.add_reagent("bread", 5) /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread name = "Cream Cheese Bread" @@ -3334,3 +3360,11 @@ ..() reagents.add_reagent("nutriment", 3) +/obj/item/weapon/reagent_containers/food/snacks/ectoplasm + name = "ectoplasm" + desc = "A luminescent blob of what scientists refer to as 'ghost goo'." + icon = 'icons/obj/wizard.dmi' + icon_state = "ectoplasm" + New() + ..() + reagents.add_reagent("ectoplasm", 10) \ No newline at end of file diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index d7cae5cecd6..abdfc3456b4 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ