diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 78433e8dbdad..a1db3d34c6a9 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -119,6 +119,7 @@
to_chat(H, "You were interupted!")
return
ADD_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
+ ADD_TRAIT(H,TRAIT_PUSHIMMUNE,SPECIES_TRAIT)
to_chat(H, "You root into the ground and begin to feed.")
while(do_after(H, E.root_time, target = H))
@@ -132,10 +133,7 @@
if(stomach.crystal_charge > charge_limit)
stomach.crystal_charge = ELZUOSE_CHARGE_FULL
H.visible_message("[H] is digging out of the ground.","You finish rooting and begin digging yourself out.","You hear digging.")
- if(do_after(H, E.dig_time,target = H))
- to_chat(H, "You finish digging yourself out.")
- REMOVE_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
- return
+ E.digout(H, E)
else
to_chat(H, "You can't recieve charge from rooting!")
break
@@ -151,16 +149,22 @@
H.apply_damage(8,BRUTE,BODY_ZONE_R_LEG)
H.say("*scream")
REMOVE_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
+ REMOVE_TRAIT(H,TRAIT_PUSHIMMUNE,SPECIES_TRAIT)
return
- to_chat(H, "Your rooting was interupted and you begin digging yourself out.")
- if(do_after(H, E.dig_time,target = H))
- H.visible_message("[H] is digging out of the ground.","You finish rooting and begin digging yourself out.","You hear digging.")
- REMOVE_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
- return
+ H.visible_message("[H] is digging out of the ground.","Your rooting was interupted and you begin digging yourself out.","You hear digging.")
+ E.digout(H, E)
REMOVE_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
+ REMOVE_TRAIT(H,TRAIT_PUSHIMMUNE,SPECIES_TRAIT)
return
+/datum/species/elzuose/proc/digout(mob/living/carbon/human/H, datum/species/elzuose/E)
+ if(do_after(H, E.dig_time,target = H))
+ to_chat(H, "You finish digging yourself out.")
+ REMOVE_TRAIT(H,TRAIT_IMMOBILIZED,SPECIES_TRAIT)
+ REMOVE_TRAIT(H,TRAIT_PUSHIMMUNE,SPECIES_TRAIT)
+ return
+
/datum/action/innate/root/IsAvailable()
if(..())
var/mob/living/carbon/human/H = owner