From b5b31f46916a8756433400a57e878be9d3ef7de0 Mon Sep 17 00:00:00 2001 From: GySgtMurphy <79298976+GySgtMurphy@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:49:20 -0400 Subject: [PATCH] Scori Alchemy update (#7601) --- citadel.dme | 2 + code/__DEFINES/chemistry.dm | 1 + code/__DEFINES/recipes.dm | 1 + .../recipe/crafting_recipes/recipes_misc.dm | 2 +- .../recipe/crafting_recipes/recipes_primal.dm | 67 ++++++-- .../objects/items/stacks/subtypes/material.dm | 12 ++ code/game/objects/mob_spawner.dm | 15 ++ code/game/objects/structures/ashlander.dm | 22 +++ code/modules/food/food/snacks/meat.dm | 10 ++ code/modules/hydroponics/seed_datums.dm | 12 +- .../materials/definitions/organic/shell.dm | 28 ++++ code/modules/mob/holder.dm | 4 + .../simple_mob/subtypes/lavaland/goliath.dm | 4 +- .../subtypes/lavaland/sandsifter.dm | 63 +++++++ code/modules/reagents/chemistry/machinery.dm | 13 ++ .../chemistry/reactions/Drink-Recipes.dm | 8 + .../chemistry/reactions/Misc-Recipes.dm | 128 +++++++++++++- .../Chemistry-Reagents-Food-Drinks.dm | 37 +++++ .../reagents/Chemistry-Reagents-Other.dm | 157 ++++++++++++++++++ .../reagents/Chemistry-Reagents-Toxins.dm | 3 + .../chemistry/reagents/core/elements.dm | 14 +- .../roles/ghostroles/roles/ashlander.dm | 3 +- code/modules/species/outsider/scori.dm | 2 + icons/mob/lavaland/lavaland_mobs.dmi | Bin 175393 -> 176226 bytes 24 files changed, 578 insertions(+), 30 deletions(-) create mode 100644 code/modules/materials/definitions/organic/shell.dm create mode 100644 code/modules/mob/living/simple_mob/subtypes/lavaland/sandsifter.dm 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 5d936508fdc58e27d513f3dcf2f3bea672a0908e..a15c6d10ac612b86769a7372298b2febf670b76a 100644 GIT binary patch delta 18866 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