diff --git a/citadel.dme b/citadel.dme index a2a60b2f8eb..eab88b2c4a6 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3811,6 +3811,7 @@ #include "code\modules\materials\definitions\misc\wax.dm" #include "code\modules\materials\definitions\organic\algae.dm" #include "code\modules\materials\definitions\organic\bone.dm" +#include "code\modules\materials\definitions\organic\shell.dm" #include "code\modules\materials\definitions\organic\chitin.dm" #include "code\modules\materials\definitions\organic\cotton.dm" #include "code\modules\materials\definitions\organic\diona.dm" @@ -4486,6 +4487,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" #include "code\modules\mob\living\simple_mob\subtypes\lavaland\goliath.dm" #include "code\modules\mob\living\simple_mob\subtypes\lavaland\gutshank.dm" +#include "code\modules\mob\living\simple_mob\subtypes\lavaland\sandsifter.dm" #include "code\modules\mob\living\simple_mob\subtypes\lavaland\stormdrifter.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\combat_drone.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\corrupt_maint_drone_vr.dm" diff --git a/code/__DEFINES/chemistry.dm b/code/__DEFINES/chemistry.dm index d2104e187d0..cffa43f28fa 100644 --- a/code/__DEFINES/chemistry.dm +++ b/code/__DEFINES/chemistry.dm @@ -49,6 +49,7 @@ #define IS_XENOHYBRID 16 #define IS_MOTH 17 #define IS_NARAMADI 18 +#define IS_SCORI 19 /// Inaprovaline #define CE_STABLE "stable" diff --git a/code/__DEFINES/recipes.dm b/code/__DEFINES/recipes.dm index cc10541145c..be6c95f2f28 100644 --- a/code/__DEFINES/recipes.dm +++ b/code/__DEFINES/recipes.dm @@ -24,6 +24,7 @@ #define CAT_PIE "Pies & Sweets" #define CAT_PIZZA "Pizzas" #define CAT_PRIMAL "Tribal" +#define CAT_ALCHEMY "Alchemy" #define CAT_ROBOT "Robots" #define CAT_SALAD "Salads" #define CAT_SANDWICH "Sandwiches" diff --git a/code/datums/recipe/crafting_recipes/recipes_misc.dm b/code/datums/recipe/crafting_recipes/recipes_misc.dm index 826864a8021..44242459fde 100644 --- a/code/datums/recipe/crafting_recipes/recipes_misc.dm +++ b/code/datums/recipe/crafting_recipes/recipes_misc.dm @@ -435,7 +435,7 @@ /datum/crafting_recipe/soak_hide name = "Soak Hairless Hide" - result = list(/obj/item/stack/wetleather = 1) + result = /obj/item/stack/wetleather time = 10 reqs = list(/obj/item/stack/hairlesshide = 1, /datum/reagent/water = 5) diff --git a/code/datums/recipe/crafting_recipes/recipes_primal.dm b/code/datums/recipe/crafting_recipes/recipes_primal.dm index 19aa27b20cc..9e0225f0a09 100644 --- a/code/datums/recipe/crafting_recipes/recipes_primal.dm +++ b/code/datums/recipe/crafting_recipes/recipes_primal.dm @@ -509,16 +509,6 @@ category = CAT_PRIMAL always_available = FALSE -/datum/crafting_recipe/charcoal_stick - name = "Charcoal Stick" - result = /obj/item/pen/charcoal - time = 80 - reqs = list(/obj/item/stack/material/bone = 1 - ) - category = CAT_PRIMAL - always_available = FALSE - tools = list(TOOL_WELDER) - /datum/crafting_recipe/stone_dropper name = "Primitive Dropper" result = /obj/item/reagent_containers/dropper/ashlander @@ -629,17 +619,18 @@ name = "Coarse Tunic" result = /obj/item/clothing/under/tribal_tunic/ashlander time = 60 - reqs = list(/obj/item/stack/animalhide/goliath_hide = 4 - ) + reqs = list(/obj/item/stack/animalhide/goliath_hide = 2, + /datum/reagent/shimashpulp = 30) category = CAT_PRIMAL always_available = FALSE + tools = list(TOOL_WIRECUTTER) // todo: add weaving tools /datum/crafting_recipe/ashlander_tunic_fem name = "Coarse Tunic (female)" result = /obj/item/clothing/under/tribal_tunic_fem/ashlander time = 60 - reqs = list(/obj/item/stack/animalhide/goliath_hide = 4 - ) + reqs = list(/obj/item/stack/animalhide/goliath_hide = 2, + /datum/reagent/shimashpulp = 30) category = CAT_PRIMAL always_available = FALSE tools = list(TOOL_WIRECUTTER) @@ -705,7 +696,7 @@ reqs = list(/obj/item/reagent_containers/glass/bucket/sandstone = 1, /obj/item/condensedphlogiston = 3, /obj/item/elderstone = 1) - category = CAT_PRIMAL + category = CAT_ALCHEMY always_available = FALSE /datum/crafting_recipe/heaven_shaker_frag @@ -716,7 +707,7 @@ /obj/item/condensedphlogiston = 3, /obj/item/stack/ore/slag = 2, /obj/item/elderstone = 1) - category = CAT_PRIMAL + category = CAT_ALCHEMY always_available = FALSE /datum/crafting_recipe/goliathcowl @@ -789,11 +780,51 @@ tools = list(TOOL_WIRECUTTER) //Make this one cloth once I give Ashies a cloth plant? If I do?? +//Using shimash pulp as standin for cloth /datum/crafting_recipe/ashlander_wraps name = "Hide Footwraps" result = /obj/item/clothing/shoes/footwraps time = 10 - reqs = list(/obj/item/stack/animalhide/goliath_hide = 2) + reqs = list(/datum/reagent/shimashpulp = 15) category = CAT_PRIMAL always_available = FALSE - tools = list(TOOL_WIRECUTTER) + +/datum/crafting_recipe/primitivesoap + name = "Primitive Soap" + result = /obj/item/soap/primitive + time = 10 + reqs = list(/datum/reagent/nutriment/triglyceride/oil/tallow = 1, /datum/reagent/water = 1, /datum/reagent/ash_powder = 1) + category = CAT_ALCHEMY + always_available = FALSE + +/datum/crafting_recipe/condensedphlogiston + name = "Condensed Phlogiston" + result = /obj/item/condensedphlogiston + time = 10 + reqs = list(/datum/reagent/phlogiston = 5, /datum/reagent/ash_powder = 5, /datum/reagent/alchemybase = 3) + category = CAT_ALCHEMY + always_available = FALSE + +/datum/crafting_recipe/bitterash + name = "Bitter Ash Poultice" + result = /obj/item/bitterash + time = 10 + reqs = list(/datum/reagent/nicotine = 5, /datum/reagent/ash_powder = 5, /datum/reagent/alchemybase = 3) + category = CAT_ALCHEMY + always_available = FALSE + +/datum/crafting_recipe/charcoal_stick + name = "Charcoal Stick" + result = /obj/item/pen/charcoal + time = 10 + reqs = list(/datum/reagent/nutriment/triglyceride/oil/tallow = 1, /datum/reagent/alchemybase = 1, /datum/reagent/ash_powder = 1) // Changing to refliect original recipe better + category = CAT_ALCHEMY + always_available = FALSE + +/datum/crafting_recipe/ritual_chalk + name = "Chalk" + result = /obj/item/pen/crayon/chalk + time = 10 + reqs = list(/datum/reagent/nutriment/triglyceride/oil/tallow = 1, /datum/reagent/alchemybase = 1, /datum/reagent/calcium = 1) + category = CAT_ALCHEMY + always_available = FALSE diff --git a/code/game/objects/items/stacks/subtypes/material.dm b/code/game/objects/items/stacks/subtypes/material.dm index 3ad883ac40f..993956c97ba 100644 --- a/code/game/objects/items/stacks/subtypes/material.dm +++ b/code/game/objects/items/stacks/subtypes/material.dm @@ -580,6 +580,18 @@ drop_sound = 'sound/items/drop/leather.ogg' pickup_sound = 'sound/items/pickup/leather.ogg' +/obj/item/stack/material/shell + name = "shell shards" + desc = "Shards of animal shell." + singular_name = "shell shard" + icon_state = "chitin" + material = /datum/prototype/material/bone + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + /obj/item/stack/material/glass name = "glass" icon_state = "sheet-glass" diff --git a/code/game/objects/mob_spawner.dm b/code/game/objects/mob_spawner.dm index cfd2ce83797..09e85a37cd2 100644 --- a/code/game/objects/mob_spawner.dm +++ b/code/game/objects/mob_spawner.dm @@ -159,6 +159,21 @@ It also makes it so a ghost wont know where all the goodies/mobs are. /mob/living/simple_mob/animal/stormdrifter/bull = 30 ) +/obj/structure/mob_spawner/sandsifter + name = "Sand Sifter Colony" + desc = "A pile of rocks and other debris sand sifters often nest in." + icon_state = "boulder1" + spawn_delay = 5 MINUTES + simultaneous_spawns = 8 + mob_faction = MOB_IFF_FACTION_BIND_TO_MAP + total_spawns = 36 + anchored = 1 + integrity_flags = NONE + integrity = 100 + spawn_types = list( + /mob/living/simple_mob/animal/sandsifter = 100 + ) + //Scanners /obj/structure/mob_spawner/scanner/corgi name = "Corgi Lazy Spawner" diff --git a/code/game/objects/structures/ashlander.dm b/code/game/objects/structures/ashlander.dm index c5400be1e04..80762f658da 100644 --- a/code/game/objects/structures/ashlander.dm +++ b/code/game/objects/structures/ashlander.dm @@ -295,6 +295,28 @@ playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1) beaker.reagents.add_reagent("ash", 10) + if(istype(I,/obj/item/stack/material/shell)) + if(!beaker) + return + else + var/obj/item/stack/material/shell/W = I + if(W.get_amount() < 1) + return + else if(do_after(user, 10)) + W.use(1) + user.visible_message("[user] feeds \the [W] into \the [src].","You reduce \the [W] using \the [src].") + playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1) + beaker.reagents.add_reagent("calcium", 10) + + if(istype(I,/obj/item/elderstone)) + if(!beaker) + return + else if(do_after(user, 10)) + qdel(I) + user.visible_message("[user] feeds \the [I] into \the [src].","You reduce \the [I] using \the [src].") + playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1) + beaker.reagents.add_reagent("catalyst", 10) + src.updateUsrDialog() return 0 diff --git a/code/modules/food/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm index 3877bf37714..c6bf8bf7805 100644 --- a/code/modules/food/food/snacks/meat.dm +++ b/code/modules/food/food/snacks/meat.dm @@ -60,6 +60,16 @@ reagents.remove_reagent("triglyceride", INFINITY) //Chicken is low fat. Less total calories than other meats +/obj/item/reagent_containers/food/snacks/meat/sandsifter + icon = 'icons/obj/food.dmi' + icon_state = "chickenbreast" + cooked_icon = "chickenbreast_cooked" + filling_color = "#AE625F" + +/obj/item/reagent_containers/food/snacks/meat/sandsifter/Initialize(mapload) + . = ..() + reagents.remove_reagent("triglyceride", INFINITY) + /obj/item/reagent_containers/food/snacks/meat/chicken/penguin name = "meat" desc = "Tastes like chicken? Or fish? Fishy chicken? Strange." diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 2ee053bd281..a7ed2c70ee5 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -1666,7 +1666,7 @@ seed_name = "pyrrhlea" display_name = "pyrrhlea" kitchen_tag = "pyrrhlea" - chems = list("nutriment" = list(1,5), "kelotane" = list(1,10), "inaprovaline" = list(1,10)) + chems = list("nutriment" = list(1,5), "pyrrhleanectar" = list(1,10), "inaprovaline" = list(1,10)) // tried to make the nectar replace both medicines but I don't think reactions can have two outcomes for splitting it later /datum/seed/flower/pyrrhlea/New() ..() @@ -1687,7 +1687,7 @@ seed_name = "bentar" display_name = "bentars" kitchen_tag = "bentars" - chems = list("sugar" = list(1,5), "anti_toxin" = list(1,10)) + chems = list("sugar" = list(1,5), "bentarjuice" = list(1,10)) /datum/seed/bentars/New() ..() @@ -1709,7 +1709,7 @@ seed_name = "juhtak" display_name = "juhtak" kitchen_tag = "juhtak" - chems = list("nutriment" = list(1,5), "bicaridine" = list(1,10)) + chems = list("nutriment" = list(1,5), "juhtakpulp" = list(1,10)) /datum/seed/juhtak/New() ..() @@ -1731,7 +1731,7 @@ seed_name = "cersut" display_name = "cersut" kitchen_tag = "cersut" - chems = list("sacid" = list(5,10)) + chems = list("cersutpaste" = list(5,10)) /datum/seed/cersut/New() ..() @@ -1753,7 +1753,7 @@ seed_name = "shimash" display_name = "shimash" kitchen_tag = "shimash" - chems = list("tramadol" = list(5,10)) + chems = list("shismashpulp" = list(5,10)) /datum/seed/shimash/New() ..() @@ -1775,7 +1775,7 @@ seed_name = "pokalea" display_name = "pokalea" kitchen_tag = "pokalea" - chems = list("nicotine" = list(5,10), "leporazine" = list(5,10)) + chems = list("nicotine" = list(5,10), "pokaleapaste" = list(5,10)) /datum/seed/pokalea/New() ..() diff --git a/code/modules/materials/definitions/organic/shell.dm b/code/modules/materials/definitions/organic/shell.dm new file mode 100644 index 00000000000..5a831ce277f --- /dev/null +++ b/code/modules/materials/definitions/organic/shell.dm @@ -0,0 +1,28 @@ +/datum/prototype/material/shell + id = "shell" + name = "shell" + icon_colour = "#BCB7B5" + stack_type = /obj/item/stack/material/shell + icon_base = 'icons/turf/walls/stone_wall.dmi' + icon_reinf = 'icons/turf/walls/reinforced_mesh.dmi' + melting_point = T0C+300 + sheet_singular_name = "shard" + sheet_plural_name = "shards" + explosion_resistance = 60 + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 7) + door_icon_base = "stone" + table_icon_base = "stone" + + relative_integrity = 0.75 + weight_multiplier = 0.75 + density = 8 * 1 + relative_conductivity = 0.1 + relative_permeability = 0.07 + relative_reactivity = 1 + hardness = MATERIAL_RESISTANCE_MODERATE + toughness = MATERIAL_RESISTANCE_MODERATE + refraction = MATERIAL_RESISTANCE_NONE + absorption = MATERIAL_RESISTANCE_MODERATE + nullification = MATERIAL_RESISTANCE_NONE + + material_constraints = MATERIAL_CONSTRAINT_RIGID diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index e07175ac73f..7f966fc044b 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -157,6 +157,10 @@ /obj/item/holder/mouse w_class = WEIGHT_CLASS_TINY +/obj/item/holder/sandsifter + w_class = WEIGHT_CLASS_TINY + origin_tech = list(TECH_BIO = 3) + /obj/item/holder/borer origin_tech = list(TECH_BIO = 6) diff --git a/code/modules/mob/living/simple_mob/subtypes/lavaland/goliath.dm b/code/modules/mob/living/simple_mob/subtypes/lavaland/goliath.dm index 60324a4b248..f40eaf2a8dd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/lavaland/goliath.dm +++ b/code/modules/mob/living/simple_mob/subtypes/lavaland/goliath.dm @@ -149,7 +149,7 @@ var/obj/item/reagent_containers/glass/G = O if(stat == CONSCIOUS && istype(G) && G.is_open_container()) user.visible_message("[user] drains the sac of the [src] using \the [O].") - var/transfered = goliath_sac.trans_id_to(G, "gunpowder", rand(15,30)) + var/transfered = goliath_sac.trans_id_to(G, "phosphorus", rand(15,30)) if(G.reagents.total_volume >= G.volume) to_chat(user, "The [O] is full.") if(!transfered) @@ -193,7 +193,7 @@ if(stat != DEAD) if(goliath_sac && prob(5)) - goliath_sac.add_reagent("gunpowder", rand(5, 10)) + goliath_sac.add_reagent("phosphorus", rand(5, 10)) /mob/living/simple_mob/animal/goliath/death() STOP_PROCESSING(SSobj, src) diff --git a/code/modules/mob/living/simple_mob/subtypes/lavaland/sandsifter.dm b/code/modules/mob/living/simple_mob/subtypes/lavaland/sandsifter.dm new file mode 100644 index 00000000000..19159267c87 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/lavaland/sandsifter.dm @@ -0,0 +1,63 @@ +/datum/category_item/catalogue/fauna/sandsifter + name = "Sand Sifters" + desc = "Sand Sifters are a species native to KT-943, known commonly as Surt. \ + Largely inconsequential to Nanotrasen's interests on the planet, the sand sifter is \ + akin to bottom feeders found within other ecosystems; continuously crawling through the ash \ + sands that blanket the planet for base nutrients and rotting organic material. \ + Hence the common name the species is known by." + value = CATALOGUER_REWARD_TRIVIAL + +/mob/living/simple_mob/animal/sandsifter + name = "sand sifter" + desc = "A small snail-like creature that feeds on minerals and organic matter it finds in ash sand." + icon = 'icons/mob/lavaland/lavaland_mobs.dmi' + icon_state = "lavasnail" + icon_living = "lavasnail" + icon_dead = "lavasnail-dead" + catalogue_data = list(/datum/category_item/catalogue/fauna/sandsifter) + + maxHealth = 20 + health = 20 + min_oxy = 0 + min_co2 = 5 + max_co2 = 0 + minbodytemp = 0 + maxbodytemp = 700 + heat_resist = 1 + + mob_size = MOB_MINISCULE + pass_flags = ATOM_PASS_TABLE + can_pull_size = WEIGHT_CLASS_TINY + can_pull_mobs = MOB_PULL_NONE + layer = MOB_LAYER + density = 0 + + response_help = "pets" + response_disarm = "nudges" + response_harm = "crushes" + + mob_class = MOB_CLASS_ANIMAL + taser_kill = FALSE + + bone_type = /obj/item/stack/material/shell + meat_type = /obj/item/reagent_containers/food/snacks/meat/sandsifter + meat_amount = 2 + bone_amount = 4 + exotic_amount = 0 + + holder_type = /obj/item/holder/sandsifter + + iff_factions = MOB_IFF_FACTION_BIND_TO_MAP + + speak_emote = list("burbles") + say_list_type = /datum/say_list/sandsifter + ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/sandsifter + +/datum/ai_holder/polaris/simple_mob/melee/sandsifter + hostile = FALSE + retaliate = FALSE + mauling = FALSE + +/datum/say_list/sandsifter + emote_hear = list("crunches on some sand","suddenly drops its shell to the ground") + emote_see = list("sinks their underbelly into the sand", "slowly inches along", "pokes its radula at something") diff --git a/code/modules/reagents/chemistry/machinery.dm b/code/modules/reagents/chemistry/machinery.dm index 80d91f73fb1..19c82fa3272 100644 --- a/code/modules/reagents/chemistry/machinery.dm +++ b/code/modules/reagents/chemistry/machinery.dm @@ -30,8 +30,21 @@ /obj/item/stack/material/snow = list("water"), /obj/item/stack/material/sandstone = list("silicon", "oxygen"), /obj/item/stack/material/glass = list("silicon"), + /obj/item/stack/material/lead = list("lead"), + /obj/item/stack/material/copper = list("copper"), /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, /obj/item/stack/material/silencium = list("nothing"), + /obj/item/stack/material/bone = list("bonemeal"), + /obj/item/stack/material/shell = list("calciumcarbonate"), + /obj/item/stack/ore/gold = list ("gold"), // Native gold means it's pure crystalline gold + /obj/item/stack/ore/silver = list ("silver"), // ditto for native silver + /obj/item/stack/ore/copper = list ("copper"), + /obj/item/stack/ore/lead = list ("galena"), + /obj/item/stack/ore/iron = list ("hematite"), + /obj/item/stack/ore/coal = list ("carbon", "carbon", "carbon", "carbon", "sulfur"), + /obj/item/stack/ore/phoron = list ("phoronite"), + /obj/item/stack/ore/hydrogen = list ("hydronite"), + /obj/item/stack/ore/uranium = list ("uraninite") ) var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") var/static/radial_eject = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject") diff --git a/code/modules/reagents/chemistry/reactions/Drink-Recipes.dm b/code/modules/reagents/chemistry/reactions/Drink-Recipes.dm index 989b400f53c..09c51f37fb9 100644 --- a/code/modules/reagents/chemistry/reactions/Drink-Recipes.dm +++ b/code/modules/reagents/chemistry/reactions/Drink-Recipes.dm @@ -134,6 +134,14 @@ catalysts = list("enzyme" = 5) result_amount = 10 +/datum/chemical_reaction/drinks/bentarwine + name = "Sirim-Bentar" + id = "bentarwine" + result = "bentarwine" + required_reagents = list("bentarjuice" = 10) + catalysts = list("enzyme" = 5) + result_amount = 10 + /datum/chemical_reaction/drinks/pwine name = "Poison Wine" id = "pwine" diff --git a/code/modules/reagents/chemistry/reactions/Misc-Recipes.dm b/code/modules/reagents/chemistry/reactions/Misc-Recipes.dm index 4241a2c7ad4..87d45f5eedb 100644 --- a/code/modules/reagents/chemistry/reactions/Misc-Recipes.dm +++ b/code/modules/reagents/chemistry/reactions/Misc-Recipes.dm @@ -249,7 +249,10 @@ required_reagents = list("triglyceride" = 1, "protein" = 1, "alchemybase" = 1) result_amount = 3 -/datum/chemical_reaction/soap +// Replacing (most) reactions that produce items with a crafting recipe. Less janky + +/* + /datum/chemical_reaction/soap name = "Soap" id = "soap" required_reagents = list("tallow" = 1, "water" = 1, "ash" = 1) @@ -258,8 +261,12 @@ . = ..() new /obj/item/soap/primitive(get_turf(holder.my_atom)) +*/ + // todo: why is this a chemical reaction? make a chalkcrafting system or something... +// chalk crafting system is in now kinda + // you know what fuck you; this trips up unit tests. i'm just commenting it out. // /datum/chemical_reaction/charcoal_stick // name = "Charcoal Stick" @@ -306,6 +313,7 @@ required_reagents = list("gunpowder" = 2, "alchemybase" = 1) result_amount = 3 +/* /datum/chemical_reaction/condensedphlogiston name = "Condensed Phlogiston" id = "condensedphlogiston" @@ -325,6 +333,124 @@ . = ..() for(var/i in 1 to multiplier) new /obj/item/bitterash(get_turf(holder.my_atom)) +*/ + +/datum/chemical_reaction/alchemizebentar + name = "Alchemize Bentar" + id = "alchemizebentar" + result = "anti_toxin" + required_reagents = list("bentarjuice" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizeshimash + name = "Alchemize Shimash" + id = "alchemizeshimash" + result = "tramadol" + required_reagents = list("shimashpulp" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizepokalea + name = "Alchemize Pokalea" + id = "alchemizepokalea" + result = "leporazine" + required_reagents = list("pokaleapaste" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizejuhtak + name = "Alchemize Juhtak" + id = "alchemizejuhtak" + result = "bicaridine" + required_reagents = list("juhtakpulp" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizepyrrhlea + name = "Alchemize Pyrrhlea" + id = "alchemizepyrrhlea" + result = "kelotane" + required_reagents = list("pyrrhleanectar" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizebanana + name = "Alchemize Banana Juice" + id = "alchemizebanana" + result = "potassium" + required_reagents = list("banana" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/alchemizebonemeal + name = "Alchemize Bonemeal" + id = "alchemizebonemeal" + result = "phosphorus" + required_reagents = list("bonemeal" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/dilutecersut + name = "Dilute Cersut" + id = "dilutecersut" + result = "sacid" + required_reagents = list("cersutpaste" = 1, "water" = 1) + result_amount = 2 + +/datum/chemical_reaction/purifyiron + name = "Purify Hematite" + id = "purifyiron" + result = "iron" + required_reagents = list("hematite" = 1, "catalyst" = 0.5) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/purifyuranium + name = "Purify Uraninite" + id = "purifyuranium" + result = "uranium" + required_reagents = list("uraninite" = 1, "catalyst" = 0.5) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/purifylead + name = "Purify Galena" + id = "purifylead" + result = "lead" + required_reagents = list("galena" = 1, "catalyst" = 0.1) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/purifyphoron + name = "Purify Phoronite" + id = "purifyphoron" + result = "phoron" + required_reagents = list("phoronite" = 1, "catalyst" = 0.5) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/releasehydrogen + name = "Release Hydrogen" + id = "releasehydrogen" + result = "hydrogen" + required_reagents = list("hydronite" = 1, "sacid" = 2, "catalyst" = 0.5) + catalysts = list("catalyst" = 5) + result_amount = 1 + +/datum/chemical_reaction/cersutsauce + name = "Siishma-Cersut" + id = "cersutsauce" + result = "cersutsauce" + required_reagents = list("cersutpaste" = 1, "sugar" = 1, "pyrrhleanectar" = 1) + result_amount = 3 + +/datum/chemical_reaction/gunpowder + name = "Gunpowder" + id = "gunpowder" + result = "gunpowder" + required_reagents = list("phosphorus" = 1, "carbon" = 1, "sulfur" = 1) + result_amount = 3 //Slime related /datum/chemical_reaction/slimeify diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm index 92781cf3ea2..daa1b9b8777 100644 --- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm @@ -5460,3 +5460,40 @@ glass_name = "Halloween Punch" glass_desc = "It's staring at you!" + +/datum/reagent/ethanol/bentarwine + name = "Sirim-Bentar" + id = "bentarwine" + description = "A type of wine made of fermented bentar juice." + reagent_state = REAGENT_LIQUID + proof = WINE + color = "#9d23aa" + taste_description = "slightly medicinal wine" + +/datum/reagent/ethanol/bentarwine/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + var/chem_effective = 1 + if(alien == IS_SLIME) + chem_effective = 0.75 + if(alien != IS_DIONA) + M.adjustToxLoss(-1 * removed * chem_effective)//Keeps some of the medicinal properties, but reduced. + +/datum/reagent/cersutsauce + name = "Siishma-Cersut" + id = "cersutsauce" + description = "Acidic cersut paste tempered by some other medium to create a sauce." + reagent_state = REAGENT_LIQUID + color = "#e0f569" + taste_description = "your tongue tingling" + +/datum/reagent/cersutsauce/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + var/potency = 2 + if(alien == IS_XENOHYBRID) + return + if(alien != IS_SCORI) + potency = 4 + if(metabolism.total_processed_dose < 5 && (metabolism.cycles_so_far == 1 || prob(5))) + to_chat(M,"You feel like your insides are going numb!") + if(metabolism.total_processed_dose >= 5) + M.apply_effect(potency, AGONY, 0) + if(prob(5)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Other.dm index f84ea963eaf..29655a60b3b 100644 --- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Other.dm @@ -189,6 +189,52 @@ color = "#464650" taste_description = "salt" +/datum/reagent/galena + name = "Galena" + id = "galena" + description = "Powdered unprocessed lead." + reagent_state = REAGENT_SOLID + color = "#273956" + taste_description = "metal" + +/datum/reagent/hematite + name = "Hematite" + id = "hematite" + description = "Powdered unprocessed iron. It's mostly iron oxide." + reagent_state = REAGENT_SOLID + color = "#353535" + taste_description = "rust" + +/datum/reagent/uraninite + name = "Uraninite" + id = "uraninite" + description = "Powdered unprocessed uranium." + reagent_state = REAGENT_SOLID + color = "#B8B8C0" + taste_description = "metal" + +/datum/reagent/uraninite/legacy_affect_touch(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + legacy_affect_ingest(M, alien, removed, metabolism) + +/datum/reagent/uraninite/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + M.apply_effect(5 * removed, IRRADIATE, 0) + +/datum/reagent/phoronite + name = "Phoronite" + id = "phoronite" + description = "Powdered unprocessed phoron. The crystals haven't been forced into their reactive form." + reagent_state = REAGENT_SOLID + color = "#9D14DB" + taste_description = "tingly sand" + +/datum/reagent/hydronite + name = "Hydronite" + id = "hydronite" + description = "Powdered unprocessed metallic hydrogen." + reagent_state = REAGENT_SOLID + color = "#808080" + taste_mult = 0 + //Ashlander Alchemy! /datum/reagent/alchemybase name = "Alchemical Base" @@ -213,3 +259,114 @@ reagent_state = REAGENT_SOLID color = "#302f2f" taste_description = "sour wax and sulphur" + +/datum/reagent/bentarjuice + name = "Bentar Juice" + id = "bentarjuice" + description = "The sickly sweet juice of the bentar plant." + reagent_state = REAGENT_LIQUID + color = "#9d23aa" + taste_description = "sweetness with a medicinal aftertaste" + +/datum/reagent/bentarjuice/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + var/chem_effective = 1 + if(alien == IS_SLIME) + chem_effective = 0.75 + if(alien != IS_DIONA) + M.adjustToxLoss(-2 * removed * chem_effective)// Herbal Dylovene. Heals less toxin and loses other benefits. + +/datum/reagent/cersutpaste + name = "Cersut Paste" + id = "cersutpaste" + description = "Ground up paste of a cersut leaf. It's highly acidic." + reagent_state = REAGENT_LIQUID + color = "#e0f569" + taste_description = "your tongue melting and teeth falling out" + +/datum/reagent/cersutpaste/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + if(alien == IS_XENOHYBRID) + return + if(alien != IS_SCORI) + M.take_random_targeted_damage(burn = 0, burn = removed * 4) + if(prob(50)) + M.apply_effect(4, AGONY, 0) + if(prob(20)) + to_chat(M,"You feel like your insides are melting!") + else if(prob(20)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") + + + +/datum/reagent/juhtakpulp + name = "Juhtak Pulp" + id = "juhtakpulp" + description = "Pulp extracted from a juhtak plant." + reagent_state = REAGENT_LIQUID + color = "#684f32" + taste_description = "bitter plant grit" + +/datum/reagent/juhtakpulp/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + var/chem_effective = 1 + if(alien == IS_SLIME) + chem_effective = 0.75 + if(alien != IS_DIONA) + M.heal_organ_damage(2 * removed * chem_effective, 0) // Herbal Bicaridine, less effective. Use alchemy to make it better. + +/datum/reagent/pokaleapaste + name = "Pokalea Paste" + id = "pokaleapaste" + description = "Ground up pokalea leaves." + reagent_state = REAGENT_LIQUID + color = "#684c34" + taste_description = "bitterness" + +/datum/reagent/pokaleapaste/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + if(alien == IS_DIONA) + return + if(M.bodytemperature > 310) + M.bodytemperature = max(310, M.bodytemperature - (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) // Herbal Leporazine, less effective. + else if(M.bodytemperature < 311) + M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) + +/datum/reagent/pyrrhleanectar + name = "Pyrrhlea Nectar" + id = "pyrrhleanectar" + description = "The nectar of a pyrrhlea flower." + reagent_state = REAGENT_LIQUID + color = "#f0d74c" + taste_description = "bitter nectar" + +/datum/reagent/pyrrhleanectar/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + if(alien != IS_DIONA) + M.add_chemical_effect(CE_STABLE, 7) // Herbal kelotane. Less effective + M.heal_organ_damage(0, 2 * removed) + +/datum/reagent/shimashpulp + name = "Shimash Pulp" + id = "shimashpulp" + description = "Pulp extracted from a shimash plant." + reagent_state = REAGENT_LIQUID + color = "#f2f0ef" + taste_description = "sour plant grit" + +/datum/reagent/shimashpulp/legacy_affect_blood(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + var/chem_effective = 1 + if(alien == IS_SLIME) + chem_effective = 0.75 + M.ceiling_chemical_effect(CE_PAINKILLER, 20 * chem_effective) //Herbal tramadol, much less effective. + +/datum/reagent/bonemeal + name = "Bonemeal" + id = "bonemeal" + description = "Ground up bones." + reagent_state = REAGENT_SOLID + color = "#f2f0ef" + taste_description = "gritty sand" + +/datum/reagent/catalyst + name = "Catalyst" + id = "catalyst" + description = "Semi-anomalous powder. Properties unknown." // Powdered Elder Stone, for use in more advanced alchemy. + reagent_state = REAGENT_SOLID + color = "#9D14DB" + taste_description = "forever" diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm index c083542d263..6c305353fd4 100644 --- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm @@ -1067,6 +1067,9 @@ * Now scannable! Removed with shockchems! */ +/datum/reagent/nanite + abstract_type = /datum/reagent/nanite + /datum/reagent/nanite/shredding name = "Shredding Nanites" id = "shredding_nanites" diff --git a/code/modules/reagents/chemistry/reagents/core/elements.dm b/code/modules/reagents/chemistry/reagents/core/elements.dm index cfee51c01a9..8bf5c7149d7 100644 --- a/code/modules/reagents/chemistry/reagents/core/elements.dm +++ b/code/modules/reagents/chemistry/reagents/core/elements.dm @@ -69,6 +69,10 @@ taste_description = "pennies" color = "#6E3B08" +/datum/reagent/copper/legacy_affect_ingest(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) + if(alien == IS_SCORI) + M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) + /datum/reagent/fluorine name = "Fluorine" id = "fluorine" @@ -108,9 +112,17 @@ color = "#353535" /datum/reagent/iron/legacy_affect_ingest(mob/living/carbon/M, alien, removed, datum/reagent_metabolism/metabolism) - if(alien != IS_DIONA) + if(alien != IS_DIONA && alien != IS_SCORI) M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) +/datum/reagent/lead + name = "Lead" + id = "lead" + description = "A particularly heavy metal." + taste_description = "metal" + reagent_state = REAGENT_SOLID + color = "#273956" + /datum/reagent/lithium name = "Lithium" id = "lithium" diff --git a/code/modules/roles/ghostroles/roles/ashlander.dm b/code/modules/roles/ghostroles/roles/ashlander.dm index 304528f3af4..08ceabe4425 100644 --- a/code/modules/roles/ghostroles/roles/ashlander.dm +++ b/code/modules/roles/ghostroles/roles/ashlander.dm @@ -89,7 +89,8 @@ /datum/crafting_recipe/goliathcowl, /datum/crafting_recipe/primitive_splint, /datum/crafting_recipe/bone_pipe, /datum/crafting_recipe/spark_striker, /datum/crafting_recipe/skull_mask, /datum/crafting_recipe/alchemy_bandolier, /datum/crafting_recipe/saddle_stormdrifter, /datum/crafting_recipe/ashlander_sandals, /datum/crafting_recipe/ashlander_wraps, /datum/crafting_recipe/musket_ashlander, /datum/crafting_recipe/flintlock_ashlander, /datum/crafting_recipe/drying_kiln, /datum/crafting_recipe/primitive_press, /datum/crafting_recipe/advanced_alchemy_station, - /datum/crafting_recipe/charcoal_stick, /datum/crafting_recipe/brick_press + /datum/crafting_recipe/charcoal_stick, /datum/crafting_recipe/brick_press, /datum/crafting_recipe/primitivesoap, /datum/crafting_recipe/condensedphlogiston, /datum/crafting_recipe/bitterash, + /datum/crafting_recipe/ritual_chalk ) /datum/ghostrole_instantiator/human/player_static/ashlander/GetOutfit(client/C, mob/M, list/params) diff --git a/code/modules/species/outsider/scori.dm b/code/modules/species/outsider/scori.dm index 60b54734f4c..f2c7814d653 100644 --- a/code/modules/species/outsider/scori.dm +++ b/code/modules/species/outsider/scori.dm @@ -24,6 +24,8 @@ base_color = "#373652" blood_color = "#3c6d45" + reagent_tag = IS_SCORI + max_age = 200 galactic_language = FALSE diff --git a/icons/mob/lavaland/lavaland_mobs.dmi b/icons/mob/lavaland/lavaland_mobs.dmi index 5d936508fdc..a15c6d10ac6 100644 Binary files a/icons/mob/lavaland/lavaland_mobs.dmi and b/icons/mob/lavaland/lavaland_mobs.dmi differ