diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index fba1e04b19c..b53426a4a92 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -245,6 +245,7 @@ client
if(ismob(D))
body += ""
+ body += ""
body += ""
body += ""
body += ""
@@ -477,6 +478,19 @@ client
if(!admin_rank_check(src.holder.level, 3)) return
src.give_spell(MOB)
href_list["datumrefresh"] = href_list["give_spell"]
+ else if (href_list["give_disease"])
+ if(!href_list["give_disease"])
+ return
+ var/mob/MOB = locate(href_list["give_disease"])
+ if(!MOB)
+ return
+ if(!ismob(MOB))
+ return
+ if(!src.holder)
+ return
+ if(!admin_rank_check(src.holder.level, 3)) return
+ src.give_disease(MOB)
+ href_list["datumrefresh"] = href_list["give_spell"]
else if (href_list["ninja"])
if(!href_list["ninja"])
return
diff --git a/code/datums/disease.dm b/code/datums/disease.dm
index 9a56e665cad..918bdb535ff 100644
--- a/code/datums/disease.dm
+++ b/code/datums/disease.dm
@@ -17,6 +17,8 @@ to null does not delete the object itself. Thank you.
*/
+var/list/diseases = typesof(/datum/disease) - /datum/disease
+
/datum/disease
var/form = "Virus" //During medscans, what the disease is referred to as
diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm
index 0e9f41e8b50..4bf249b43d3 100644
--- a/code/datums/diseases/alien_embryo.dm
+++ b/code/datums/diseases/alien_embryo.dm
@@ -5,7 +5,6 @@
if(!holder) return
if(holder == affected_mob)
stage_act()
-
if(affected_mob)
if(affected_mob.stat == DEAD)
if(prob(50))
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 40af83e0f9b..76210446860 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -592,6 +592,17 @@
log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].")
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1)
+/client/proc/give_disease(mob/T as mob in mob_list) // -- Giacom
+ set category = "Fun"
+ set name = "Give Disease"
+ set desc = "Gives a Disease to a mob."
+ var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in diseases
+ if(!D) return
+ T.contract_disease(new D, 1)
+ feedback_add_details("admin_verb","GD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].")
+ message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1)
+
/client/proc/make_sound(var/obj/O in world) // -- TLE
set category = "Special Verbs"
set name = "Make Sound"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 71dd6e20629..373dac2cae8 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -4,7 +4,6 @@
icon_state = "capspace"
item_state = "capspacehelmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
- flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR
flags_inv = HIDEFACE
permeability_coefficient = 0.01
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index a366503ac5c..79baa0eeae8 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -164,3 +164,18 @@ I kind of like the right click only--the window version can get a little confusi
if("resin nest")
new /obj/structure/stool/bed/nest(loc)
return
+
+/mob/living/carbon/alien/humanoid/verb/regurgitate()
+ set name = "Regurgitate"
+ set desc = "Empties the contents of your stomach"
+ set category = "Alien"
+
+ if(powerc())
+ if(stomach_contents.len)
+ for(var/mob/M in src)
+ if(M in stomach_contents)
+ stomach_contents.Remove(M)
+ M.loc = loc
+ //Paralyse(10)
+ src.visible_message("\green [src] hurls out the contents of their stomach!")
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 652bd14e244..0a9a69dd144 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -73,19 +73,4 @@
update_icons()
src << "\green You are no longer invisible."
return
-*/
-/mob/living/carbon/alien/humanoid/hunter/verb/regurgitate()
- set name = "Regurgitate"
- set desc = "Empties the contents of your stomach"
- set category = "Alien"
-
- if(powerc())
- if(stomach_contents.len)
- for(var/mob/M in src)
- if(M in stomach_contents)
- stomach_contents.Remove(M)
- M.loc = loc
- Paralyse(10)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\green [src] hurls out the contents of their stomach!"), 1)
- return
\ No newline at end of file
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm
index 021cdbc241d..56bfacf18c7 100644
--- a/code/modules/mob/living/simple_animal/hostile/carp.dm
+++ b/code/modules/mob/living/simple_animal/hostile/carp.dm
@@ -36,7 +36,7 @@
minbodytemp = 0
/mob/living/simple_animal/hostile/carp/Process_Spacemove(var/check_drift = 0)
- return //No drifting in space for space carp! //original comments do not steal
+ return 1 //No drifting in space for space carp! //original comments do not steal
/mob/living/simple_animal/hostile/carp/FindTarget()
. = ..()
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 4615e57e6f3..74dbaa9672e 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -101,9 +101,11 @@ datum
src = null
for(var/datum/disease/D in self.data["viruses"])
var/datum/disease/virus = new D.type
+ // We don't spread.
+ if(virus.spread_type == SPECIAL || virus.spread_type == NON_CONTAGIOUS) continue
+
if(method == TOUCH)
M.contract_disease(virus)
-
else //injected
M.contract_disease(virus, 1, 0)