diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 517c6d0931..dc3a3b36db 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -762,6 +762,7 @@ client if(H.set_species(new_species)) usr << "Set species of [H] to [H.species]." + H.regenerate_icons() else usr << "Failed! Something went wrong." diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm index bd7665c29e..b3be5ce053 100644 --- a/code/game/machinery/podmen.dm +++ b/code/game/machinery/podmen.dm @@ -122,7 +122,7 @@ Growing it to term with nothing injected will grab a ghost from the observers. * if(realName) podman.real_name = realName else - podman.real_name = "diona ([rand(100,999)])" + podman.real_name = "diona nymph ([rand(100,999)])" podman.dna.real_name = podman.real_name diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 41d7169d1e..32a1513e56 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -39,6 +39,69 @@ voice_name = "diona nymph" speak_emote = list("chirrups") ico = "nymph" + var/list/donors = list() + var/ready_evolve = 0 + +/mob/living/carbon/monkey/diona/verb/evolve() + + set category = "Diona" + set name = "Evolve" + set desc = "Grow to a more complex form." + + if(donors.len < 5) + src << "You are not yet ready for your growth..." + return + + if(reagents.get_reagent_amount("nutriment") < 5) + src << "You have not yet consumed enough to grow..." + return + + src.visible_message("\red [src] begins to shift and quiver, and erupts in a shower of shed bark and twigs!","\red You begin to shift and quiver, then erupt in a shower of shed bark and twigs, attaining your adult form!") + var/mob/living/carbon/human/adult = new(loc) + adult.set_species("Diona") + for(var/datum/language/L in languages) + adult.add_language(L.name) + adult.regenerate_icons() + + adult.ckey = src.ckey + del(src) + +/mob/living/carbon/monkey/diona/verb/steal_blood() + set category = "Diona" + set name = "Steal Blood" + set desc = "Take a blood sample from a suitable donor." + + var/list/choices = list() + for(var/mob/living/C in view(1,src)) + if(C.real_name != real_name + choices += C + + var/mob/living/M = input(src,"Who do you wish to take a sample from?") in null|choices + + if(!M || !src) return + + if(donors.Find(M.real_name)) + src << "\red That donor offers you nothing new." + return + + src.visible_message("\red [src] flicks out a feeler and neatly steals a sample of [M]'s blood.","\red You flick out a feeler and neatly steal a sample of [M]'s blood.") + donors += M.real_name + spawn(25) + update_progression() + +/mob/living/carbon/monkey/diona/proc/update_progression() + + if(!donors.len) + return + + if(donors.len == 5) + ready_evolve = 1 + src << "\green You feel ready to move on to your next stage of growth." + else if(donors.len == 3) + universal_speak = 1 + src << "\green You feel your awareness expand, and realize you know how to speak to the meat-creatures around you." + else + src << "\green The blood seeps into your small form, and you draw out the echoes of memories and personality from it, working them into your budding mind." /mob/living/carbon/monkey/New() var/datum/reagents/R = new/datum/reagents(1000)