diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 21bcd079d8b..c730d883e28 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -371,3 +371,5 @@
#define GET_RANDOM_JOB 0
#define BE_ASSISTANT 1
#define RETURN_TO_LOBBY 2
+
+#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
\ No newline at end of file
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index 571a0d7aa7b..9414a079e80 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -1,4 +1,6 @@
+#define VIRUS_SYMPTOM_LIMIT 6
+
//Visibility Flags
#define HIDDEN_SCANNER 1
#define HIDDEN_PANDEMIC 2
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 4976fbc412b..3ff2f678fcf 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -59,6 +59,7 @@
return
to_chat(owner, "You feel the compulsion fade, and you completely forget about your previous orders.")
active_mind_control = FALSE
+ update_gland_hud()
/obj/item/organ/internal/heart/gland/remove(var/mob/living/carbon/M, special = 0)
active = 0
@@ -197,20 +198,39 @@
/obj/item/organ/internal/heart/gland/viral/activate()
to_chat(owner, "You feel sick.")
- var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis)
- var/datum/disease/D = new virus_type()
- D.carrier = TRUE
- owner.viruses += D
- D.affected_mob = owner
- owner.med_hud_set_status()
+ var/datum/disease/advance/A = random_virus(pick(2, 6), 6)
+ A.carrier = TRUE
+ owner.ForceContractDisease(A)
+
+/obj/item/organ/internal/heart/gland/viral/proc/random_virus(max_symptoms, max_level)
+ if(max_symptoms > VIRUS_SYMPTOM_LIMIT)
+ max_symptoms = VIRUS_SYMPTOM_LIMIT
+ var/datum/disease/advance/A = new /datum/disease/advance()
+ var/list/datum/symptom/possible_symptoms = list()
+ for(var/symptom in subtypesof(/datum/symptom))
+ var/datum/symptom/S = symptom
+ if(initial(S.level) > max_level)
+ continue
+ if(initial(S.level) <= 0) //unobtainable symptoms
+ continue
+ possible_symptoms += S
+ for(var/i in 1 to max_symptoms)
+ var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms)
+ if(chosen_symptom)
+ var/datum/symptom/S = new chosen_symptom
+ A.symptoms += S
+ A.Refresh() //just in case someone already made and named the same disease
+ return A
/obj/item/organ/internal/heart/gland/emp //TODO : Replace with something more interesting
origin_tech = "materials=4;biotech=4;magnets=6;abductor=3"
- cooldown_low = 900
- cooldown_high = 1600
+ cooldown_low = 800
+ cooldown_high = 1200
uses = 10
icon_state = "emp"
+ mind_control_uses = 3
+ mind_control_duration = 1800
/obj/item/organ/internal/heart/gland/emp/activate()
to_chat(owner, "You feel a spike of pain in your head.")
@@ -239,10 +259,8 @@
mind_control_duration = 1800
/obj/item/organ/internal/heart/gland/egg/activate()
- to_chat(owner, "You lay an egg!")
- var/obj/item/reagent_containers/food/snacks/egg/egg = new(owner.loc)
- egg.reagents.add_reagent("sacid",20)
- egg.desc += " It smells bad."
+ owner.visible_message("[owner] [pick(EGG_LAYING_MESSAGES)]")
+ new /obj/item/reagent_containers/food/snacks/egg/gland(get_turf(owner))
/obj/item/organ/internal/heart/gland/electric
cooldown_low = 800
@@ -283,9 +301,8 @@
mind_control_duration = 1200
/obj/item/organ/internal/heart/gland/chem/activate()
- var/chem_to_add = get_random_reagent_id()
- owner.reagents.add_reagent(chem_to_add, 2)
- owner.adjustToxLoss(-2, TRUE, TRUE)
+ owner.reagents.add_reagent(get_random_reagent_id(), 2)
+ owner.adjustToxLoss(-2)
..()
/obj/item/organ/internal/heart/gland/bloody
diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm
index c59b6b9b1ee..a7f4acb4405 100644
--- a/code/modules/food_and_drinks/food/foods/meat.dm
+++ b/code/modules/food_and_drinks/food/foods/meat.dm
@@ -324,6 +324,16 @@
icon_state = "egg-yellow"
item_color = "yellow"
+/obj/item/reagent_containers/food/snacks/egg/gland
+ desc = "An egg! It looks weird..."
+
+/obj/item/reagent_containers/food/snacks/egg/gland/New()
+ ..()
+ reagents.add_reagent(get_random_reagent_id(), 15)
+
+ var/reagent_color = mix_color_from_reagents(reagents.reagent_list)
+ color = reagent_color
+
/obj/item/reagent_containers/food/snacks/friedegg
name = "Fried egg"
desc = "A fried egg, with a touch of salt and pepper."