diff --git a/code/datums/mapgen/Cavegens/IcemoonCaves.dm b/code/datums/mapgen/Cavegens/IcemoonCaves.dm index 47546578361..153b0c22e80 100644 --- a/code/datums/mapgen/Cavegens/IcemoonCaves.dm +++ b/code/datums/mapgen/Cavegens/IcemoonCaves.dm @@ -26,11 +26,12 @@ ///Note that this spawn list is also in the lavaland generator weighted_feature_spawn_list = list( - /obj/structure/geyser/hollowwater = 10, - /obj/structure/geyser/plasma_oxide = 10, - /obj/structure/geyser/protozine = 10, + /obj/structure/geyser/hollowwater = 8, + /obj/structure/geyser/plasma_oxide = 8, + /obj/structure/geyser/protozine = 8, /obj/structure/geyser/random = 2, - /obj/structure/geyser/wittel = 10, + /obj/structure/geyser/wittel = 8, + /obj/structure/geyser/chiral_buffer = 8, /obj/structure/ore_vent/boss/icebox = 1, ) @@ -45,11 +46,12 @@ feature_spawn_chance = 0.15 weighted_feature_spawn_list = list( - /obj/structure/geyser/hollowwater = 10, - /obj/structure/geyser/plasma_oxide = 10, - /obj/structure/geyser/protozine = 10, + /obj/structure/geyser/hollowwater = 8, + /obj/structure/geyser/plasma_oxide = 8, + /obj/structure/geyser/protozine = 8, /obj/structure/geyser/random = 2, - /obj/structure/geyser/wittel = 10, + /obj/structure/geyser/wittel = 8, + /obj/structure/geyser/chiral_buffer = 8, ) weighted_flora_spawn_list = list( diff --git a/code/datums/mapgen/Cavegens/LavalandGenerator.dm b/code/datums/mapgen/Cavegens/LavalandGenerator.dm index 47b62ce4a1b..be4dc3710f2 100644 --- a/code/datums/mapgen/Cavegens/LavalandGenerator.dm +++ b/code/datums/mapgen/Cavegens/LavalandGenerator.dm @@ -29,11 +29,12 @@ ///Note that this spawn list is also in the icemoon generator weighted_feature_spawn_list = list( - /obj/structure/geyser/hollowwater = 10, - /obj/structure/geyser/plasma_oxide = 10, - /obj/structure/geyser/protozine = 10, + /obj/structure/geyser/hollowwater = 8, + /obj/structure/geyser/plasma_oxide = 8, + /obj/structure/geyser/protozine = 8, /obj/structure/geyser/random = 2, - /obj/structure/geyser/wittel = 10, + /obj/structure/geyser/wittel = 8, + /obj/structure/geyser/chiral_buffer = 8, /obj/structure/ore_vent/boss = 1, ) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index a34bcb10a43..bbbc8da76e4 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -108,6 +108,12 @@ reagent_id = /datum/reagent/water/hollowwater true_name = "hollow water geyser" +/obj/structure/geyser/chiral_buffer + reagent_id = /datum/reagent/reaction_agent/inversing_buffer + point_value = 250 + true_name = "chiral inversing geyser" + discovery_message = "It's a rare chiral inversing geyser! This could be very powerful in the right hands... " + /obj/structure/geyser/random point_value = 500 diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index 2cae5797fa2..13a08798af9 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -226,3 +226,11 @@ /obj/item/pestle, ) crate_name = "organ growing kit" + +/datum/supply_pack/medical/chiral_inversing_buffer + name = "Chiral Inversing Buffer Crate" + desc = "A crate containing a rare sample of an inversing buffer. \ + It can transform impure reagents into their inverse counterparts when the right conditions are met." + cost = CARGO_CRATE_VALUE * 3 + contains = list(/obj/item/reagent_containers/cup/bottle/inversing_buffer) + crate_name = "chiral inversing buffer crate" diff --git a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm index 2a7ce91cc8d..a6cc7b7b84b 100644 --- a/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/reaction_agents_reagents.dm @@ -144,3 +144,31 @@ holder.update_total() #undef SPEED_REAGENT_STRENGTH + +/datum/reagent/reaction_agent/inversing_buffer + name = "Chiral Inversing Buffer" + description = "This reagent will consume itself and convert impure reagents into their inversed counterparts. Amount varies based on volume of added buffer." + ph = 7 + color = "#b60046" + +/datum/reagent/reaction_agent/inversing_buffer/intercept_reagents_transfer(datum/reagents/target, amount, copy_only) + . = ..() + if(!.) + return + + for(var/_reagent in target.reagent_list) + var/datum/reagent/reaction_agent/reagent = _reagent + if(reagent.purity <= reagent.inverse_chem_val) + target.my_atom.audible_message(span_warning("The beaker goes into a rolling boil as the contents begin inversing!")) + playsound(target.my_atom, 'sound/effects/chemistry/catalyst.ogg', 50, TRUE) + var/converted = min(reagent.volume, amount * 10)//Converts up to 10 units of reagent per 1 unit of inversing buffer. + if(converted > 0) + target.remove_reagent(reagent.type, converted, safety = FALSE) + target.add_reagent(reagent.inverse_chem, converted, FALSE, added_purity = reagent.get_inverse_purity(reagent.purity)) + volume -= amount + holder.update_total() + break + else + target.my_atom.audible_message(span_warning("The buffer quietly fizzles away with no effect.")) + volume -= amount + holder.update_total() diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index ac50cd08a38..fc38aa6f37c 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -261,6 +261,11 @@ desc = "A small bottle of basic buffer." list_reagents = list(/datum/reagent/reaction_agent/basic_buffer = 30) +/obj/item/reagent_containers/cup/bottle/inversing_buffer + name = "Chiral inversing buffer bottle" + desc = "A small bottle of chiral inversing buffer." + list_reagents = list(/datum/reagent/reaction_agent/inversing_buffer = 30) + /obj/item/reagent_containers/cup/bottle/romerol name = "romerol bottle" desc = "A small bottle of Romerol. The REAL zombie powder."