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."