diff --git a/code/datums/diseases/zombie_virus.dm b/code/datums/diseases/zombie_virus.dm
index d47742631e0..8879070189a 100644
--- a/code/datums/diseases/zombie_virus.dm
+++ b/code/datums/diseases/zombie_virus.dm
@@ -31,9 +31,13 @@
if(!..())
return FALSE
if(HAS_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS) || affected_mob.mind?.has_antag_datum(/datum/antagonist/zombie))
+ SSticker.mode.zombie_infected -= affected_mob
+ if(affected_mob.reagents.has_reagent("zombiecure4"))
+ return
handle_rot(TRUE)
stage = 7
return FALSE
+ SSticker.mode.zombie_infected |= affected_mob
switch(stage)
if(1) // cured by lvl 1 cure
if(prob(4))
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 29dfb1fdd2f..dcb97d7f1d9 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -90,6 +90,11 @@
/// A list of all the minds that have the ERT special role
var/list/datum/mind/ert = list()
+ /// A list of all minds that are zombies
+ var/list/datum/mind/zombies = list()
+ /// A list of all minds that are infected with the zombie virus, but aren't zombies yet
+ var/list/datum/mind/zombie_infected = list()
+
/datum/game_mode/proc/announce() //to be calles when round starts
to_chat(world, "Notice: [src] did not define announce()")
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index 230b5e450b4..523e7e89cbf 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -543,7 +543,7 @@
Chlorine Trifluoride
Sorium
"????" Reagent
- A ranesp
+ Aranesp
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index a0ec7b9637d..02793d7d8d3 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -470,6 +470,12 @@
if(length(SSticker.mode.eventmiscs))
dat += check_role_table("Event Roles", SSticker.mode.eventmiscs)
+ if(length(SSticker.mode.zombies))
+ dat += check_role_table("Zombies", SSticker.mode.zombies)
+
+ if(length(SSticker.mode.zombie_infected))
+ dat += check_role_table_mob("Pre-zombie infected", SSticker.mode.zombie_infected)
+
if(length(GLOB.ts_spiderlist))
var/list/spider_minds = list()
for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist)
@@ -529,3 +535,10 @@
txt += ""
return txt
+
+/datum/admins/proc/check_role_table_mob(name, list/members, show_objectives=1)
+ var/txt = "
| [name] | |
"
+ for(var/mob/M in members)
+ txt += check_role_table_row(M, show_objectives)
+ txt += "
"
+ return txt
diff --git a/code/modules/antagonists/zombie/datum_zombie.dm b/code/modules/antagonists/zombie/datum_zombie.dm
index 2b0c6407870..4971d252a32 100644
--- a/code/modules/antagonists/zombie/datum_zombie.dm
+++ b/code/modules/antagonists/zombie/datum_zombie.dm
@@ -7,6 +7,7 @@ RESTRICT_TYPE(/datum/antagonist/zombie)
special_role = SPECIAL_ROLE_ZOMBIE
clown_gain_text = "B-Braaaaaains... Honk..."
clown_removal_text = "You feel funnier again."
+ wiki_page_name = "Zombie"
var/list/old_languages = list() // someone make this better to prevent langs changing if species changes while zombie somehow
var/static/list/zombie_traits = list(TRAIT_LANGUAGE_LOCKED, TRAIT_GOTTAGOSLOW, TRAIT_ABSTRACT_HANDS, TRAIT_SLOW_GRABBER)
var/datum/unarmed_attack/claws/claw_attack
@@ -27,6 +28,12 @@ RESTRICT_TYPE(/datum/antagonist/zombie)
owner.RemoveSpell(/datum/spell/zombie_claws)
return ..()
+/datum/antagonist/zombie/add_owner_to_gamemode()
+ SSticker.mode.zombies |= owner
+
+/datum/antagonist/zombie/remove_owner_from_gamemode()
+ SSticker.mode.zombies -= owner
+
/datum/antagonist/zombie/greet()
var/list/messages = list()
. = messages