diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index 64b405bbd5..3b5b862559 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -203,9 +203,9 @@
var/mob/living/silicon/robot/R
switch(borg_to_spawn)
if("Medical")
- R = new /mob/living/silicon/robot/syndicate/medical(T)
+ R = new /mob/living/silicon/robot/modules/syndicate/medical(T)
else
- R = new /mob/living/silicon/robot/syndicate(T) //Assault borg by default
+ R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default
var/brainfirstname = pick(GLOB.first_names_male)
if(prob(50))
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 917242609e..d66e6f808a 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -941,3 +941,124 @@
riding_datum.unequip_buckle_inhands(M)
riding_datum.restore_position(M)
. = ..(M, force)
+
+/mob/living/carbon/human/species
+ var/race = null
+
+/mob/living/carbon/human/species/Initialize()
+ . = ..()
+ set_species(race)
+
+/mob/living/carbon/human/species/abductor
+ race = /datum/species/abductor
+
+/mob/living/carbon/human/species/android
+ race = /datum/species/android
+
+/mob/living/carbon/human/species/angel
+ race = /datum/species/angel
+
+/mob/living/carbon/human/species/corporate
+ race = /datum/species/corporate
+
+/mob/living/carbon/human/species/fly
+ race = /datum/species/fly
+
+/mob/living/carbon/human/species/golem
+ race = /datum/species/golem
+
+/mob/living/carbon/human/species/golem/random
+ race = /datum/species/golem/random
+
+/mob/living/carbon/human/species/golem/adamantine
+ race = /datum/species/golem/adamantine
+
+/mob/living/carbon/human/species/golem/plasma
+ race = /datum/species/golem/plasma
+
+/mob/living/carbon/human/species/golem/diamond
+ race = /datum/species/golem/diamond
+
+/mob/living/carbon/human/species/golem/gold
+ race = /datum/species/golem/gold
+
+/mob/living/carbon/human/species/golem/silver
+ race = /datum/species/golem/silver
+
+/mob/living/carbon/human/species/golem/plasteel
+ race = /datum/species/golem/plasteel
+
+/mob/living/carbon/human/species/golem/titanium
+ race = /datum/species/golem/titanium
+
+/mob/living/carbon/human/species/golem/plastitanium
+ race = /datum/species/golem/plastitanium
+
+/mob/living/carbon/human/species/golem/alien_alloy
+ race = /datum/species/golem/alloy
+
+/mob/living/carbon/human/species/golem/wood
+ race = /datum/species/golem/wood
+
+/mob/living/carbon/human/species/golem/uranium
+ race = /datum/species/golem/uranium
+
+/mob/living/carbon/human/species/golem/sand
+ race = /datum/species/golem/sand
+
+/mob/living/carbon/human/species/golem/glass
+ race = /datum/species/golem/glass
+
+/mob/living/carbon/human/species/golem/bluespace
+ race = /datum/species/golem/bluespace
+
+/mob/living/carbon/human/species/golem/bananium
+ race = /datum/species/golem/bananium
+
+/mob/living/carbon/human/species/golem/blood_cult
+ race = /datum/species/golem/runic
+
+/mob/living/carbon/human/species/golem/cloth
+ race = /datum/species/golem/cloth
+
+/mob/living/carbon/human/species/golem/plastic
+ race = /datum/species/golem/plastic
+
+/mob/living/carbon/human/species/jelly
+ race = /datum/species/jelly
+
+/mob/living/carbon/human/species/jelly/slime
+ race = /datum/species/jelly/slime
+
+/mob/living/carbon/human/species/lizard
+ race = /datum/species/lizard
+
+/mob/living/carbon/human/species/lizard/ashwalker
+ race = /datum/species/lizard/ashwalker
+
+/mob/living/carbon/human/species/plasma
+ race = /datum/species/plasmaman
+
+/mob/living/carbon/human/species/pod
+ race = /datum/species/pod
+
+/mob/living/carbon/human/species/shadow
+ race = /datum/species/shadow
+
+/mob/living/carbon/human/species/skeleton
+ race = /datum/species/skeleton
+
+/mob/living/carbon/human/species/synth
+ race = /datum/species/synth
+
+/mob/living/carbon/human/species/synth/military
+ race = /datum/species/synth/military
+
+/mob/living/carbon/human/species/zombie
+ race = /datum/species/zombie
+
+/mob/living/carbon/human/species/zombie/infectious
+ race = /datum/species/zombie/infectious
+
+/mob/living/carbon/human/species/zombie/krokodil_addict
+ race = /datum/species/krokodil_addict
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 01baf578ee..e264f00cf1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -810,7 +810,35 @@
cell = null
qdel(src)
-/mob/living/silicon/robot/syndicate
+/mob/living/silicon/robot/modules
+ var/set_module = null
+
+/mob/living/silicon/robot/modules/Initialize()
+ . = ..()
+ module.transform_to(set_module)
+
+/mob/living/silicon/robot/modules/standard
+ set_module = /obj/item/robot_module/standard
+
+/mob/living/silicon/robot/modules/medical
+ set_module = /obj/item/robot_module/medical
+
+/mob/living/silicon/robot/modules/engineering
+ set_module = /obj/item/robot_module/engineering
+
+/mob/living/silicon/robot/modules/security
+ set_module = /obj/item/robot_module/security
+
+/mob/living/silicon/robot/modules/peacekeeper
+ set_module = /obj/item/robot_module/peacekeeper
+
+/mob/living/silicon/robot/modules/miner
+ set_module = /obj/item/robot_module/miner
+
+/mob/living/silicon/robot/modules/janitor
+ set_module = /obj/item/robot_module/janitor
+
+/mob/living/silicon/robot/modules/syndicate
icon_state = "syndie_bloodhound"
faction = list("syndicate")
bubble_icon = "syndibot"
@@ -822,25 +850,24 @@
You are armed with powerful offensive tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \
Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \
Help the operatives secure the disk at all costs!"
- var/set_module = /obj/item/robot_module/syndicate
+ set_module = /obj/item/robot_module/syndicate
-/mob/living/silicon/robot/syndicate/Initialize()
+/mob/living/silicon/robot/modules/syndicate/Initialize()
. = ..()
cell.maxcharge = 25000
cell.charge = 25000
radio = new /obj/item/device/radio/borg/syndicate(src)
- module.transform_to(set_module)
laws = new /datum/ai_laws/syndicate_override()
addtimer(CALLBACK(src, .proc/show_playstyle), 5)
-/mob/living/silicon/robot/syndicate/proc/show_playstyle()
+/mob/living/silicon/robot/modules/syndicate/proc/show_playstyle()
if(playstyle_string)
to_chat(src, playstyle_string)
-/mob/living/silicon/robot/syndicate/ResetModule()
+/mob/living/silicon/robot/modules/syndicate/ResetModule()
return
-/mob/living/silicon/robot/syndicate/medical
+/mob/living/silicon/robot/modules/syndicate/medical
icon_state = "syndi-medi"
playstyle_string = "You are a Syndicate medical cyborg!
\
You are armed with powerful medical tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 27284a1712..8c4f80b772 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -139,9 +139,9 @@
if("syndiborg")
var/path
if(prob(50))
- path = /mob/living/silicon/robot/syndicate
+ path = /mob/living/silicon/robot/modules/syndicate
else
- path = /mob/living/silicon/robot/syndicate/medical
+ path = /mob/living/silicon/robot/modules/syndicate/medical
new_mob = new path(M.loc)
if("drone")
new_mob = new /mob/living/simple_animal/drone/polymorphed(M.loc)