diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 904803ff26c..9dc3ab4cfd4 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -147,7 +147,7 @@ temp_change = (temperature - current) return temp_change -/mob/living/simple_animal/slime/handle_chemicals_in_body() +/*/mob/living/simple_animal/slime/handle_chemicals_in_body() if(reagents) reagents.metabolize(src) @@ -159,7 +159,7 @@ mutation_chance = max(mutation_chance - 5,0) //Prevents muation chance going <0% reagents.remove_reagent("epinephrine", 5) updatehealth() - +*/ /mob/living/simple_animal/slime/handle_regular_status_updates() if(..()) diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index b6f4ed34b86..3b1df681f67 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -191,6 +191,7 @@ if(i != 1) step_away(M,src) M.Friends = Friends.Copy() babies += M + M.mutation_chance = mutation_chance+(rand(-5,5)) feedback_add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]") var/mob/living/simple_animal/slime/new_slime = pick(babies) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 7dd50a1008d..9ce6e40676e 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -40,7 +40,7 @@ status_flags = CANPARALYSE|CANPUSH var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside - var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35 + var/mutation_chance = 27 // Chance of mutating, should be between 25 and 35 var/powerlevel = 0 // 1-10 controls how much electricity they are generating var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces @@ -61,6 +61,7 @@ var/list/speech_buffer = list() // Last phrase said near it and person who said it var/mood = "" // To show its face + var/mutator_used = 0 //So you can't shove a dozen mutators into a single slime ///////////TIME FOR SUBSPECIES @@ -80,7 +81,6 @@ icon_dead = "[icon_state] dead" real_name = name slime_mutation = mutation_table(colour) - mutation_chance = rand(25, 35) var/sanitizedcolour = replacetext(colour, " ", "") coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") ..() diff --git a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm index cf323dd09e8..be029b2220a 100644 --- a/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm +++ b/code/modules/reagents/Chemistry-Recipes/Slime_extracts.dm @@ -218,6 +218,23 @@ /datum/chemical_reaction/slimefrost/on_reaction(var/datum/reagents/holder) feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + +/datum/chemical_reaction/slimestabilizer + name = "Slime Stabilizer" + id = "m_slimestabilizer" + result = null + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/blue + required_other = 1 + +/datum/chemical_reaction/slimestabilizer/on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/item/weapon/slimestabilizer/P = new /obj/item/weapon/slimestabilizer + P.loc = get_turf(holder.my_atom) + + + //Dark Blue /datum/chemical_reaction/slimefreeze name = "Slime Freeze" @@ -363,7 +380,7 @@ P.loc = get_turf(holder.my_atom) //Red -/datum/chemical_reaction/slimeglycerol +/*/datum/chemical_reaction/slimeglycerol name = "Slime Glycerol" id = "m_glycerol" result = "glycerol" @@ -374,7 +391,21 @@ /datum/chemical_reaction/slimeglycerol/on_reaction(var/datum/reagents/holder) feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") +*/ +/datum/chemical_reaction/slimemutator + name = "Slime Mutator" + id = "m_slimemutator" + result = null + required_reagents = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/red + required_other = 1 + +/datum/chemical_reaction/slimemutator/on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/item/weapon/slimemutator/P = new /obj/item/weapon/slimemutator + P.loc = get_turf(holder.my_atom) /datum/chemical_reaction/slimebloodlust name = "Bloodlust" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index f054bbb6867..7447861c0c8 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -236,6 +236,13 @@ M.cores = 3 qdel(src) + +/obj/item/weapon/slimesteroid3 + name = "slime steroid" + desc = "A potent chemical mix that will cause a slime to generate more extract." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + /obj/item/weapon/slimesteroid2 name = "extract enhancer" desc = "A potent chemical mix that will give a slime extract three uses." @@ -256,6 +263,58 @@ qdel(src)*/ +/obj/item/weapon/slimestabilizer + name = "slime stabilizer" + desc = "A potent chemical mix that will reduce the chance of a slime mutating." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle15" + +/obj/item/weapon/slimestabilizer/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob) + if(!isslime(M)) + user << " The stabilizer only works on baby slimes!" + return ..() + if(M.stat) + user << " The slime is dead!" + return..() + if(M.mutation_chance == 0) + user <<" The slime already has no chance of mutating!" + return..() + + user <<"You feed the slime the stabilizer. It is now less likely to mutate." + M.mutation_chance -= 15 + if(M.mutation_chance < 0) + M.mutation_chance = 0 + qdel(src) + +/obj/item/weapon/slimemutator + name = "slime mutator" + desc = "A potent chemical mix that will increase the chance of a slime mutating." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle3" + +/obj/item/weapon/slimemutator/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob) + if(!isslime(M)) + user << " The mutator only works on baby slimes!" + return ..() + if(M.stat) + user << " The slime is dead!" + return..() + if(M.mutator_used == 1) + user << " This slime has already consumed a mutator, any more would be far too unstable!" + return..() + if(M.mutation_chance == 100) + user <<" The slime is already guaranteed to mutate!" + return..() + + user <<"You feed the slime the mutator. It is now more likely to mutate." + M.mutation_chance += 5 + if(M.mutation_chance < 0) + M.mutation_chance = 0 + M.mutator_used = 1 + qdel(src) + + + ////////Adamantine Golem stuff I dunno where else to put it // This will eventually be removed.