Adds Glass Sandwiches and Supermatter Sandwiches (#30435)

* glass sammich

* Update cutting_board_recipes.dm

* yummy

* Update test_tiny.dmm

* Update test_tiny.dmm

* Update toxins.dm

* Update test_tiny.dmm

* Update test_tiny.dmm

* Update test_tiny.dmm

* Update test_tiny.dmm

* Revert "yummy"

This reverts commit b2a5736618.

* yummy but without test tiny shit

* Update cooking_container.dm

* isolate sliver handling to a recipe step

* fix

---------

Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
This commit is contained in:
CRUNCH
2025-10-04 18:20:21 +01:00
committed by GitHub
parent 99ff0ad3de
commit d1d1393ee2
4 changed files with 146 additions and 0 deletions
@@ -414,6 +414,72 @@
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/datum/cooking/recipe/glass_sandwich
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/glass_sandwich
catalog_category = COOKBOOK_CATEGORY_BURGS
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
PCWJ_ADD_ITEM(/obj/item/shard, exact = TRUE),
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/datum/cooking/recipe/plasma_glass_sandwich
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/glass_sandwich/plasma
catalog_category = COOKBOOK_CATEGORY_BURGS
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
PCWJ_ADD_ITEM(/obj/item/shard/plasma),
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/datum/cooking/recipe/plastitanium_glass_sandwich
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/glass_sandwich/plasma/plastitanium
catalog_category = COOKBOOK_CATEGORY_BURGS
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
PCWJ_ADD_ITEM(/obj/item/shard/plastitanium),
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/// A step that allows either direct adding of a supermatter sliver
/// (if you have somehow manage to hold one), or
/// from tongs if those are used and contain a sliver in them.
/datum/cooking/recipe_step/add_item/supermatter_sliver
/datum/cooking/recipe_step/add_item/supermatter_sliver/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/retractor/supermatter/tongs = added_item
if(istype(tongs) && tongs.sliver)
return PCWJ_CHECK_VALID
var/obj/item/nuke_core/supermatter_sliver/sliver = added_item
if(istype(sliver))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe_step/add_item/supermatter_sliver/follow_step(obj/used_item, datum/cooking/recipe_tracker/tracker, mob/user)
var/obj/item/retractor/supermatter/tongs = used_item
if(istype(tongs) && tongs.sliver)
. = ..(tongs.sliver, tracker, user)
// TODO: refactor the tongs so they actually check if(sliver) in `update_icon()` instead of manually setting the icons everywhere.
tongs.sliver = null
tongs.update_appearance(UPDATE_ICON_STATE)
else
. = ..()
/datum/cooking/recipe/supermatter_sandwich
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/supermatter_sandwich
catalog_category = COOKBOOK_CATEGORY_BURGS
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
new /datum/cooking/recipe_step/add_item/supermatter_sliver(),
PCWJ_ADD_ITEM(/obj/item/food/sliced/bread),
)
/datum/cooking/recipe/philly_cheesesteak
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/philly_cheesesteak
@@ -457,3 +457,59 @@
list_reagents = list("nutriment" = 5, "protein" = 2)
tastes = list("peanutbutter" = 3, "banana" = 3, "bread" = 2)
goal_difficulty = FOOD_GOAL_NORMAL
/obj/item/food/glass_sandwich
name = "glass sandwich"
desc = "Crushed glass shards sandwiched between two slices of plain bread. Crunchy!"
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "glass_sandwich"
tastes = list("dozens of glass shards skewering your mouth" = 3, "pain" = 3, "bread" = 2)
list_reagents = list("nutriment" = 2, "glass_shards" = 5)
var/bite_damage = 2
/obj/item/food/glass_sandwich/On_Consume(mob/living/M)
..()
M.adjustBruteLoss(bite_damage)
/obj/item/food/glass_sandwich/plasma
name = "plasma glass sandwich"
desc = "Razor-sharp plasma glass shards, crushed up and sandwiched between two slices of plain bread. Extra crunchy!"
icon_state = "plasma_glass_sandwich"
list_reagents = list("nutriment" = 2, "glass_shards" = 5, "plasma" = 5)
bite_damage = 4
/obj/item/food/glass_sandwich/plasma/plastitanium
name = "plastitanium glass sandwich"
desc = "Evil-looking plastitanium glass shards, crushed up and sandwiched between two slices of plain bread. Evilly crunchy!"
icon_state = "plastitanium_glass_sandwich"
/obj/item/food/supermatter_sandwich
name = "supermatter sandwich"
desc = "A supermatter sliver, somehow safely contained between two slices of bread. You have been told many times to not lick the forbidden nacho... But surely one taste can't be that bad?"
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "supermatter_sandwich"
tastes = list("indescribable power" = 3, "bread" = 2)
list_reagents = list("vitamin" = 50) // Supermatter is full of energy!
/obj/item/food/supermatter_sandwich/On_Consume(mob/living/M)
..()
if(!HAS_TRAIT(M, TRAIT_SUPERMATTER_IMMUNE))
M.visible_message(
"<span class='danger'>[M] lifts [src] up to [M.p_their()] mouth and bites down, inducing a resonance... [M.p_their(TRUE)] body starts to glow and burst into flames before flashing into dust!</span>",
"<span class='userdanger'>You bite down on [src].<br><br> Everything starts burning and all you can hear is ringing. Your final thought is: \"OH FU-\"</span>",
"<span class='danger'>A deafening resonance fills the air, followed by silence...</span>"
)
radiation_pulse(src, 2000, GAMMA_RAD)
playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE)
M.drop_item() // How many bridge hobos will take a bite, I wonder?
M.dust()
message_admins("[src] has consumed [key_name_admin(M)] [ADMIN_JMP(src)].")
investigate_log("has consumed [key_name(M)].", INVESTIGATE_SUPERMATTER)
/obj/item/food/supermatter_sandwich/process()
. = ..()
var/new_filter = isnull(get_filter("ray"))
ray_filter_helper(1, 40,"#ffd04f", 6, 20)
if(new_filter)
animate(get_filter("ray"), offset = 10, time = 10 SECONDS, loop = -1)
animate(offset = 0, time = 10 SECONDS)
@@ -1329,3 +1329,27 @@
/datum/reagent/gluttonytoxin/reaction_mob(mob/living/L, method=REAGENT_TOUCH, reac_volume)
L.ForceContractDisease(new /datum/disease/transformation/morph())
/datum/reagent/glass_shards
name = "Glass shards"
id = "glass_shards"
description = "Glass, crushed into a coarse powder made up of razor-sharp shards."
color = "#87c6dac8"
taste_description = "<span class='userdanger'>Broken glass!</span>"
/datum/reagent/glass_shards/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustBruteLoss(2, FALSE)
if(iscarbon(M) && prob(5)) // OH GOD IT'S CUTTING UP INSIDE ME AAAAAAAGHHHH!
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affected = H.get_organ(BODY_ZONE_CHEST)
if(affected.status & !ORGAN_INT_BLEEDING)
affected.cause_internal_bleeding()
return ..() | update_flags
/datum/reagent/glass_shards/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume)
if(iscarbon(M))
to_chat(M, "<span class='userdanger'>OH GOD IT HURTS!</span>")
M.emote("scream")
M.adjustBruteLoss(4)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 47 KiB