diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 64081a77e4..b2f05e6747 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -68,16 +68,15 @@
if (ismovableatom(M))
if(do_teleport(M, com.target, channel = TELEPORT_CHANNEL_BLUESPACE))
use_power(5000)
- if(!calibrated && prob(30 - ((accurate) * 10))) //oh dear a problem
- log_game("[M] ([key_name(M)]) was turned into a fly person")
- if(ishuman(M))//don't remove people from the round randomly you jerks
- var/mob/living/carbon/human/human = M
- if(human.dna && human.dna.species.id == "human")
- to_chat(M, "You hear a buzzing in your ears.")
- human.set_species(/datum/species/fly)
+ if(!calibrated && iscarbon(M) && prob(30 - ((accurate) * 10))) //oh dear a problem
+ var/mob/living/carbon/C = M
+ if(C.dna?.species && C.dna.species.id != "fly" && !HAS_TRAIT(C, TRAIT_RADIMMUNE))
+ to_chat(C, "You hear a buzzing in your ears.")
+ C.set_species(/datum/species/fly)
+ log_game("[C] ([key_name(C)]) was turned into a fly person")
+ C.apply_effect((rand(120 - accurate * 40, 180 - accurate * 60)), EFFECT_IRRADIATE, 0)
- human.apply_effect((rand(120 - accurate * 40, 180 - accurate * 60)), EFFECT_IRRADIATE, 0)
- calibrated = 0
+ calibrated = FALSE
return
/obj/machinery/teleport/hub/update_icon()