diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index d57940852f6..f1aa5bea66b 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -182,7 +182,12 @@ /mob/living/carbon/slime/proc/handle_chemicals_in_body() if(reagents) reagents.metabolize(src) - + if (reagents.get_reagent_amount("plasma")>=5) + mutation_chance = min(mutation_chance + 5,50) //Prevents mutation chance going >50% + reagents.remove_reagent("plasma", 5) + if (reagents.get_reagent_amount("inaprovaline")>=5) + mutation_chance = max(mutation_chance - 5,0) //Prevents muation chance going <0% + reagents.remove_reagent("inaprovaline", 5) src.updatehealth() return //TODO: DEFERRED diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index b7146e208a4..cb5be464681 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -534,14 +534,23 @@ return /mob/living/carbon/slime/attackby(obj/item/W, mob/user) - if(W.force > 0) + if(istype(W,/obj/item/stack/sheet/mineral/plasma)) //Lets you feed slimes plasma. + if (user in Friends) + ++Friends[user] + else + Friends[user] = 1 + user << "You feed the slime the plasma. It chirps happily." + var/obj/item/stack/sheet/mineral/plasma/S = W + S.use(1) + return + else if(W.force > 0) attacked += 10 if(prob(25)) user << "[W] passes right through [src]!" return if(Discipline && prob(50)) // wow, buddy, why am I getting attacked?? Discipline = 0 - if(W.force >= 3) + else if(W.force >= 3) if(is_adult) if(prob(5 + round(W.force/2))) if(Victim || Target) @@ -613,7 +622,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 Target = null ++Discipline return - + /mob/living/carbon/slime/can_use_vents() if(Victim) return "You cannot ventcrawl while feeding." diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 6a38b825a35..500703563e8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1032,6 +1032,18 @@ datum S.loc = get_turf_loc(holder.my_atom) + slimeinaprov + name = "Slime Inaprovaline" + id = "m_inaprov" + result = "inaprovaline" + required_reagents = list("water" = 5) + result_amount = 3 + required_other = 1 + required_container = /obj/item/slime_extract/grey + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + + slimemonkey name = "Slime Monkey" id = "m_monkey" @@ -1119,6 +1131,59 @@ datum // for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) // O.show_message(text("\red The slime core fizzles disappointingly,"), 1) + + slimecritlesser + name = "Slime Crit Lesser" + id = "m_tele3" + result = null + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 + on_reaction(var/datum/reagents/holder) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("The slime extract begins to vibrate violently !"), 1) + spawn(50) + + if(holder && holder.my_atom) + + var/blocked = list(/mob/living/simple_animal/hostile, + /mob/living/simple_animal/hostile/pirate, + /mob/living/simple_animal/hostile/pirate/ranged, + /mob/living/simple_animal/hostile/russian, + /mob/living/simple_animal/hostile/russian/ranged, + /mob/living/simple_animal/hostile/syndicate, + /mob/living/simple_animal/hostile/syndicate/melee, + /mob/living/simple_animal/hostile/syndicate/melee/space, + /mob/living/simple_animal/hostile/syndicate/ranged, + /mob/living/simple_animal/hostile/syndicate/ranged/space, + /mob/living/simple_animal/hostile/alien/queen/large, + /mob/living/simple_animal/hostile/retaliate, + /mob/living/simple_animal/hostile/retaliate/clown, + /mob/living/simple_animal/hostile/mushroom, + /mob/living/simple_animal/hostile/asteroid, + /mob/living/simple_animal/hostile/asteroid/basilisk, + /mob/living/simple_animal/hostile/asteroid/goldgrub, + /mob/living/simple_animal/hostile/asteroid/goliath, + /mob/living/simple_animal/hostile/asteroid/hivelord, + /mob/living/simple_animal/hostile/asteroid/hivelordbrood, + /mob/living/simple_animal/hostile/carp/holocarp, + /mob/living/simple_animal/hostile/mining_drone + )//exclusion list for things you don't want the reaction to create. + var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + var/chosen = pick(critters) + var/mob/living/simple_animal/hostile/C = new chosen + C.faction |= "neutral" + C.loc = get_turf(holder.my_atom) + //Silver slimebork name = "Slime Bork"