diff --git a/code/datums/disease.dm b/code/datums/disease.dm index a7c59cc3dea..af7746eede5 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -287,7 +287,7 @@ to null does not delete the object itself. Thank you. var/check_range = AIRBORNE//defaults to airborne - range 4 - if(spread_type != AIRBORNE) + if(spread_type != AIRBORNE && spread_type != SPECIAL) check_range = 0 // everything else, like infect-on-contact things, only infect things on top of it for(var/mob/living/carbon/M in oviewers(check_range, source)) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 9560b8b0702..e2f3470fd5e 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -86,19 +86,23 @@ if(!istype(C, /mob/living/carbon/metroid)) // does not eat his bros! BROSBROSBROSBROS if(C.stat != 2 && C.health > 0) // chooses only healthy targets var/notarget = 0 + if(istype(C, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = C + if(H.mutantrace == "metroid") + notarget = 1 // don't hurt metroidmen! + if(!C.canmove) for(var/mob/living/carbon/metroid/M in view(1,C)) if(M.Victim == C) notarget = 1 break // They don't go for prey already being eaten - - if(!notarget) targets += C + if((hungry || starving) && targets.len > 0) if(!istype(src, /mob/living/carbon/metroid/adult)) if(!starving)