diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 83ff6503df4..4ab5a5b6c0e 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -208,6 +208,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/stock_parts/cell/high = 1, /obj/item/storage/box/clown = 1, /obj/item/weaponcrafting/receiver = 1, + /obj/item/book/granter/crafting_recipe/death_sandwich = 1, ) = 8, list(//medical and chemicals diff --git a/code/datums/diseases/death_sandwich_poisoning.dm b/code/datums/diseases/death_sandwich_poisoning.dm new file mode 100644 index 00000000000..66930cb776f --- /dev/null +++ b/code/datums/diseases/death_sandwich_poisoning.dm @@ -0,0 +1,60 @@ +/datum/disease/death_sandwich_poisoning + name = "Death Sandwich Poisoning" + desc = "If left untreated the subject will ultimately perish." + form = "Condition" + spread_text = "Unknown" + max_stages = 3 + cure_text = "Anacea" // I ain't about to make a second sandwich to counteract the first one, so closest thing I'm going for is this. + cures = list(/datum/reagent/toxin/anacea) + cure_chance = 4 + agent = "eating the Death Sandwich wrong" + viable_mobtypes = list(/mob/living/carbon/human) + severity = DISEASE_SEVERITY_DANGEROUS + disease_flags = CURABLE + spread_flags = DISEASE_SPREAD_SPECIAL + visibility_flags = HIDDEN_SCANNER + bypasses_immunity = TRUE + + +/datum/disease/death_sandwich_poisoning/stage_act(seconds_per_tick, times_fired) + . = ..() + if(!.) + return + + switch(stage) + if(1) + if(SPT_PROB(1.5, seconds_per_tick)) + affected_mob.emote("cough") + if(SPT_PROB(0.5, seconds_per_tick)) + affected_mob.emote("gag") + if(SPT_PROB(0.5, seconds_per_tick)) + affected_mob.adjustToxLoss(5) + if(2) + if(SPT_PROB(5, seconds_per_tick)) + affected_mob.emote("cough") + if(SPT_PROB(2.5, seconds_per_tick)) + affected_mob.emote("gag") + if(SPT_PROB(1, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your body feels hot!")) + if(prob(20)) + affected_mob.take_bodypart_damage(burn = 1) + if(SPT_PROB(3, seconds_per_tick)) + affected_mob.adjustToxLoss(10) + + if(3) + if(SPT_PROB(5, seconds_per_tick)) + affected_mob.emote("gag") + if(SPT_PROB(10, seconds_per_tick)) + affected_mob.emote("gasp") + if(SPT_PROB(2.5, seconds_per_tick)) + affected_mob.vomit(20, TRUE) + if(SPT_PROB(2.5, seconds_per_tick)) + to_chat(affected_mob, span_danger("Your body feels hot!")) + if(prob(60)) + affected_mob.take_bodypart_damage(burn = 2) + if(SPT_PROB(6, seconds_per_tick)) + affected_mob.adjustToxLoss(15) + if(SPT_PROB(1.5, seconds_per_tick)) + to_chat(affected_mob, span_danger("You try to scream, but nothing comes out!")) + affected_mob.set_silence_if_lower(5 SECONDS) + diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm index adbcc98388d..23a223a37fa 100644 --- a/code/game/objects/items/food/sandwichtoast.dm +++ b/code/game/objects/items/food/sandwichtoast.dm @@ -241,3 +241,39 @@ foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES food_flags = FOOD_FINGER_FOOD w_class = WEIGHT_CLASS_SMALL + +/obj/item/food/death_sandwich + name = "death sandwich" + desc = "Eat it right, or you die!" + icon = 'icons/obj/food/burgerbread.dmi' + icon_state = "death_sandwich" + food_reagents = list( + /datum/reagent/consumable/nutriment = 8, + /datum/reagent/consumable/nutriment/protein = 14, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + tastes = list("bread" = 1, "meat" = 1, "tomato sauce" = 1, "death" = 1) + foodtypes = GRAIN | MEAT + food_flags = FOOD_FINGER_FOOD + w_class = WEIGHT_CLASS_SMALL + eat_time = 4 SECONDS // Makes it harder to force-feed this to people as a weapon, as funny as that is. + +///Override for checkliked callback +/obj/item/food/death_sandwich/make_edible() + . = ..() + AddComponent(/datum/component/edible, check_liked = CALLBACK(src, PROC_REF(check_liked))) + +///Eat it right, or you die. +/obj/item/food/death_sandwich/proc/check_liked(fraction, mob/living/carbon/human/consumer) + /// Closest thing to a mullet we have + if(consumer.hairstyle == "Gelled Back" && istype(consumer.get_item_by_slot(ITEM_SLOT_ICLOTHING), /obj/item/clothing/under/rank/civilian/cookjorts)) + return FOOD_LIKED + // I thought it didn't make sense for it to instantly kill you, so instead enjoy shitloads of toxin damage per bite. + balloon_alert(consumer, "ate it wrong!") + consumer.ForceContractDisease(new/datum/disease/death_sandwich_poisoning()) + +/obj/item/food/death_sandwich/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] starts to shove [src] down [user.p_their()] throat the wrong way. It looks like [user.p_theyre()] trying to commit suicide!")) + qdel(src) + user.gib(TRUE, TRUE, TRUE) + return MANUAL_SUICIDE diff --git a/code/game/objects/items/granters/crafting/death_sandwich.dm b/code/game/objects/items/granters/crafting/death_sandwich.dm new file mode 100644 index 00000000000..045b869a38f --- /dev/null +++ b/code/game/objects/items/granters/crafting/death_sandwich.dm @@ -0,0 +1,17 @@ +/obj/item/book/granter/crafting_recipe/death_sandwich + name = "\improper SANDWICH OF DEATH SECRET RECIPE" + desc = "An ancient composition notebook with the instructions for an ancient and ultimate sandwich scrawled upon its looseleaf pages. The title has been scrawled onto it with permanent marker." + crafting_recipe_types = list( + /datum/crafting_recipe/food/death_sandwich + ) + icon_state = "cooking_learning_sandwich" + remarks = list( + "A meatball sub, but what makes it so special?", + "I just need to grease back my hair...?", + "What kind of ancient civilization wore jorts?", + "So it DOES matter what angle you fold the salami in...", + ) + +/obj/item/book/granter/crafting_recipe/death_sandwich/recoil(mob/living/user) + to_chat(user, span_warning("The book comically explodes in your hands, leaving no trace.")) + qdel(src) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm index bcb4cbb7e97..206354d53f7 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm @@ -115,3 +115,15 @@ ) result = /obj/item/food/philly_cheesesteak category = CAT_SANDWICH + +/datum/crafting_recipe/food/death_sandwich + name = "Death Sandwich" + always_available = FALSE + reqs = list( + /obj/item/food/breadslice/plain = 2, + /obj/item/food/salami = 4, + /obj/item/food/meatball = 4, + /obj/item/food/grown/tomato = 1, + ) + result = /obj/item/food/death_sandwich + category = CAT_SANDWICH diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index 8d780fe378b..0fd91f90fd9 100644 Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index b079fd32949..31c97cfaf9a 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 64c14f41c5e..feaa4a0d694 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1086,6 +1086,7 @@ #include "code\datums\diseases\brainrot.dm" #include "code\datums\diseases\cold.dm" #include "code\datums\diseases\cold9.dm" +#include "code\datums\diseases\death_sandwich_poisoning.dm" #include "code\datums\diseases\decloning.dm" #include "code\datums\diseases\dna_spread.dm" #include "code\datums\diseases\fake_gbs.dm" @@ -1973,6 +1974,7 @@ #include "code\game\objects\items\granters\crafting\bone_notes.dm" #include "code\game\objects\items\granters\crafting\cannon.dm" #include "code\game\objects\items\granters\crafting\combat_baking.dm" +#include "code\game\objects\items\granters\crafting\death_sandwich.dm" #include "code\game\objects\items\granters\crafting\desserts.dm" #include "code\game\objects\items\granters\crafting\pipegun.dm" #include "code\game\objects\items\granters\crafting\regal_condor.dm"