diff --git a/code/modules/chemical/Chemistry-Recipes.dm b/code/modules/chemical/Chemistry-Recipes.dm index 89f116aee8d..617cfe5bdad 100644 --- a/code/modules/chemical/Chemistry-Recipes.dm +++ b/code/modules/chemical/Chemistry-Recipes.dm @@ -660,9 +660,55 @@ datum sleep(20) M.client.screen -= blueeffect del(blueeffect) + metroidcrit + name = "Metroid Crit" + id = "m_tele" + result = null + required_reagents = list("cryoxadone" = 1, "plasma" = 1, "mutagen" = 1, "uranium" = 1, "blood" = 1) + result_amount = 1 + required_container = /obj/item/metroid_core + required_other = 4 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/list/critters = typesof(/obj/critter) - /obj/critter // list of possible critters + playsound(get_turf_loc(holder.my_atom), 'phasein.ogg', 100, 1) + for(var/mob/living/carbon/M in viewers(get_turf_loc(holder.my_atom), null)) + flick("e_flash", M.flash) + + for(var/i = 1, i <= created_volume, i++) + var/chosen = pick(critters) + var/obj/critter/C = new chosen + C.loc = get_turf_loc(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(C, pick(NORTH,SOUTH,EAST,WEST)) + metroidbork + name = "Metroid Bork" + id = "m_tele" + result = null + required_reagents = list("sugar" = 1, "water" = 1) + result_amount = 2 + required_container = /obj/item/metroid_core + required_other = 4 + on_reaction(var/datum/reagents/holder, var/created_volume) + + var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks + // BORK BORK BORK + + playsound(get_turf_loc(holder.my_atom), 'phasein.ogg', 100, 1) + + for(var/mob/living/carbon/M in viewers(get_turf_loc(holder.my_atom), null)) + flick("e_flash", M.flash) + + for(var/i = 1, i <= created_volume, i++) + var/chosen = pick(borks) + var/obj/B = new chosen + B.loc = get_turf_loc(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(B, pick(NORTH,SOUTH,EAST,WEST)) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index cf74e60080d..5df8d7d35d2 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -155,8 +155,6 @@ - - if((hungry || starving) && targets.len > 0) if(!istype(src, /mob/living/carbon/metroid/adult)) if(!starving) @@ -216,7 +214,7 @@ AIprocess() // the master AI process - if(AIproc) return + if(AIproc || stat == 2) return var/hungry = 0 var/starving = 0 @@ -476,6 +474,9 @@ handle_nutrition() + + if(stat == 2) return // haha wow + if(prob(20)) if(istype(src, /mob/living/carbon/metroid/adult)) nutrition-=rand(4,6) else nutrition-=rand(2,3) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index e38b557427f..136487e4695 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -217,6 +217,11 @@ if(amount_grown >= 10) switch(input("Are you absolutely sure you want to reproduce? Your current body will cease to be, but your consciousness will be transferred into a produced metroid.") in list("Yes","No")) if("Yes") + + if(stat) + src << "I must be conscious to do this..." + return + var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4) var/list/babies = list() for(var/i=1,i<=number,i++) // reproduce (has a small chance of producing 3 or 4 offspring)