diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index 676aaac977b..d6ebe8d9591 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -29,162 +29,26 @@
if("monkey")
if (M.monkeyizing)
return
- M.update_clothing()
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.invisibility = 101
- var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( M.loc )
- O.name = "monkey"
- if (M.client)
- M.client.mob = O
- if(M.mind)
- M.mind.transfer_to(O)
- O.a_intent = "hurt"
- O.universal_speak = 1
- O << "You are now a monkey."
- del(M)
- return O
+ if(istype(M,/mob/carbon/living/human))
+ M:monkeyize()
if("robot")
if (M.monkeyizing)
return
- M.update_clothing()
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.invisibility = 101
- if(M.client)
- M.client.screen -= M.hud_used.contents
- M.client.screen -= M.hud_used.adding
- M.client.screen -= M.hud_used.mon_blo
- M.client.screen -= list( M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
- M.client.screen -= list( M.zone_sel, M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
-
- var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( M.loc )
- O.cell = new(O)
- O.cell.maxcharge = 7500
- O.cell.charge = 7500
- O.gender = M.gender
- O.invisibility = 0
- O.name = "Cyborg"
- O.real_name = "Cyborg"
- if (M.mind)
- M.mind.transfer_to(O)
- if (M.mind.assigned_role == "Cyborg")
- M.mind.original = O
- else if (M.mind.special_role) O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
- else
- M.mind = new /datum/mind( )
- M.mind.key = M.key
- M.mind.current = O
- M.mind.original = O
- M.mind.transfer_to(O)
-
- if(!(O.mind in ticker.minds))
- ticker.minds += O.mind//Adds them to regular mind list.
-
- O.loc = loc
- O << "You are playing a Robot. A Robot can interact with most electronic objects in its view point."
- O << "You must follow the laws that the AI has. You are the AI's assistant to the station basically."
- O << "To use something, simply double-click it."
- O << {"Use say ":s to speak to fellow cyborgs and the AI through binary."}
-
- O.job = "Cyborg"
-
- O.mmi = new /obj/item/device/mmi(O)
- O.mmi.transfer_identity(M)//Does not transfer key/client.
- del(M)
- return O
+ if(istype(M,/mob/carbon/living/human))
+ M:Robotize()
if("metroid")
if (M.monkeyizing)
return
- M.update_clothing()
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.invisibility = 101
- if(prob(50))
- var/mob/living/carbon/metroid/adult/new_metroid = new /mob/living/carbon/metroid/adult (M.loc)
- if (M.client)
- M.client.mob = new_metroid
- if(M.mind)
- M.mind.transfer_to(new_metroid)
-
- new_metroid.a_intent = "hurt"
- new_metroid << "You are now an adult Metroid."
- new_metroid.universal_speak = 1
- del(M)
- return new_metroid
- else
- var/mob/living/carbon/metroid/new_metroid = new /mob/living/carbon/metroid (M.loc)
- if (M.client)
- M.client.mob = new_metroid
- if(M.mind)
- M.mind.transfer_to(new_metroid)
- new_metroid.a_intent = "hurt"
- new_metroid.universal_speak = 1
- new_metroid << "You are now a baby Metroid."
- del(M)
- return new_metroid
+ if(istype(M,/mob/carbon/living/human))
+ M:Metroidize()
if("alien")
if (M.monkeyizing)
return
- M.update_clothing()
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.invisibility = 101
- var/alien_caste = pick("Hunter","Sentinel","Drone")
- var/mob/living/carbon/alien/humanoid/new_xeno
- switch(alien_caste)
- if("Hunter")
- new_xeno = new /mob/living/carbon/alien/humanoid/hunter (M.loc)
- if("Sentinel")
- new_xeno = new /mob/living/carbon/alien/humanoid/sentinel (M.loc)
- if("Drone")
- new_xeno = new /mob/living/carbon/alien/humanoid/drone (M.loc)
- if (M.client)
- M.client.mob = new_xeno
- if(M.mind)
- M.mind.transfer_to(new_xeno)
- new_xeno.a_intent = "hurt"
- new_xeno.universal_speak = 1
- new_xeno << "You are now an alien."
- del(M)
- return new_xeno
+ Alienize
+ if(istype(M,/mob/carbon/living/human))
+ M:Alienize()
if("human")
if (M.monkeyizing)
return
- M.update_clothing()
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.invisibility = 101
- var/mob/living/carbon/human/O = new /mob/living/carbon/human( M.loc )
-
- var/first = pick(first_names_male)
- var/last = pick(last_names)
- O.name = "[first] [last]"
- O.real_name = "[first] [last]"
- var/race = pick("lizard","golem","metroid","plant","normal")
- switch(race)
- if("lizard")
- O.mutantrace = "lizard"
- if("golem")
- O.mutantrace = "golem"
- if("metroid")
- O.mutantrace = "metroid"
- if("plant")
- O.mutantrace = "plant"
- if("normal")
- O.mutantrace = ""
- if (M.client)
- M.client.mob = O
- if(M.mind)
- M.mind.transfer_to(O)
- O.a_intent = "hurt"
- O << "You are now a human."
- del(M)
- return O
return