diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 60f99c4c..c04e9406 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 df03918c..e9133244 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 cc044c18..4ba3f287 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 f035bff0..d371db96 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 c734b89e..2c7c6a3f 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 32de354b..9c66528c 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 e08e8f3e..8f56931c 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 8de7e170..3e95db83 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 26f2c956..e05dc8b0 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 045bfd08..e06e095b 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 4d4a4f00..35ac1390 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 6aebe303..c0e5f345 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 e2727332..fb971f2f 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 8a1b2c0a..3cb71304 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 661c9bca..57b5c29b 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 81318f8f..162bbbc5 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 0229f655..00ab3554 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 a3ac7d33..a898b76e 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 35272844..77e2e73e 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 6b01eeb3..d65280a3 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 5f1fdcda..ef78b972 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 001997a7..0271c551 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 2fcd0867..7d8ae325 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 2ebaa6d5..a75b9caf 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 00000000..da5f57ce --- /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 3769f9ea..46a5f79a 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 1e2d25d8..e785c7dc 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 53c33896..d3525c95 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 36be0a4b..267e41db 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 0fa512b7..6d811bdc 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 55356066..82f341c9 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 45afb498..d565c7fe 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 fe62eef1..c6f6a376 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 8e98eade..5caf7f66 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 cf0d15b9..1ef299a9 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 4a47f01e..cf335c23 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 76583326..1f4c9d93 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 d42dbbfd..c969fe39 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 08cb371c..042f6cb9 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 78851321..11bd807d 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 61e22acc..c5adc22d 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"