diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm
new file mode 100644
index 00000000000..bd5ceea9b54
--- /dev/null
+++ b/code/datums/components/infective.dm
@@ -0,0 +1,80 @@
+/datum/component/infective
+ dupe_mode = COMPONENT_DUPE_ALLOWED
+ var/list/datum/disease/diseases
+ var/expire_time
+ var/required_clean_types = CLEAN_TYPE_DISEASE
+
+/datum/component/infective/Initialize(list/datum/disease/_diseases, expire_in)
+ if(islist(_diseases))
+ diseases = _diseases
+ else
+ diseases = list(_diseases)
+ if(!diseases.len || isnull(diseases[1]))
+ stack_trace("Infective component initialized without any diseases!")
+ qdel(src)
+ if(expire_in)
+ expire_time = world.time + expire_in
+ QDEL_IN(src, expire_in)
+ if(!ismovable(parent))
+ return COMPONENT_INCOMPATIBLE
+
+ var/static/list/disease_connections = list(
+ COMSIG_ATOM_ENTERED = PROC_REF(try_infect_crossed),
+ )
+ AddComponent(/datum/component/connect_loc_behalf, parent, disease_connections)
+
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(try_infect_collide))
+
+ RegisterSignal(parent, COMSIG_ATOM_EXTRAPOLATOR_ACT, PROC_REF(extrapolation))
+
+ if(isitem(parent))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(try_infect_attack))
+ // RegisterSignal(parent, COMSIG_FOOD_EATEN, PROC_REF(try_infect_eat)) - TODO: Send signal when eating
+
+/datum/component/infective/proc/clean(datum/source, clean_types)
+ SIGNAL_HANDLER
+
+ if(clean_types & required_clean_types)
+ qdel(src)
+ return TRUE
+
+/datum/component/infective/proc/try_infect_crossed(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ SIGNAL_HANDLER
+
+ if(isliving(arrived))
+ try_infect(arrived, BP_L_FOOT)
+
+/*
+/datum/component/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder)
+ SIGNAL_HANDLER
+
+ for(var/datum/disease/D in diseases)
+ eater.ForceContractDisease(D)
+ try_infect(feeder, BP_L_ARM)
+*/
+
+/datum/component/infective/proc/try_infect_collide(datum/source, atom/A)
+ SIGNAL_HANDLER
+
+ var/atom/movable/P = parent
+ if(P.throwing)
+ // This will be handled by COMSIG_MOVABLE_IMPACT_ZONE, whenever we get that.
+ return
+ if(isliving(A))
+ try_infect(A)
+
+/datum/component/infective/proc/try_infect_attack(datum/source, mob/living/target, mob/living/user)
+ SIGNAL_HANDLER
+
+ if(!iscarbon(target))
+ try_infect(target)
+ try_infect(user, BP_L_ARM)
+
+/datum/component/infective/proc/try_infect(mob/living/L, target_zone)
+ for(var/datum/disease/D in diseases)
+ L.ContractDisease(D)
+
+/datum/component/infective/proc/extrapolation(datum/source, mob/user, obj/item/extrapolator/extrapolator, dry_run = FALSE, list/result)
+ SIGNAL_HANDLER
+ EXTRAPOLATOR_ACT_ADD_DISEASES(result, diseases)
diff --git a/code/datums/diseases/advance/disease_preset.dm b/code/datums/diseases/advance/disease_preset.dm
index 6a23220cb6c..0b0f9492da8 100644
--- a/code/datums/diseases/advance/disease_preset.dm
+++ b/code/datums/diseases/advance/disease_preset.dm
@@ -51,7 +51,9 @@
if(SPECIES_UNATHI, SPECIES_TAJARAN) // Mice devourers
sickrisk = 0.5
if(SPECIES_XENOCHIMERA)
- // Ronoake Syndrome will go here :)
+ var/datum/disease/advance/dormant_roanoake = new /datum/disease/roanoake
+ dormant_roanoake.virus_modifiers |= DORMANT
+ ForceContractDisease(dormant_roanoake, TRUE)
return
if(SPECIES_PROMETHEAN) // Too clean
return
diff --git a/code/datums/diseases/advance/symptoms/dance.dm b/code/datums/diseases/advance/symptoms/dance.dm
new file mode 100644
index 00000000000..2f4852ccf82
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/dance.dm
@@ -0,0 +1,80 @@
+/datum/symptom/dance
+ name = "Choreomania"
+ desc = "The symptom allows the virus to hijack the motor system of the affected, making them dance."
+ stealth = 2
+ resistance = 0
+ stage_speed = 3
+ transmission = 1
+ level = 5
+ severity = 0
+ symptom_delay_min = 15 SECONDS
+ symptom_delay_max = 30 SECONDS
+
+ prefixes = list("Dancing ", "Footloose ", "Frenzied ", "Groovy ")
+ bodies = list("Tremor", "Jig", "Shuffle", "Spasm")
+ suffixes = list(" Fit", " Twitch")
+
+/datum/symptom/dance/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/M = A.affected_mob
+ if(M.stat == DEAD)
+ return
+ switch(A.stage)
+ if(2)
+ if(prob(base_message_chance))
+ to_chat(M, span_notice("You feel a tingle down your spine..."))
+ if(3)
+ if(prob(base_message_chance))
+ to_chat(M, span_notice("You feel a tingle down your spine..."))
+ if(prob(5))
+ M.visible_emote("taps their foot rhythmically.")
+ if(4, 5)
+ if(prob(base_message_chance))
+ to_chat(M, span_notice("You feel like giving it all out there!"))
+ M.emote("whistle")
+ /*
+ if(prob(5))
+ dance_one(M)
+ */
+ if(prob(5))
+ penguin_dance(M)
+/*
+/datum/symptom/dance/proc/dance_one(mob/living/M)
+ var/list/dance = list(2,4,8,2,4,8,2,4,8,2,4,8,1,4,1,4,1,4,2,4,8,2)
+
+ for(var/D in dance)
+ M.dir = D
+ animate(M, pixel_x = 5, time = 5)
+ animate(M, pixel_x = -5, time = 5)
+ animate(M, pixel_x = M.default_pixel_x, pixel_y = M.default_pixel_y, time = 2)
+*/
+/datum/symptom/dance/proc/penguin_dance(mob/living/M)
+ if(!M)
+ return
+
+ animate(M)
+ M.transform = matrix()
+ M.pixel_x = 0
+ M.pixel_y = 0
+
+ var/matrix/left = matrix()
+ left.Translate(-3, 2)
+
+ var/matrix/right = matrix()
+ right.Translate(3, -2)
+
+ var/tag = "penguin_dance"
+
+ animate(M, dir = EAST, time = 2, tag = tag)
+ animate(M, dir = NORTH, time = 2, tag = tag)
+ animate(M, dir = WEST, time = 2, tag = tag)
+ animate(M, dir = SOUTH, time = 2, tag = tag)
+
+ animate(M, dir = WEST, transform = left, time = 4, tag = tag)
+ animate(transform = right, time = 4)
+ animate(transform = matrix(), time = 4)
+
+ animate(dir = EAST, transform = left, time = 4)
+ animate(transform = right, time = 4)
+ animate(transform = matrix(), time = 4)
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 72ee41c65ea..ddcff06111b 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -225,6 +225,65 @@
if(regenerate_blood && H.vessel.get_reagent_amount(REAGENT_ID_BLOOD) < H.species.blood_volume)
H.add_chemical_effect(CE_BLOODRESTORE, 1)
+/datum/symptom/heal/water
+ name = "Tissue Hydration"
+ desc = "The virus uses excess water inside and outside the body to repair damaged tissue cells. More effective when using holy water and against burns."
+ stealth = 0
+ resistance = -1
+ stage_speed = 0
+ transmission = 1
+ level = 6
+ passive_message = span_notice("Your skin feels oddly dry...")
+ threshold_descs = list(
+ "Resistance 5" = "Water is consumed at a much slower rate.",
+ "Stage Speed 7" = "Increases healing speed."
+ )
+
+ var/absorption_coeff = 1
+
+ prefixes = list("Hydro", "Moist ")
+ bodies = list("Water")
+
+/datum/symptom/heal/water/Start(datum/disease/advance/A)
+ if(!..())
+ return
+ if(A.stage_rate >= 7)
+ power = 2
+ if(A.resistance >= 5)
+ absorption_coeff = 0.25
+
+/datum/symptom/heal/water/CanHeal(mob/living/M, datum/disease/advance/A, actual_power)
+ if(!istype(M))
+ return
+
+ var/mob/living/carbon/human/H = M
+
+ if(H.fire_stacks < 0)
+ H.adjust_fire_stacks(min(absorption_coeff, -H.fire_stacks))
+ . += power
+ if(H.reagents.has_reagent(REAGENT_ID_HOLYWATER))
+ H.reagents.remove_reagent(REAGENT_ID_HOLYWATER, 0.5 * absorption_coeff)
+ . += power * 0.75
+ else if(H.reagents.has_reagent(REAGENT_ID_WATER))
+ H.reagents.remove_reagent(REAGENT_ID_WATER, 0.5 * absorption_coeff)
+ . += power * 0.5
+
+/datum/symptom/heal/water/Heal(mob/living/carbon/human/H, datum/disease/advance/A, actual_power)
+ var/heal_amt = 2 * actual_power
+
+ var/list/zone_list = BP_ALL
+
+ if(!zone_list.len)
+ return
+
+ if(prob(5))
+ to_chat(H, span_notice("You feel yourself absorbing the water around you to soothe your damaged skin."))
+
+ for(var/obj/item/organ/external/bodypart in zone_list)
+ if(bodypart.burn_dam > 0 && !(bodypart.robotic >= ORGAN_ROBOT))
+ bodypart.heal_damage(0, (heal_amt/zone_list.len))
+
+ return TRUE
/*
//////////////////////////////////////
diff --git a/code/datums/diseases/advance/symptoms/macrophage.dm b/code/datums/diseases/advance/symptoms/macrophage.dm
index 80cd6426ee6..3bd66d536d3 100644
--- a/code/datums/diseases/advance/symptoms/macrophage.dm
+++ b/code/datums/diseases/advance/symptoms/macrophage.dm
@@ -24,8 +24,8 @@ BONUS
transmission = 2
level = 9
severity = 2
- symptom_delay_min = 40
- symptom_delay_max = 60
+ symptom_delay_min = 40 SECONDS
+ symptom_delay_max = 60 SECONDS
var/gigagerms = FALSE
var/netspeed = 0
@@ -78,14 +78,15 @@ BONUS
if(gigagerms)
phage = new /mob/living/simple_mob/vore/aggressive/macrophage/giant(get_turf((M.loc)))
- phage.melee_damage_lower = rand(10, 15)
- phage.melee_damage_upper = rand(15, 20)
+ phage.melee_damage_lower = rand(5, 10)
+ phage.melee_damage_upper = rand(10, 15)
M.apply_damage(rand(10, 20))
- playsound(M, 'sound/effects/splat.ogg', 50, 1)
M.emote("scream")
else
phage = new(get_turf((M.loc)))
- M.apply_damage(rand(1, 7))
+ M.apply_damage(rand(1, 5))
+
+ playsound(M, 'sound/effects/splat.ogg', 50, 1)
phage.health += A.resistance
phage.maxHealth += A.resistance
diff --git a/code/datums/diseases/advance/symptoms/robot.dm b/code/datums/diseases/advance/symptoms/robot.dm
new file mode 100644
index 00000000000..182026401a8
--- /dev/null
+++ b/code/datums/diseases/advance/symptoms/robot.dm
@@ -0,0 +1,140 @@
+/datum/symptom/robotic_adaptation
+ name = "Biometallic Replication"
+ desc = "The virus can manipulate metal and silicate compounds, becoming able to infect robotic beings."
+ stealth = 0
+ resistance = 1
+ stage_speed = 4
+ transmission = -1
+ level = 9
+ severity = 0
+ symptom_delay_min = 20 SECONDS
+ symptom_delay_max = 50 SECONDS
+ prefixes = list("Robo")
+ bodies = list("Robot")
+ suffixes = list("-217")
+
+ var/replaceorgans = FALSE
+ var/replacebody = FALSE
+ //var/robustbits = FALSE
+
+ threshold_descs = list(
+ "Stage Speed 4" = "The virus will replace the host's organic organs with mundane, biometallic versions.",
+ "Resistance 4" = "The virus will eventually convert the host's entire body to biometallic materials, and maintain its cellular integrity.",
+ //"Stage Speed 12" = "Biometallic mass created by the virus will be superior to typical organic mass." TODO: Some fancy organs.
+ )
+
+/datum/symptom/robotic_adaptation/OnAdd(datum/disease/advance/A)
+ A.virus_modifiers |= INFECT_SYNTHETICS
+
+/datum/symptom/robotic_adaptation/severityset(datum/disease/advance/A)
+ . = ..()
+ if(A.stage_rate >= 4)
+ severity += 1
+ /*
+ if(A.stage_rate >= 12)
+ severity -= 3
+ */
+ if(A.resistance >= 4)
+ severity += 1
+
+/datum/symptom/robotic_adaptation/Start(datum/disease/advance/A)
+ . = ..()
+ if(A.stage_rate >= 4)
+ replaceorgans = TRUE
+ if(A.resistance >= 4)
+ replacebody = TRUE
+ /*
+ if(A.stage_rate >= 12)
+ robustbits = TRUE
+ */
+
+/datum/symptom/robotic_adaptation/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/human/H = A.affected_mob
+ switch(A.stage)
+ if(3, 4)
+ if(replaceorgans && H.stat != DEAD)
+ to_chat(H, span_warning("[pick("You feel a grinding pain in your abdomen.", "You exhale a jet of steam.")]"))
+ if(5)
+ if(replaceorgans || replacebody)
+ Replace(H)
+ return
+
+/datum/symptom/robotic_adaptation/proc/Replace(mob/living/carbon/human/H)
+ if(!H.allow_spontaneous_tf) // Bwomp.
+ return FALSE
+
+ if(replaceorgans)
+ var/obj/item/organ/internal/O = pick(H.internal_organs)
+ if(O.robotic >= ORGAN_ROBOT)
+ return FALSE
+ switch(O)
+ if(/obj/item/organ/internal/brain)
+ var/obj/item/organ/internal/brain/brain = O
+ brain.robotize()
+ return TRUE
+ if(/obj/item/organ/internal/eyes)
+ var/obj/item/organ/internal/eyes/eyes = O
+ if(prob(40) && H.stat != DEAD)
+ to_chat(H, span_userdanger("You feel a stabbing pain in your eyeballs!"))
+ H.emote("scream")
+ eyes.robotize()
+ return TRUE
+ if(/obj/item/organ/internal/heart)
+ var/obj/item/organ/internal/heart/heart = O
+ heart.robotize()
+ if(prob(40) && H.stat != DEAD)
+ to_chat(H, span_userdanger("You feel a stabbing pain in your chest!"))
+ H.emote("scream")
+ return TRUE
+ if(/obj/item/organ/internal/stomach)
+ var/obj/item/organ/internal/stomach/stomach = O
+ stomach.robotize()
+ if(prob(40) && H.stat != DEAD)
+ to_chat(H, span_userdanger("You feel a stabbing pain in your abdomen!"))
+ H.emote("scream")
+ return TRUE
+ if(/obj/item/organ/internal/lungs)
+ var/obj/item/organ/internal/lungs/lungs = O
+ lungs.robotize()
+ return TRUE
+ if(/obj/item/organ/internal/liver)
+ var/obj/item/organ/internal/liver/liver = O
+ liver.robotize()
+ if(prob(40) && H.stat != DEAD)
+ to_chat(H, span_userdanger("You feel a stabbing pain in your abdomen!"))
+ H.emote("scream")
+ return TRUE
+ if(/obj/item/organ/internal/intestine)
+ var/obj/item/organ/internal/intestine/intestine = O
+ intestine.robotize()
+ return TRUE
+ if(/obj/item/organ/internal/spleen)
+ var/obj/item/organ/internal/spleen/spleen = O
+ spleen.robotize()
+ return TRUE
+ if(/obj/item/organ/internal/kidneys)
+ var/obj/item/organ/internal/kidneys/kidneys = O
+ kidneys.robotize()
+ return TRUE
+ if(replacebody) // No need to overcomplicate this one
+ var/obj/item/organ/external/O = pick(H.organs)
+ if(O.robotic >= ORGAN_ROBOT)
+ return FALSE
+ if(O)
+ O.robotize()
+ H.visible_message(span_danger("[H]'s \the [O] shifts, and becomes metal before your very eyes."), span_userdanger("Your \the [O] feels numb, and cold."))
+ return TRUE
+ return FALSE
+
+/datum/symptom/robotic_adaptation/End(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/human/H = A.affected_mob
+ if(A.stage >= 5 && (replaceorgans || replacebody))
+ if(H.stat != DEAD)
+ to_chat(H, span_userdanger("You feel lighter and metallic, as your innards lose their silicon facade."))
+
+/datum/symptom/robotic_adaptation/OnRemove(datum/disease/advance/A)
+ A.virus_modifiers &= ~INFECT_SYNTHETICS
diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm
index 33442444bd7..8f2c3e35ae2 100644
--- a/code/datums/diseases/advance/symptoms/symptoms.dm
+++ b/code/datums/diseases/advance/symptoms/symptoms.dm
@@ -97,9 +97,6 @@ GLOBAL_LIST_INIT(list_symptoms, subtypesof(/datum/symptom))
/datum/symptom/proc/OnRemove(datum/disease/advance/A)
return
-/datum/symptom/proc/generate_threshold_desc()
- return
-
/datum/symptom/proc/get_symptom_data()
var/list/data = list()
data["name"] = name
diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm
index 1f4c3216af7..8cef29937fa 100644
--- a/code/datums/diseases/cold.dm
+++ b/code/datums/diseases/cold.dm
@@ -5,7 +5,7 @@
spread_text = "Airborne"
spread_flags = DISEASE_SPREAD_AIRBORNE
cure_text = "Rest & " + REAGENT_SPACEACILLIN
- cures = list(REAGENT_ID_SPACEACILLIN, REAGENT_ID_CHICKENSOUP)
+ cures = list(REAGENT_ID_SPACEACILLIN, REAGENT_ID_CHICKENSOUP, REAGENT_ID_CHICKENNOODLESOUP)
virus_modifiers = NONE //Does NOT have needs_all_cures
agent = "XY-rhinovirus"
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm
index 5aa39dbe924..b379dcdfd6b 100644
--- a/code/datums/diseases/flu.dm
+++ b/code/datums/diseases/flu.dm
@@ -4,7 +4,7 @@
max_stages = 3
spread_text = "Airborne"
cure_text = REAGENT_SPACEACILLIN
- cures = list(REAGENT_ID_SPACEACILLIN, REAGENT_ID_CHICKENSOUP)
+ cures = list(REAGENT_ID_SPACEACILLIN, REAGENT_ID_CHICKENSOUP, REAGENT_ID_CHICKENNOODLESOUP)
virus_modifiers = NONE //Does NOT have needs_all_cures
cure_chance = 10
agent = "H13N1 flu virion"
diff --git a/code/datums/diseases/food_poisoning.dm b/code/datums/diseases/food_poisoning.dm
index a3805f8d2e3..71ef511885f 100644
--- a/code/datums/diseases/food_poisoning.dm
+++ b/code/datums/diseases/food_poisoning.dm
@@ -7,7 +7,8 @@
spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS
cure_text = "Sleep"
agent = REAGENT_SALMONELLA
- cures = list(REAGENT_ID_CHICKENSOUP)
+ cures = list(REAGENT_ID_CHICKENSOUP, REAGENT_ID_CHICKENNOODLESOUP)
+ virus_modifiers = NONE // Does NOT need all the cures
cure_chance = 10
viable_mobtypes = list(/mob/living/carbon/human)
desc = "Nausea, sickness, and vomiting."
diff --git a/code/datums/diseases/roanoake.dm b/code/datums/diseases/roanoake.dm
index 4e884004b63..843d37237db 100644
--- a/code/datums/diseases/roanoake.dm
+++ b/code/datums/diseases/roanoake.dm
@@ -1,9 +1,10 @@
/datum/disease/roanoake
name = "Roanoake Syndrome"
+ medical_name = "Roanoake Syndrome"
max_stages = 6
stage_prob = 2
spread_text = "Blood and close contact"
- spread_flags = BLOOD
+ spread_flags = DISEASE_SPREAD_BLOOD
cure_text = REAGENT_SPACEACILLIN
agent = "Chimera cells"
cures = list(REAGENT_ID_SPACEACILLIN)
@@ -11,8 +12,8 @@
viable_mobtypes = list(/mob/living/carbon/human)
desc = "If left untreated, subject will become a xenochimera upon perishing."
danger = DISEASE_BIOHAZARD
- disease_flags = CURABLE
- //allow_dead = TRUE //Unused
+ disease_flags = CURABLE | CAN_CARRY | CAN_NOT_POPULATE
+ virus_modifiers = BYPASSES_IMMUNITY | SPREAD_DEAD
var/list/obj/item/organ/organ_list = list()
var/obj/item/organ/O
@@ -82,8 +83,8 @@
var/datum/wound/W = new /datum/wound/internal_bleeding(5)
E.wounds += W
- if(M.stat == DEAD)
- M.species = /datum/species/xenochimera
+ if(M.stat == DEAD || M.allow_spontaneous_tf)
+ M.LoadComponent(/datum/component/xenochimera)
cure()
return
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 25502358dd3..9d85735cfcf 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -411,7 +411,7 @@
if(D.visibility_flags & HIDDEN_SCANNER)
continue
else
- dat += span_red("Viral pathogen detected in blood stream.") + "
"
+ dat += span_red("Disease detected in blood stream.") + "
"
var/damage_string = null
damage_string = "\t-Brute Damage %: [occupant.getBruteLoss()]"
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index b391bf79e2f..45d68807d8d 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -39,7 +39,6 @@
/obj/item/clothing/suit/bio_suit/general
icon_state = "bio_general"
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Virology biosuit, green stripe
@@ -48,7 +47,6 @@
/obj/item/clothing/suit/bio_suit/virology
icon_state = "bio_virology"
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Security biosuit, grey with red stripe across the chest
@@ -57,7 +55,6 @@
/obj/item/clothing/suit/bio_suit/security
icon_state = "bio_security"
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Janitor's biosuit, grey with purple arms
@@ -66,7 +63,6 @@
/obj/item/clothing/suit/bio_suit/janitor
icon_state = "bio_janitor"
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Scientist's biosuit, white with a pink-ish hue
@@ -75,13 +71,11 @@
/obj/item/clothing/suit/bio_suit/scientist
icon_state = "bio_scientist"
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//CMO's biosuit, blue stripe
/obj/item/clothing/suit/bio_suit/cmo
icon_state = "bio_cmo"
- body_parts_covered = CHEST|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
/obj/item/clothing/head/bio_hood/cmo
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/macrophage.dm b/code/modules/mob/living/simple_mob/subtypes/vore/macrophage.dm
index 7a204e111ed..83874f109c5 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/macrophage.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/macrophage.dm
@@ -43,6 +43,7 @@
vore_active = TRUE
vore_capacity = 1
+ vore_pounce_chance = 45
can_be_drop_prey = FALSE
allow_mind_transfer = TRUE
@@ -90,20 +91,11 @@
else
death()
-/mob/living/simple_mob/vore/aggressive/macrophage/green
- icon_state = "macrophage-2"
-
-/mob/living/simple_mob/vore/aggressive/macrophage/pink
- icon_state = "macrophage-3"
-
-/mob/living/simple_mob/vore/aggressive/macrophage/blue
- icon_state = "macrophage-4"
-
/mob/living/simple_mob/vore/aggressive/macrophage/apply_melee_effects(atom/A)
if(ishuman(A) && prob(25))
var/mob/living/carbon/human/H = A
H.ContractDisease(base_disease)
-
+/*
/mob/living/simple_mob/vore/aggressive/macrophage/do_special_attack(var/atom/A)
. = TRUE
set_AI_busy(TRUE)
@@ -132,17 +124,20 @@
var/mob/living/carbon/human/H = target
H.ContractDisease(base_disease)
set_AI_busy(FALSE)
-
+*/
/mob/living/simple_mob/vore/aggressive/macrophage/death()
..()
- visible_message(span_warning("\The [src] shrivels up and dies, unable to survive!"))
if(isbelly(loc))
var/obj/belly/belly = loc
if(belly)
var/mob/living/pred = belly.owner
pred.ForceContractDisease(base_disease)
else
- var/obj/effect/decal/cleanable/mucus/sick = new(loc)
+ visible_message(span_warning("\The [src] shrivels up and dies, unable to survive!"))
+ var/obj/effect/decal/cleanable/blood/sick = new(loc)
+ sick.name = "plasma"
+ sick.basecolor = "#47cbcf"
+ sick.update_icon()
sick.pixel_x = rand(-24, 24)
sick.pixel_y = rand(-24, 24)
sick.viruses += base_disease
diff --git a/vorestation.dme b/vorestation.dme
index 4d56ca6d484..941ac6f1c31 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -518,6 +518,7 @@
#include "code\datums\components\connect_loc_behalf.dm"
#include "code\datums\components\connect_mob_behalf.dm"
#include "code\datums\components\holographic_nature.dm"
+#include "code\datums\components\infective.dm"
#include "code\datums\components\material_container.dm"
#include "code\datums\components\orbiter.dm"
#include "code\datums\components\overlay_lighting.dm"
@@ -617,6 +618,7 @@
#include "code\datums\diseases\gbs.dm"
#include "code\datums\diseases\lycancoughy.dm"
#include "code\datums\diseases\magnitis.dm"
+#include "code\datums\diseases\roanoake.dm"
#include "code\datums\diseases\advance\advance.dm"
#include "code\datums\diseases\advance\disease_preset.dm"
#include "code\datums\diseases\advance\symptoms\blobspores.dm"
@@ -624,6 +626,7 @@
#include "code\datums\diseases\advance\symptoms\cockroach.dm"
#include "code\datums\diseases\advance\symptoms\confusion.dm"
#include "code\datums\diseases\advance\symptoms\cough.dm"
+#include "code\datums\diseases\advance\symptoms\dance.dm"
#include "code\datums\diseases\advance\symptoms\deafness.dm"
#include "code\datums\diseases\advance\symptoms\fever.dm"
#include "code\datums\diseases\advance\symptoms\fire.dm"
@@ -640,6 +643,7 @@
#include "code\datums\diseases\advance\symptoms\mlem.dm"
#include "code\datums\diseases\advance\symptoms\necrotic_agent.dm"
#include "code\datums\diseases\advance\symptoms\radiation.dm"
+#include "code\datums\diseases\advance\symptoms\robot.dm"
#include "code\datums\diseases\advance\symptoms\shivering.dm"
#include "code\datums\diseases\advance\symptoms\size.dm"
#include "code\datums\diseases\advance\symptoms\sneeze.dm"