diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index 5bde8a5cfc..70f03e80ab 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -6,36 +6,44 @@
nodamage = 1
check_armour = "energy"
- on_hit(var/atom/change)
- wabbajack(change)
+/obj/item/projectile/change/on_hit(var/atom/change)
+ wabbajack(change)
-
-/obj/item/projectile/change/proc/wabbajack (mob/M as mob in living_mob_list)
+/obj/item/projectile/change/proc/wabbajack(var/mob/M)
if(istype(M, /mob/living) && M.stat != DEAD)
- if(M.monkeyizing) return
- if(M.has_brain_worms()) return //Borer stuff - RR
-
- M.monkeyizing = 1
- M.canmove = 0
- M.icon = null
- M.overlays.Cut()
- M.invisibility = 101
+ if(M.monkeyizing)
+ return
+ if(M.has_brain_worms())
+ return //Borer stuff - RR
if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/Robot = M
- if(Robot.mmi) del(Robot.mmi)
+ if(Robot.mmi)
+ del(Robot.mmi)
else
for(var/obj/item/W in M)
if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something
del(W)
continue
- W.layer = initial(W.layer)
- W.loc = M.loc
- W.dropped(M)
+ M.drop_from_inventory(W)
var/mob/living/new_mob
+
+ var/options = list("robot", "slime")
+ for(var/t in all_species)
+ options += t
+ options -= "Xenomorph Queen"
+ options -= "Xenomorph"
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.species)
+ options -= H.species.name
+ else if(isrobot(M))
+ options -= "robot"
+ else if(isslime(M))
+ options -= "slime"
- var/randomize = pick("robot","slime","xeno","human")
+ var/randomize = pick(options)
switch(randomize)
if("robot")
new_mob = new /mob/living/silicon/robot(M.loc)
@@ -48,36 +56,42 @@
if("slime")
new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.universal_speak = 1
- if("xeno")
- var/alien_caste = pick("Hunter","Sentinel","Drone","Larva")
- new_mob = create_new_xenomorph(alien_caste,M.loc)
- new_mob.universal_speak = 1
- if("human")
- new_mob = new /mob/living/carbon/human(M.loc, pick(all_species))
- if(M.gender == MALE)
- new_mob.gender = MALE
- new_mob.name = pick(first_names_male)
- else
- new_mob.gender = FEMALE
- new_mob.name = pick(first_names_female)
- new_mob.name += " [pick(last_names)]"
- new_mob.real_name = new_mob.name
-
- var/datum/preferences/A = new() //Randomize appearance for the human
- A.randomize_appearance_for(new_mob)
else
- return
+ var/mob/living/carbon/human/H
+ if(ishuman(M))
+ H = M
+ else
+ new_mob = new /mob/living/carbon/human(M.loc)
+ H = new_mob
- for (var/obj/effect/proc_holder/spell/S in M.spell_list)
- new_mob.spell_list += new S.type
+ if(M.gender == MALE)
+ H.gender = MALE
+ H.name = pick(first_names_male)
+ else
+ H.gender = FEMALE
+ H.name = pick(first_names_female)
+ H.name += " [pick(last_names)]"
+ H.real_name = H.name
- new_mob.a_intent = "hurt"
- if(M.mind)
- M.mind.transfer_to(new_mob)
+ H.set_species(randomize)
+ H.universal_speak = 1
+ var/datum/preferences/A = new() //Randomize appearance for the human
+ A.randomize_appearance_for(H)
+
+ if(new_mob)
+ for (var/obj/effect/proc_holder/spell/S in M.spell_list)
+ new_mob.spell_list += new S.type
+
+ new_mob.a_intent = "hurt"
+ if(M.mind)
+ M.mind.transfer_to(new_mob)
+ else
+ new_mob.key = M.key
+
+ new_mob << "Your form morphs into that of \a [lowertext(randomize)]."
+
+ del(M)
+ return
else
- new_mob.key = M.key
-
- new_mob << "Your form morphs into that of a [randomize]."
-
- del(M)
- return new_mob
+ M << "Your form morphs into that of \a [lowertext(randomize)]."
+ return
\ No newline at end of file