diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 60f99c4c7..c04e9406e 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -13,6 +13,7 @@ #define PINEAPPLE (1<<12) #define BREAKFAST (1<<13) #define CLOTH (1<<14) +#define ANTITOXIC (1<<15) #define DRINK_NICE 1 #define DRINK_GOOD 2 diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index df03918c5..e91332448 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -1,26 +1,42 @@ /datum/component/anti_magic var/magic = FALSE var/holy = FALSE + var/psychic = FALSE + var/charges = INFINITY + var/blocks_self = TRUE + var/datum/callback/reaction + var/datum/callback/expire -/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE) +/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire) if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) else if(ismob(parent)) - RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect) + RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect) else return COMPONENT_INCOMPATIBLE magic = _magic holy = _holy + psychic = _psychic + if(!isnull(_charges)) + charges = _charges + blocks_self = _blocks_self + reaction = _reaction + expire = _expire /datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot) - RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect, TRUE) + RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE) /datum/component/anti_magic/proc/on_drop(datum/source, mob/user) UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC) -/datum/component/anti_magic/proc/can_protect(datum/source, _magic, _holy, list/protection_sources) - if((_magic && magic) || (_holy && holy)) +/datum/component/anti_magic/proc/protect(datum/source, mob/user, _magic, _holy, _psychic, chargecost = 1, self, list/protection_sources) + if(((_magic && magic) || (_holy && holy) || (_psychic && psychic)) && (!self || blocks_self)) protection_sources += parent + reaction?.Invoke(user, chargecost) + charges -= chargecost + if(charges <= 0) + expire?.Invoke(user) + qdel(src) return COMPONENT_BLOCK_MAGIC diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index cc044c18f..4ba3f2871 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -190,3 +190,16 @@ /obj/item/stack/medical/get_belt_overlay() return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch") + +/obj/item/stack/medical/aloe + name = "aloe cream" + desc = "A healing paste you can apply on wounds." + + icon_state = "aloe_paste" + self_delay = 20 + novariants = TRUE + amount = 20 + max_amount = 20 + heal_brute = 3 + heal_burn = 3 + grind_results = list(/datum/reagent/consumable/aloejuice = 1) \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index f035bff07..d371db965 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -82,6 +82,55 @@ item_state = "tile-fairygrass" turf_type = /turf/open/floor/grass/fairy resistance_flags = FLAMMABLE + color = "#33CCFF" + +/obj/item/stack/tile/fairygrass/white + name = "white fairygrass tile" + singular_name = "white fairygrass floor tile" + desc = "A patch of odd, glowing white grass." + turf_type = /turf/open/floor/grass/fairy/white + color = "#FFFFFF" + +/obj/item/stack/tile/fairygrass/red + name = "red fairygrass tile" + singular_name = "red fairygrass floor tile" + desc = "A patch of odd, glowing red grass." + turf_type = /turf/open/floor/grass/fairy/red + color = "#FF3333" + +/obj/item/stack/tile/fairygrass/yellow + name = "yellow fairygrass tile" + singular_name = "yellow fairygrass floor tile" + desc = "A patch of odd, glowing yellow grass." + turf_type = /turf/open/floor/grass/fairy/yellow + color = "#FFFF66" + +/obj/item/stack/tile/fairygrass/green + name = "green fairygrass tile" + singular_name = "green fairygrass floor tile" + desc = "A patch of odd, glowing green grass." + turf_type = /turf/open/floor/grass/fairy/green + color = "#99FF99" + +/obj/item/stack/tile/fairygrass/blue + name = "blue fairygrass tile" + singular_name = "blue fairygrass floor tile" + desc = "A patch of odd, glowing blue grass." + turf_type = /turf/open/floor/grass/fairy/blue + +/obj/item/stack/tile/fairygrass/purple + name = "purple fairygrass tile" + singular_name = "purple fairygrass floor tile" + desc = "A patch of odd, glowing purple grass." + turf_type = /turf/open/floor/grass/fairy/purple + color = "#D966FF" + +/obj/item/stack/tile/fairygrass/pink + name = "pink fairygrass tile" + singular_name = "pink fairygrass floor tile" + desc = "A patch of odd, glowing pink grass." + turf_type = /turf/open/floor/grass/fairy/pink + color = "#FFB3DA" //Wood /obj/item/stack/tile/wood diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index c734b89e2..2c7c6a3f0 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -105,8 +105,49 @@ icon_state = "fairygrass" floor_tile = /obj/item/stack/tile/fairygrass light_range = 2 - light_power = 0.50 + light_power = 0.80 light_color = "#33CCFF" + color = "#33CCFF" + +/turf/open/floor/grass/fairy/white + name = "white fairygrass patch" + light_color = "#FFFFFF" + color = "#FFFFFF" + floor_tile = /obj/item/stack/tile/fairygrass/white + +/turf/open/floor/grass/fairy/red + name = "red fairygrass patch" + light_color = "#FF3333" + color = "#FF3333" + floor_tile = /obj/item/stack/tile/fairygrass/red + +/turf/open/floor/grass/fairy/yellow + name = "yellow fairygrass patch" + light_color = "#FFFF66" + color = "#FFFF66" + floor_tile = /obj/item/stack/tile/fairygrass/yellow + +/turf/open/floor/grass/fairy/green + name = "green fairygrass patch" + light_color = "#99FF99" + color = "#99FF99" + floor_tile = /obj/item/stack/tile/fairygrass/green + +/turf/open/floor/grass/fairy/blue + name = "blue fairygrass patch" + floor_tile = /obj/item/stack/tile/fairygrass/blue + +/turf/open/floor/grass/fairy/purple + name = "purple fairygrass patch" + light_color = "#D966FF" + color = "#D966FF" + floor_tile = /obj/item/stack/tile/fairygrass/purple + +/turf/open/floor/grass/fairy/pink + name = "pink fairygrass patch" + light_color = "#FFB3DA" + color = "#FFB3DA" + floor_tile = /obj/item/stack/tile/fairygrass/pink /turf/open/floor/grass/snow gender = PLURAL diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm index 32de354bf..9c66528ce 100644 --- a/code/modules/crafting/recipes/recipes_clothing.dm +++ b/code/modules/crafting/recipes/recipes_clothing.dm @@ -185,3 +185,11 @@ time = 60 always_availible = TRUE category = CAT_CLOTHING + +/datum/crafting_recipe/garlic_necklace + name = "Garlic Necklace" + result = /obj/item/clothing/neck/garlic_necklace + reqs = list(/obj/item/reagent_containers/food/snacks/grown/garlic = 15, + /obj/item/stack/cable_coil = 10) + time = 100 //Takes a while to put all the garlics on the coil and knot it. + category = CAT_CLOTHING diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index e08e8f3ec..8f56931cd 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -119,7 +119,7 @@ slices_num = 5 bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) - foodtype = GRAIN | DAIRY | FRUIT | SUGAR + foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/cakeslice/lime name = "lime cake slice" @@ -127,7 +127,7 @@ icon_state = "limecake_slice" filling_color = "#00FF00" tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) - foodtype = GRAIN | DAIRY | FRUIT | SUGAR + foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/store/cake/lemon name = "lemon cake" diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 8de7e1701..3e95db830 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -59,7 +59,7 @@ icon_state = "lime_sc" list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) - foodtype = FRUIT + foodtype = FRUIT | ANTITOXIC /obj/item/reagent_containers/food/snacks/snowcones/lemon name = "lemon snowcone" diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 26f2c9560..e05dc8b06 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -221,7 +221,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) - foodtype = JUNKFOOD | SUGAR + foodtype = JUNKFOOD | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/tobiko name = "tobiko" @@ -441,7 +441,7 @@ var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) - foodtype = JUNKFOOD | SUGAR + foodtype = JUNKFOOD | SUGAR | ANTITOXIC /obj/item/reagent_containers/food/snacks/lollipop/Initialize() . = ..() diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 045bfd082..e06e095b8 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -452,7 +452,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3) cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) - foodtype = GRAIN + foodtype = GRAIN | ANTITOXIC /obj/item/reagent_containers/food/snacks/dankpocket name = "\improper Dank-pocket" @@ -613,9 +613,11 @@ name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + foodtype |= ANTITOXIC . = ..() if(fey) reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + foodtype |= ANTITOXIC /obj/item/reagent_containers/food/snacks/cracker name = "cracker" diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 4d4a4f005..35ac1390c 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -149,8 +149,10 @@ name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + foodtype |= ANTITOXIC if(fey) reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) + foodtype |= ANTITOXIC /obj/item/reagent_containers/food/snacks/pie/xemeatpie diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index 6aebe3037..c0e5f345c 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -98,7 +98,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket name = "donkpocket pizza slice" @@ -106,7 +106,7 @@ icon_state = "donkpocketpizzaslice" filling_color = "#FFA500" tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizza/dank name = "dank pizza" @@ -116,7 +116,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) - foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY + foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizzaslice/dank name = "dank pizza slice" @@ -124,7 +124,7 @@ icon_state = "dankpizzaslice" filling_color = "#2E8B57" tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) - foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY + foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC /obj/item/reagent_containers/food/snacks/pizza/sassysage name = "sassysage pizza" diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index e27273323..fb971f2f9 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -20,7 +20,7 @@ bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("leaves" = 1) - foodtype = VEGETABLES + foodtype = VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/salad/herbsalad name = "herb salad" @@ -38,7 +38,7 @@ bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4) list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) - foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT + foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT | ANTITOXIC /obj/item/reagent_containers/food/snacks/salad/oatmeal name = "oatmeal" diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 8a1b2c0a2..3cb713040 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -89,7 +89,7 @@ icon_state = "nettlesoup" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("nettles" = 1) - foodtype = VEGETABLES + foodtype = VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/soup/mystery name = "mystery soup" diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 661c9bcab..57b5c29be 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -99,7 +99,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) - foodtype = GRAIN | FRUIT | VEGETABLES + foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC /obj/item/reagent_containers/food/snacks/carbonnanotube_noodles name = "carbon nanotube noodles" diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 81318f8fe..162bbbc5a 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -126,7 +126,7 @@ desc = "A peel from a bluespace banana." icon_state = "banana_peel_blue" -//Banana Spider. +//Banana Spider /obj/item/seeds/banana/exotic_banana name = "pack of exotic banana seeds" desc = "They're seeds that grow into banana trees. However, those bananas might be alive." diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 0229f6552..00ab3554a 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -10,7 +10,6 @@ maturation = 5 production = 5 yield = 2 - instability = 20 growthstages = 5 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "cocoapod-grow" diff --git a/code/modules/hydroponics/grown/cotton.dm b/code/modules/hydroponics/grown/cotton.dm index a3ac7d33b..a898b76ee 100644 --- a/code/modules/hydroponics/grown/cotton.dm +++ b/code/modules/hydroponics/grown/cotton.dm @@ -76,4 +76,4 @@ throw_range = 3 attack_verb = list("bashed", "battered", "bludgeoned", "whacked") cotton_type = /obj/item/stack/sheet/cotton/durathread - cotton_name = "raw durathread" \ No newline at end of file + cotton_name = "raw durathread" diff --git a/code/modules/hydroponics/grown/garlic.dm b/code/modules/hydroponics/grown/garlic.dm index 35272844c..77e2e73e3 100644 --- a/code/modules/hydroponics/grown/garlic.dm +++ b/code/modules/hydroponics/grown/garlic.dm @@ -9,7 +9,10 @@ potency = 25 growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list("garlic" = 0.15, "nutriment" = 0.1) + icon_grow = "garlic-grow" + icon_harvest = "garlic-harvest" + icon_dead = "garlic-dead" + reagents_add = list(/datum/reagent/consumable/garlic = 0.15, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/garlic seed = /obj/item/seeds/garlic @@ -19,4 +22,11 @@ filling_color = "#C0C9A0" bitesize_mod = 2 tastes = list("garlic" = 1) - wine_power = 10 \ No newline at end of file + wine_power = 10 + +/obj/item/clothing/neck/garlic_necklace + name = "garlic necklace" + desc = "A clove of garlic on a cable, tied to itself in a circle, just might fit around your neck. For loonies people who fear getting their blood sucked." + icon_state = "garlic_necklace" + item_state = "garlic_necklace" + diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 6b01eeb37..d65280a37 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -27,7 +27,7 @@ bitesize_mod = 2 var/stacktype = /obj/item/stack/tile/grass var/tile_coefficient = 0.02 // 1/50 - wine_power = 15 + distill_reagent = /datum/reagent/consumable/ethanol/beer/green /obj/item/reagent_containers/food/snacks/grown/grass/attack_self(mob/user) to_chat(user, "You prepare the astroturf.") @@ -49,17 +49,46 @@ plantname = "Fairygrass" product = /obj/item/reagent_containers/food/snacks/grown/grass/fairy icon_grow = "fairygrass-grow" - icon_dead = "fairygrass-dead" + icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) + mutatelist = list (/obj/item/seeds/grass/carpet) reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15) /obj/item/reagent_containers/food/snacks/grown/grass/fairy seed = /obj/item/seeds/grass/fairy name = "fairygrass" - desc = "Blue, glowing, and smells fainly of mushrooms." + desc = "Smells fainly of mushrooms." icon_state = "fairygrassclump" filling_color = "#3399ff" stacktype = /obj/item/stack/tile/fairygrass + distill_reagent = /datum/reagent/consumable/ethanol/beer/light + +/obj/item/reagent_containers/food/snacks/grown/grass/fairy/attack_self(mob/user) + var/datum/plant_gene/trait/glow/G = null + for(var/datum/plant_gene/trait/glow/gene in seed.genes) + G = gene + break + + stacktype = initial(stacktype) + + if(G) + switch(G.type) + if(/datum/plant_gene/trait/glow/white) + stacktype = /obj/item/stack/tile/fairygrass/white + if(/datum/plant_gene/trait/glow/red) + stacktype = /obj/item/stack/tile/fairygrass/red + if(/datum/plant_gene/trait/glow/yellow) + stacktype = /obj/item/stack/tile/fairygrass/yellow + if(/datum/plant_gene/trait/glow/green) + stacktype = /obj/item/stack/tile/fairygrass/green + if(/datum/plant_gene/trait/glow/blue) + stacktype = /obj/item/stack/tile/fairygrass/blue + if(/datum/plant_gene/trait/glow/purple) + stacktype = /obj/item/stack/tile/fairygrass/purple + if(/datum/plant_gene/trait/glow/pink) + stacktype = /obj/item/stack/tile/fairygrass/pink + + . = ..() // Carpet /obj/item/seeds/grass/carpet @@ -69,7 +98,7 @@ species = "carpet" plantname = "Carpet" product = /obj/item/reagent_containers/food/snacks/grown/grass/carpet - mutatelist = list() + mutatelist = list(/obj/item/seeds/grass/fairy) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/grass/carpet diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 5f1fdcdaa..ef78b9722 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -1,4 +1,4 @@ -// A very special plant, deserving it's own file. +// A very special plant, deserving its own file. /obj/item/seeds/kudzu name = "pack of kudzu seeds" diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 001997a73..0271c5511 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -61,7 +61,19 @@ /obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god + var/uses = 1 + if(seed) + uses = round(seed.potency / 20) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god + +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major) + if(major) + visible_message("[src] hums slightly, and seems to decay a bit.") + +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/expire(mob/user) + visible_message("[src] rapidly turns into ash!") + qdel(src) + new /obj/effect/decal/cleanable/ash(drop_location()) //Milkmelon /obj/item/seeds/watermelon/milk @@ -83,4 +95,4 @@ filling_color = "#FFAABB" dried_type = null wine_power = 30 - wine_flavor = "creamy" \ No newline at end of file + wine_flavor = "creamy" diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 2fcd0867c..7d8ae325c 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -1,7 +1,7 @@ // Starthistle /obj/item/seeds/starthistle name = "pack of starthistle seeds" - desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots." + desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots. Grind down these seeds for a substitution of mustardgrind." icon_state = "seed-starthistle" species = "starthistle" plantname = "Starthistle" @@ -9,7 +9,7 @@ endurance = 50 // damm pesky weeds maturation = 5 production = 1 - yield = 2 + yield = 6 potency = 10 growthstages = 3 grind_results = list(/datum/reagent/mustardgrind = 1) @@ -58,7 +58,6 @@ var/datum/gas_mixture/stank = new var/list/cached_gases = stank.gases - cached_gases[/datum/gas/miasma] += (yield + 5)*7*MIASMA_CORPSE_MOLES // this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses stank.temperature = T20C // without this the room would eventually freeze and miasma mining would be easier T.assume_air(stank) @@ -225,14 +224,17 @@ /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity) qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs -/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime() +/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by) icon_state = "cherry_bomb_lit" playsound(src, 'sound/effects/fuse.ogg', seed.potency, 0) + addtimer(CALLBACK(src, /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate), rand(50, 100)) + +/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate() reagents.chem_temp = 1000 //Sets off the black powder reagents.handle_reactions() -// Lavaland cactus +// Lavaland Cactus /obj/item/seeds/lavaland/cactus name = "pack of fruiting cactus seeds" desc = "These seeds grow into fruiting cacti." @@ -243,6 +245,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' growthstages = 2 + // Coconut /obj/item/seeds/coconut name = "pack of coconut seeds" @@ -286,8 +289,7 @@ /obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed) . = ..() - var/newvolume - newvolume = 50 + round(seed.potency,10) + var/newvolume = 50 + round(seed.potency,10) if (seed.get_gene(/datum/plant_gene/trait/maxchem)) newvolume = newvolume + 50 volume = newvolume @@ -297,23 +299,27 @@ transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? /obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user) - if (opened == TRUE) - if(possible_transfer_amounts.len) - var/i=0 - for(var/A in possible_transfer_amounts) - i++ - if(A == amount_per_transfer_from_this) - if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - return + if (!opened) + return + + if(!possible_transfer_amounts.len) + return + var/i=0 + for(var/A in possible_transfer_amounts) + i++ + if(A != amount_per_transfer_from_this) + continue + if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") + return /obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params) //DEFUSING NADE LOGIC - if (W.tool_behaviour == TOOL_WIRECUTTER && fused == TRUE) - user.show_message("You cut the fuse!", 1) + if (W.tool_behaviour == TOOL_WIRECUTTER && fused) + user.visible_message("[user] cuts something from the coconut.", "You cut the fuse!") playsound(user, W.hitsound, 50, 1, -1) icon_state = "coconut_carved" desc = "A coconut. This one's got a hole in it." @@ -325,14 +331,14 @@ set_light(0, 0.0) return //IGNITING NADE LOGIC - if(fusedactive == FALSE && fused == TRUE) + if(!fusedactive && fused) var/lighting_text = W.ignition_effect(src, user) if(lighting_text) - user.visible_message("[user] ignites [src]'s fuse!", "You ignite the [src]'s fuse!") + user.visible_message("[user] ignites a fuse from [src]!", "You ignite the [src]'s fuse!") fusedactive = TRUE defused = FALSE playsound(src, 'sound/effects/fuse.ogg', 100, 0) - message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] "+ pretty_string_from_reagent_list(reagents.reagent_list)) + message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]") log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].") addtimer(CALLBACK(src, .proc/prime), 5 SECONDS) icon_state = "coconut_grenade_active" @@ -344,7 +350,7 @@ //ADDING A FUSE, NADE LOGIC if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread)) - if (carved == TRUE && straw == FALSE && fused == FALSE) + if (carved && !straw && !fused) user.show_message("You add a fuse to the coconut!", 1) W.use(1) fused = TRUE @@ -353,38 +359,31 @@ name = "coconut bomb" return //ADDING STRAW LOGIC - if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened == TRUE && straw == FALSE && fused == FALSE) + if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened && !straw && fused) user.show_message("You add a bamboo straw to the coconut!", 1) straw = TRUE W.use(1) icon_state += "_straw" desc = "You can already feel like you're on a tropical vacation." + return //OPENING THE NUT LOGIC - if (carved == FALSE && chopped == FALSE) - if(W.tool_behaviour == TOOL_SCREWDRIVER) - user.show_message("You make a hole in the coconut!", 1) + if (!carved && !chopped) + var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER + if(screwdrivered || W.sharpness) + user.show_message("You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!", 1) carved = TRUE opened = TRUE + spillable = !screwdrivered reagent_flags = OPENCONTAINER ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - icon_state = "coconut_carved" - desc = "A coconut. This one's got a hole in it." - playsound(user, W.hitsound, 50, 1, -1) - return - else if(W.sharpness) - user.show_message("You slice the coconut open!", 1) - chopped = TRUE - opened = TRUE - reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - spillable = TRUE - icon_state = "coconut_chopped" - desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour." + icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" + desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." playsound(user, W.hitsound, 50, 1, -1) return + return ..() /obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) - if(M && user.a_intent == INTENT_HARM && spillable == FALSE) + if(M && user.a_intent == INTENT_HARM && !spillable) var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at if (affecting == BODY_ZONE_HEAD && prob(15)) //smash the nut open @@ -399,11 +398,11 @@ //Display an attack message. if(M != user) - M.visible_message("[user] has cracked open a [src.name] on [M]'s head!", \ - "[user] has cracked open a [src.name] on [M]'s head!") + M.visible_message("[user] has cracked open a [name] on [M]'s head!", \ + "[user] has cracked open a [name] on [M]'s head!") else - user.visible_message("[M] cracks open a [src.name] on their [M.p_them()] head!", \ - "[M] cracks open a [src.name] on [M.p_their()] head!") + user.visible_message("[M] cracks open a [name] on their [M.p_them()] head!", \ + "[M] cracks open a [name] on [M.p_their()] head!") //The coconut breaks open so splash its reagents spillable = TRUE @@ -418,7 +417,7 @@ if(fusedactive) return - if(opened == FALSE) + if(!opened) return if(!canconsume(M, user)) @@ -453,21 +452,11 @@ M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") log_combat(user, M, "fed", reagents.log_list()) else - if(M != user) - M.visible_message("[user] attempts to feed something to [M].", - "[user] attempts to feed something to you.") - if(!do_mob(user, M)) - return - if(!reagents || !reagents.total_volume) - return // The drink might be empty after the delay, such as by spam-feeding - M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") - log_combat(user, M, "fed", reagents.log_list()) - else - to_chat(user, "You swallow a gulp of [src].") - var/fraction = min(5/reagents.total_volume, 1) - reagents.reaction(M, INGEST, fraction) - addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + to_chat(user, "You swallow a gulp of [src].") + var/fraction = min(5/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) /obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity) . = ..() @@ -513,15 +502,13 @@ transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? /obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime() - if (!defused) - var/turf/T = get_turf(src) - reagents.chem_temp = 1000 - //Disable seperated contents when the grenade primes - if (seed.get_gene(/datum/plant_gene/trait/noreact)) - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) - reagents.handle_reactions() - log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") - qdel(src) + if (defused) + return + var/turf/T = get_turf(src) + reagents.chem_temp = 1000 + reagents.handle_reactions() + log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") + qdel(src) /obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity) qdel(src) @@ -531,3 +518,34 @@ prime() if(!QDELETED(src)) qdel(src) + +/obj/item/seeds/aloe + name = "pack of aloe seeds" + desc = "These seeds grow into aloe." + icon_state = "seed-aloe" + species = "aloe" + plantname = "Aloe" + product = /obj/item/reagent_containers/food/snacks/grown/aloe + lifespan = 60 + endurance = 25 + maturation = 4 + production = 4 + yield = 6 + growthstages = 5 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) + +/obj/item/reagent_containers/food/snacks/grown/aloe + seed = /obj/item/seeds/aloe + name = "aloe" + desc = "Cut leaves from the aloe plant." + icon_state = "aloe" + filling_color = "#90EE90" + bitesize_mod = 5 + foodtype = VEGETABLES + juice_results = list(/datum/reagent/consumable/aloejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/tequila + +/obj/item/reagent_containers/food/snacks/grown/aloe/microwave_act(obj/machinery/microwave/M) + new /obj/item/stack/medical/aloe(drop_location(), 2) + qdel(src) diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 2ebaa6d5e..a75b9caf5 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -14,7 +14,7 @@ weed_chance = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) - mutatelist = list(/obj/item/seeds/onion/red) + mutatelist = list(/obj/item/seeds/onion/red, /obj/item/seeds/garlic) /obj/item/reagent_containers/food/snacks/grown/onion seed = /obj/item/seeds/onion diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm new file mode 100644 index 000000000..da5f57ce9 --- /dev/null +++ b/code/modules/hydroponics/grown/peas.dm @@ -0,0 +1,99 @@ +// Finally, peas. Base plant. +/obj/item/seeds/peas + name = "pack of pea pods" + desc = "These seeds grows into vitamin rich peas!" + icon_state = "seed-peas" + species = "peas" + plantname = "Pea Vines" + product = /obj/item/reagent_containers/food/snacks/grown/peas + maturation = 3 + potency = 25 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + icon_grow = "peas-grow" + icon_dead = "peas-dead" + genes = list(/datum/plant_gene/trait/repeated_harvest) + mutatelist = list(/obj/item/seeds/peas/laugh) + reagents_add = list (/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/water = 0.05) + + +/obj/item/reagent_containers/food/snacks/grown/peas + seed = /obj/item/seeds/peas + name = "peapod" + desc = "Finally... peas." + icon_state = "peas" + filling_color = "#739122" + bitesize_mod = 1 + foodtype = VEGETABLES + tastes = list ("peas" = 1, "chalky saltiness" = 1) + distill_reagent = /datum/reagent/saltpetre + + +// Laughin' Peas +/obj/item/seeds/peas/laugh + name = "pack of laughin' peas" + desc = "These seeds give off a very soft purple glow.. they should grow into Laughin' Peas." + icon_state = "seed-laughpeas" + species = "laughpeas" + plantname = "Laughin' Peas" + product = /obj/item/reagent_containers/food/snacks/grown/laugh + maturation = 7 + potency = 10 + yield = 7 + production = 5 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + icon_grow = "laughpeas-grow" + icon_dead = "laughpeas-dead" + genes = list (/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/purple) + mutatelist = list (/obj/item/seeds/peas/laugh/peace) + reagents_add = list (/datum/reagent/consumable/laughter = 0.05, /datum/reagent/consumable/sugar = 0.05, /datum/reagent/consumable/nutriment = 0.07) + rarity = 25 //It actually might make CC Officials loosen up a smidge, eh? + + +/obj/item/reagent_containers/food/snacks/grown/laugh + seed = /obj/item/seeds/peas/laugh + name = "pod of laughin' peas" + desc = "Ridens Cicer, guaranteed to improve your mood dramatically upon consumption!" + icon_state = "laughpeas" + filling_color = "#ee7bee" + bitesize_mod = 2 + foodtype = VEGETABLES + juice_results = list (/datum/reagent/consumable/laughsyrup = 0) + tastes = list ("a prancing rabbit" = 1) //Vib Ribbon sends her regards.. wherever she is. + wine_power = 90 + wine_flavor = "a vector-graphic rabbit dancing on your tongue" + + +// World Peas - Peace at last, peace at last... +/obj/item/seeds/peas/laugh/peace + name = "pack of world peas" + desc = "These rather large seeds give off a soothing blue glow..." + icon_state = "seed-worldpeas" + species = "worldpeas" + plantname = "World Peas" + product = /obj/item/reagent_containers/food/snacks/grown/peace + maturation = 20 + potency = 75 + yield = 1 + production = 10 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + icon_grow = "worldpeas-grow" + icon_dead = "worldpeas-dead" + genes = list (/datum/plant_gene/trait/glow/blue) + reagents_add = list (/datum/reagent/pax = 0.1, /datum/reagent/drug/happiness = 0.1, /datum/reagent/consumable/nutriment = 0.15) + rarity = 50 + + +/obj/item/reagent_containers/food/snacks/grown/peace + seed = /obj/item/seeds/peas/laugh/peace + name = "cluster of world peas" + desc = "A plant discovered through extensive genetic engineering, and iterative graft work. It's rumored to bring peace to any who consume it. In the wider AgSci community, it's attained the nickname of 'Pax Mundi'." //at last... world peas. I'm not sorry. + icon_state = "worldpeas" + filling_color = "#0099CC" + bitesize_mod = 4 + foodtype = VEGETABLES + tastes = list ("numbing tranquility" = 2, "warmth" = 1) + wine_power = 100 + wine_flavor = "mind-numbing peace and warmth" diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 3769f9eac..46a5f79a0 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -29,6 +29,28 @@ create_reagents(volume, INJECTABLE | DRAWABLE) +/obj/item/seeds/replicapod/pre_attack(obj/machinery/hydroponics/I) + if(istype(I, /obj/machinery/hydroponics)) + if(!I.myseed) + START_PROCESSING(SSobj, src) + return ..() + +/obj/item/seeds/replicapod/proc/check_mind_orbiting(atom/A) + for(var/mob/M in A.orbiters?.orbiters) + if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == DEAD && !M.suiciding && isobserver(M)) + return TRUE + return FALSE + +/obj/item/seeds/replicapod/process() + var/obj/machinery/hydroponics/parent = loc + if(parent.harvest != 1) + return + if (check_mind_orbiting(parent)) + icon_harvest = "replicapod-orbit" + else + icon_harvest = "replicapod-harvest" + parent.update_icon_plant() + /obj/item/seeds/replicapod/on_reagent_change(changetype) if(changetype == ADD_REAGENT) var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) @@ -59,8 +81,11 @@ /obj/item/seeds/replicapod/get_analyzer_text() var/text = ..() + var/obj/machinery/hydroponics/parent = loc if(contains_sample) text += "\n It contains a blood sample!" + if (parent && istype(parent) && check_mind_orbiting(parent)) + text += "\n The soul is ready to enter the body." return text diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 1e2d25d82..e785c7dce 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -41,4 +41,4 @@ desc = "Dry them out to make some space-smokes." icon_state = "stobacco_leaves" distill_reagent = null - wine_power = 50 \ No newline at end of file + wine_power = 50 diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 53c338969..d3525c951 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -36,7 +36,7 @@ plantname = "Blood-Tomato Plants" product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood mutatelist = list() - reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list(/datum/reagent/blood/tomato = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blood @@ -47,7 +47,7 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = FRUIT | GROSS - grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) + grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood/tomato = 0) distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary // Blue Tomato diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 36be0a4be..267e41db2 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -314,6 +314,9 @@ else if(istype(A, /obj/item) && prob(20)) var/obj/item/O = A O.microwave_act() + else if(istype(A, /obj/item/grown/log)) + qdel(A) + new /obj/item/stack/sheet/mineral/coal(loc, 1) /obj/structure/bonfire/process() if(!CheckOxygen()) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 0fa512b77..6d811bdc6 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -18,7 +18,7 @@ var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/slime_change/slime_change //CIT CHANGE liked_food = TOXIC | MEAT - toxic_food = null + toxic_food = ANTITOXIC coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 553560668..82f341c9d 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -892,3 +892,37 @@ glass_icon_state = "glass_yellow" glass_name = "glass of bungo juice" glass_desc = "Exotic! You feel like you are on vacation already." + +/datum/reagent/consumable/aloejuice + name = "Aloe Juice" + color = "#A3C48B" + description = "A healthy and refreshing juice." + taste_description = "vegetable" + glass_icon_state = "glass_yellow" + glass_name = "glass of aloe juice" + glass_desc = "A healthy and refreshing juice." + +/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M) + if(M.getToxLoss() && prob(30)) + M.adjustToxLoss(-1, 0) + ..() + . = 1 + +// i googled "natural coagulant" and a couple of results came up for banana peels, so after precisely 30 more seconds of research, i now dub grinding banana peels good for your blood +/datum/reagent/consumable/banana_peel + name = "Pulped Banana Peel" + description = "Okay, so you put a banana peel in a grinder... Why, exactly?" + color = "#863333" // rgb: 175, 175, 0 + reagent_state = SOLID + taste_description = "stringy, bitter pulp" + glass_name = "glass of banana peel pulp" + glass_desc = "Okay, so you put a banana peel in a grinder... Why, exactly?" + +/datum/reagent/consumable/baked_banana_peel + name = "Baked Banana Peel Powder" + description = "You took a banana peel... pulped it... baked it... Where are you going with this?" + color = "#863333" // rgb: 175, 175, 0 + reagent_state = SOLID + taste_description = "bitter powder" + glass_name = "glass of banana peel powder" + description = "You took a banana peel... pulped it... baked it... Where are you going with this?" diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 45afb4987..d565c7fe9 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -816,5 +816,13 @@ description = "Sweet, Smokey, Savory, and gets everywhere. Perfect for Grilling." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#78280A" // rgb: 120 40, 10 - taste_mult = 2.5 //sugar's 1.5, capsacin's 1.5, so a good middle ground. + taste_mult = 2.25 //sugar's 1.5, capsacin's 1.5, so a good middle ground. taste_description = "smokey sweetness" + +/datum/reagent/consumable/laughsyrup + name = "Laughin' Syrup" + description = "The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!" + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#803280" + taste_mult = 2 + taste_description = "fizzy sweetness" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index fe62eef10..c6f6a376d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -172,6 +172,14 @@ color = BLOOD_COLOR_BUG // Bug colored, I guess. pH = 7.25 +/datum/reagent/blood/tomato + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + name = "Tomato Blood" + description = "This highly resembles blood, but it doesnt actually function like it, resembling more ketchup, with a more blood-like consistency." + taste_description = "sap" //Like tree sap? + pH = 7.45 + value = 0 + /datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M) if(prob(10)) @@ -2233,6 +2241,13 @@ M.adjustArousalLoss(3) ..() +/datum/reagent/cellulose + name = "Cellulose Fibers" + description = "A crystaline polydextrose polymer, plants swear by this stuff." + reagent_state = SOLID + color = "#E6E6DA" + taste_mult = 0 + // Adding new mutation toxin stuff from /code/modules/reagent/chemistry/recipes/slime_extracts.dm //Some other stuff like moth and felinid ( /datum/reagent/mutationtoxin/moth and /datum/reagent/mutationtoxin/felinid ) already exists. - Chemlight /datum/reagent/mutationtoxin/mammal diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 8e98eade9..5caf7f668 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index cf0d15b9b..1ef299a93 100644 Binary files a/icons/mob/neck.dmi and b/icons/mob/neck.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 4a47f01e7..cf335c237 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 76583326c..1f4c9d930 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index d42dbbfd1..c969fe39d 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 08cb371c8..042f6cb9f 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm b/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm index 78851321f..11bd807d2 100644 --- a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm +++ b/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm @@ -1,52 +1,3 @@ -/obj/item/seeds/banana/Initialize() - . = ..() - mutatelist += /obj/item/seeds/banana/exotic_banana - - -/obj/item/seeds/banana/exotic_banana - name = "pack of exotic banana seeds" - desc = "They're seeds that grow into banana trees. However, those bananas might be alive." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "seed_ExoticBanana" - species = "banana" - plantname = "Exotic Banana Tree" - product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - growing_icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_dead = "banana-dead" - mutatelist = list() - genes = list(/datum/plant_gene/trait/slip) - reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - seed = /obj/item/seeds/banana/exotic_banana - name = "banana spider" - desc = "You do not know what it is, but you can bet the clown would love it." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "banana" - item_state = "banana" - filling_color = "#FFFF00" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) - foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) - juice_results = list(/datum/reagent/consumable/banana = 0) - var/awakening = 0 - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) - if(awakening || isspaceturf(user.loc)) - return - to_chat(user, "You decide to wake up the banana spider...") - awakening = 1 - - spawn(30) - if(!QDELETED(src)) - var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc)) - S.speed += round(10 / seed.potency) - S.visible_message("The banana spider chitters as it stretches its legs.") - qdel(src) - - /mob/living/simple_animal/banana_spider icon = 'modular_citadel/icons/mob/BananaSpider.dmi' name = "banana spider" diff --git a/tgstation.dme b/tgstation.dme index 61e22accf..c5adc22d2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1857,6 +1857,7 @@ #include "code\modules\hydroponics\grown\onion.dm" #include "code\modules\hydroponics\grown\peach.dm" #include "code\modules\hydroponics\grown\peanuts.dm" +#include "code\modules\hydroponics\grown\peas.dm" #include "code\modules\hydroponics\grown\pineapple.dm" #include "code\modules\hydroponics\grown\potato.dm" #include "code\modules\hydroponics\grown\pumpkin.dm"