diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm
index fb03d42ba63..b877215294c 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm
@@ -1,4 +1,4 @@
-/obj/item/organ/xenos/alien_embryo
+/obj/item/organ/parasite/alien_embryo
name = "alien embryo"
desc = "All slimy and yuck."
icon = 'icons/mob/alien.dmi'
@@ -6,72 +6,72 @@
parent_organ = "chest"
organ_tag = "alien embryo"
origin_tech = list(TECH_BIO = 5)
- var/stage = 0
+ stage_interval = 200
-/obj/item/organ/xenos/alien_embryo/Destroy()
+/obj/item/organ/parasite/alien_embryo/Destroy()
if(owner)
owner.status_flags &= ~(XENO_HOST)
RemoveInfectionImages(owner)
return ..()
-/obj/item/organ/xenos/alien_embryo/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
+/obj/item/organ/parasite/alien_embryo/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
..(target, affected)
if(owner && ishuman(owner))
START_PROCESSING(SSprocessing, src)
AddInfectionImages(owner)
-/obj/item/organ/xenos/alien_embryo/removed(var/mob/living/user)
+/obj/item/organ/parasite/alien_embryo/removed(var/mob/living/user)
if(owner)
owner.status_flags &= ~(XENO_HOST)
RemoveInfectionImages(owner)
..(user)
+/obj/item/organ/parasite/alien_embryo/stage_effect()
+ RefreshInfectionImage(owner)
+ return
-/obj/item/organ/xenos/alien_embryo/process()
+/obj/item/organ/parasite/alien_embryo/process()
..()
if(!owner)
return
- if(stage < 5 && prob(3))
- stage++
- RefreshInfectionImage(owner)
+ if(stage >= 2)
+ if(prob(1))
+ owner.emote("sneeze")
+ if(prob(1))
+ owner.emote("cough")
+ if(prob(1))
+ owner << "Your throat feels sore."
+ if(prob(1))
+ owner << "Mucous runs down the back of your throat."
- switch(stage)
- if(2, 3)
- if(prob(1))
- owner.emote("sneeze")
- if(prob(1))
- owner.emote("cough")
- if(prob(1))
- owner << "Your throat feels sore."
- if(prob(1))
- owner << "Mucous runs down the back of your throat."
- if(4)
- if(prob(1))
- owner.emote("sneeze")
- if(prob(1))
- owner.emote("cough")
- if(prob(2))
- owner << "Your muscles ache."
- if(prob(20))
- owner.take_organ_damage(1)
- if(prob(2))
- owner << "Your stomach hurts."
- if(prob(20))
- owner.adjustToxLoss(1)
- owner.updatehealth()
- if(5)
- owner << "You feel something tearing its way out of your stomach!"
- owner.adjustToxLoss(10)
- owner.updatehealth()
- if(prob(50))
- AttemptGrow()
+ if(stage >= 3)
+ if(prob(1))
+ owner.emote("sneeze")
+ if(prob(1))
+ owner.emote("cough")
+ if(prob(2))
+ owner << "Your muscles ache."
+ if(prob(20))
+ owner.take_organ_damage(1)
+ if(prob(2))
+ owner << "Your stomach hurts."
+ if(prob(20))
+ owner.adjustToxLoss(1)
+ owner.updatehealth()
-/obj/item/organ/xenos/alien_embryo/proc/AttemptGrow()
+ if(stage >= 4)
+ owner << "You feel something tearing its way out of your stomach!"
+ owner.adjustToxLoss(10)
+ owner.updatehealth()
+ if(prob(50))
+ AttemptGrow()
+
+/obj/item/organ/parasite/alien_embryo/proc/AttemptGrow()
var/list/candidates = get_alien_candidates()
var/picked = null
@@ -99,7 +99,7 @@
Proc: RefreshInfectionImage()
Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens.
----------------------------------------*/
-/obj/item/organ/xenos/alien_embryo/proc/RefreshInfectionImage()
+/obj/item/organ/parasite/alien_embryo/proc/RefreshInfectionImage()
for(var/mob/living/carbon/alien in player_list)
@@ -120,7 +120,7 @@ Des: Removes all infection images from aliens and places an infection image on a
Proc: AddInfectionImages(C)
Des: Checks if the passed mob (C) is infected with the alien egg, then gives each alien client an infected image at C.
----------------------------------------*/
-/obj/item/organ/xenos/alien_embryo/proc/AddInfectionImages(var/mob/living/C)
+/obj/item/organ/parasite/alien_embryo/proc/AddInfectionImages(var/mob/living/C)
if(C)
for(var/mob/living/carbon/alien in player_list)
@@ -138,7 +138,7 @@ Proc: RemoveInfectionImage(C)
Des: Removes the alien infection image from all aliens in the world located in passed mob (C).
----------------------------------------*/
-/obj/item/organ/xenos/alien_embryo/proc/RemoveInfectionImages(var/mob/living/C)
+/obj/item/organ/parasite/alien_embryo/proc/RemoveInfectionImages(var/mob/living/C)
if(C)
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm
index 4a756ddcbd7..0dfebde0254 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm
@@ -117,7 +117,7 @@ var/const/MAX_ACTIVE_TIME = 400
return
var/mob/living/carbon/human/C = M
- if(istype(C) && locate(/obj/item/organ/xenos/alien_embryo) in C.internal_organs)
+ if(istype(C) && locate(/obj/item/organ/parasite/alien_embryo) in C.internal_organs)
return
if(locate(/obj/item/organ/xenos/hivenode) in C.internal_organs)
@@ -177,7 +177,7 @@ var/const/MAX_ACTIVE_TIME = 400
if(!sterile)
//target.contract_disease(new /datum/disease/alien_embryo(0)) //so infection chance is same as virus infection chance
var/obj/item/organ/affecting = target.get_organ("chest")
- var/obj/item/organ/xenos/alien_embryo/kid = new(affecting)
+ var/obj/item/organ/parasite/alien_embryo/kid = new(affecting)
kid.replaced(target,affecting)
target.status_flags |= XENO_HOST
diff --git a/code/modules/organs/subtypes/parasite.dm b/code/modules/organs/subtypes/parasite.dm
index 9ba6da2e484..6cfd586e049 100644
--- a/code/modules/organs/subtypes/parasite.dm
+++ b/code/modules/organs/subtypes/parasite.dm
@@ -22,6 +22,7 @@
if(stage_ticker >= stage*stage_interval)
stage = min(stage+1,max_stage)
+ stage_effect()
/obj/item/organ/parasite/handle_rejection()
if(subtle)
@@ -31,6 +32,9 @@
rejecting = 0
return
+/obj/item/organ/parasite/proc/stage_effect()
+ return
+
///////////////////
///K'ois Mycosis///
///////////////////