diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
index 28e87cfefd5..d169df9c145 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
@@ -217,7 +217,7 @@
/turf/simulated/floor/beach/sand,
/area/ruin/powered/beach)
"aV" = (
-/obj/effect/mob_spawn/human/beach/alive,
+/obj/effect/mob_spawn/human/alive/beach,
/turf/simulated/floor/beach/sand,
/area/ruin/powered/beach)
"aZ" = (
@@ -335,7 +335,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/effect/mob_spawn/human/beach/alive/lifeguard,
+/obj/effect/mob_spawn/human/alive/beach/lifeguard,
/turf/simulated/floor/wood,
/area/ruin/powered/beach)
"bJ" = (
@@ -473,7 +473,7 @@
/turf/simulated/floor/beach/sand,
/area/ruin/powered/beach)
"wb" = (
-/obj/effect/mob_spawn/human/bartender/alive,
+/obj/effect/mob_spawn/human/alive/bartender,
/turf/simulated/floor/wood,
/area/ruin/powered/beach)
"yc" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
index 13db53afa1a..fb1bfa1fac8 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_winter.dmm
@@ -465,7 +465,7 @@
/turf/simulated/wall/r_wall,
/area/ruin/powered/snow_biodome)
"XR" = (
-/obj/effect/mob_spawn/human/skeleton,
+/obj/effect/mob_spawn/human/corpse/skeleton,
/turf/simulated/floor/mineral/silver,
/area/ruin/powered/snow_biodome)
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
index 0f05d567702..a23f8ea91f6 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
@@ -550,7 +550,7 @@
/turf/simulated/floor/plasteel,
/area/ruin/powered/animal_hospital)
"bv" = (
-/obj/effect/mob_spawn/human/doctor/alive/lavaland{
+/obj/effect/mob_spawn/human/alive/doctor/lavaland{
dir = 4
},
/turf/simulated/floor/plasteel/white,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
index 89c101e9e7d..48f520bc450 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm
@@ -88,7 +88,7 @@
/turf/simulated/floor/mineral/titanium/purple,
/area/shuttle/freegolem)
"t" = (
-/obj/effect/mob_spawn/human/golem/adamantine,
+/obj/effect/mob_spawn/human/alive/golem/adamantine,
/turf/simulated/floor/mineral/titanium/purple,
/area/shuttle/freegolem)
"u" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
index 0fcbef9d01c..899178dd717 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm
@@ -107,7 +107,7 @@
/turf/simulated/floor/pod/dark,
/area/ruin/powered)
"x" = (
-/obj/effect/mob_spawn/human/hermit,
+/obj/effect/mob_spawn/human/alive/hermit,
/turf/simulated/floor/pod/dark,
/area/ruin/powered)
"y" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
index 22d25165648..ce4eb17b4d6 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
@@ -131,7 +131,7 @@
/turf/simulated/floor/plasteel/freezer,
/area/ruin/powered/seedvault)
"t" = (
-/obj/effect/mob_spawn/human/seed_vault,
+/obj/effect/mob_spawn/human/alive/seed_vault,
/turf/simulated/floor/plasteel/freezer,
/area/ruin/powered/seedvault)
"u" = (
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm
index bd0dff5ba2f..e785d01709e 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm
@@ -80,7 +80,7 @@
/turf/simulated/floor/pod/dark,
/area/ruin/powered)
"q" = (
-/obj/effect/mob_spawn/human/miner/explorer{
+/obj/effect/mob_spawn/human/corpse/miner/explorer{
brute_damage = 150;
oxy_damage = 50
},
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
index 0b8c4389ded..e473128c8e4 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
@@ -24,7 +24,7 @@
/turf/simulated/floor/plating/abductor,
/area/ruin/unpowered/misc_lavaruin)
"i" = (
-/obj/effect/mob_spawn/human/abductor,
+/obj/effect/mob_spawn/human/corpse/abductor,
/turf/simulated/floor/plating/abductor,
/area/ruin/unpowered/misc_lavaruin)
"j" = (
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm b/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
index 7e72e19d22e..2a6c21b9737 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
@@ -18,19 +18,19 @@
/area/ruin/space/unpowered)
"f" = (
/obj/item/broken_bottle,
-/obj/effect/mob_spawn/human/mime/corpse,
+/obj/effect/mob_spawn/human/corpse/mime,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"g" = (
/obj/item/shard,
-/obj/effect/mob_spawn/human/mime/corpse,
+/obj/effect/mob_spawn/human/corpse/mime,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"h" = (
/obj/item/shard{
icon_state = "medium"
},
-/obj/effect/mob_spawn/human/mime/corpse,
+/obj/effect/mob_spawn/human/corpse/mime,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"j" = (
@@ -76,13 +76,13 @@
/turf/simulated/floor/plating/asteroid/airless,
/area/ruin/space/unpowered)
"t" = (
-/obj/effect/mob_spawn/human/mime/corpse{
+/obj/effect/mob_spawn/human/corpse/mime{
name = "Mime Pilot"
},
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"x" = (
-/obj/effect/mob_spawn/human/clown/corpse,
+/obj/effect/mob_spawn/human/corpse/clown,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"y" = (
@@ -123,7 +123,7 @@
/turf/simulated/floor/plating/airless,
/area/ruin/space/unpowered)
"C" = (
-/obj/effect/mob_spawn/human/corpse/clownmili,
+/obj/effect/mob_spawn/human/corpse/clown/soldier,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"D" = (
@@ -151,7 +151,7 @@
/turf/simulated/floor/plating/asteroid/airless,
/area/ruin/space/unpowered)
"H" = (
-/obj/effect/mob_spawn/human/clown/corpse{
+/obj/effect/mob_spawn/human/corpse/clown{
name = "Clown Pilot"
},
/turf/simulated/floor/plasteel/airless,
@@ -178,7 +178,7 @@
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"O" = (
-/obj/effect/mob_spawn/human/corpse/clownoff,
+/obj/effect/mob_spawn/human/corpse/clown/officer,
/turf/simulated/floor/plasteel/airless,
/area/ruin/space/unpowered)
"P" = (
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
index faa64ac4f4d..83556eb8308 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
@@ -4535,14 +4535,14 @@
/obj/effect/decal/warning_stripes/southeast,
/obj/effect/decal/warning_stripes/northwest,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/mob_spawn/human/oldsec,
+/obj/effect/mob_spawn/human/alive/old/sec,
/turf/simulated/floor/plasteel,
/area/ruin/ancientstation)
"kJ" = (
/obj/effect/decal/warning_stripes/southeast,
/obj/effect/decal/warning_stripes/northwest,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/mob_spawn/human/oldsci,
+/obj/effect/mob_spawn/human/alive/old/sci,
/turf/simulated/floor/plasteel,
/area/ruin/ancientstation)
"kK" = (
@@ -4550,7 +4550,7 @@
/obj/effect/decal/warning_stripes/southeast,
/obj/effect/decal/warning_stripes/northwest,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/mob_spawn/human/oldeng,
+/obj/effect/mob_spawn/human/alive/old/eng,
/turf/simulated/floor/plasteel,
/area/ruin/ancientstation)
"kL" = (
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm
index 63e6e3def6a..9d1643efb92 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm
@@ -533,7 +533,7 @@
/turf/simulated/floor/engine,
/area/ruin/unpowered/syndicate_space_base/testlab)
"fP" = (
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -1154,7 +1154,7 @@
},
/area/ruin/unpowered/syndicate_space_base/virology)
"lM" = (
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -1454,7 +1454,7 @@
/turf/simulated/floor/plating,
/area/ruin/unpowered/syndicate_space_base/engineering)
"pa" = (
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -3757,7 +3757,7 @@
/turf/simulated/floor/plating,
/area/ruin/unpowered/syndicate_space_base/engineering)
"MV" = (
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -4071,7 +4071,7 @@
dir = 1;
on = 1
},
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -4436,7 +4436,7 @@
/area/ruin/unpowered/syndicate_space_base/engineering)
"VP" = (
/obj/machinery/light,
-/obj/effect/mob_spawn/human/spacebase_syndicate{
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate{
dir = 8
},
/turf/simulated/floor/plasteel{
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index b2708354f0f..c4832a3440e 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -85456,7 +85456,7 @@
"sEl" = (
/obj/structure/bed,
/obj/effect/landmark/spawner/nukedisc_respawn,
-/obj/effect/mob_spawn/human/skeleton,
+/obj/effect/mob_spawn/human/corpse/skeleton,
/mob/living/simple_animal/hostile/scarybat,
/turf/simulated/floor/plasteel{
icon_state = "vault"
diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
index 0d77cabb5a8..1cd8acb0013 100644
--- a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
+++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm
@@ -6,12 +6,12 @@
icon = 'icons/obj/wizard.dmi'
icon_state = "construct"
desc = "The incomplete body of a golem. Add ten sheets of any mineral to finish."
- var/shell_type = /obj/effect/mob_spawn/human/golem
+ var/shell_type = /obj/effect/mob_spawn/human/alive/golem
w_class = WEIGHT_CLASS_BULKY
/obj/item/golem_shell/servant
name = "incomplete servant golem shell"
- shell_type = /obj/effect/mob_spawn/human/golem/servant
+ shell_type = /obj/effect/mob_spawn/human/alive/golem/servant
/obj/item/golem_shell/attackby(obj/item/I, mob/user, params)
..()
@@ -56,7 +56,7 @@
else
to_chat(user, "You can't build a golem out of this kind of material.")
-/obj/effect/mob_spawn/human/golem
+/obj/effect/mob_spawn/human/alive/golem
name = "inert free golem shell"
desc = "A humanoid shape, empty, lifeless, and full of potential."
mob_name = "a free golem"
@@ -78,7 +78,7 @@
travel the stars with a single declaration: \"Yeah go do whatever.\" Though you are bound to the one who created you, it is customary in your society to repeat those same words to newborn \
golems, so that no golem may ever be forced to serve again."
-/obj/effect/mob_spawn/human/golem/Initialize(mapload, datum/species/golem/species = null, mob/creator = null)
+/obj/effect/mob_spawn/human/alive/golem/Initialize(mapload, datum/species/golem/species = null, mob/creator = null)
if(species) //spawners list uses object name to register so this goes before ..()
name += " ([initial(species.prefix)])"
mob_species = species
@@ -93,7 +93,7 @@
Serve [creator], and assist [creator.p_them()] in completing [creator.p_their()] goals at any cost."
owner = creator
-/obj/effect/mob_spawn/human/golem/special(mob/living/new_spawn, name)
+/obj/effect/mob_spawn/human/alive/golem/special(mob/living/new_spawn, name)
var/datum/species/golem/X = mob_species
to_chat(new_spawn, "[initial(X.info_text)]")
if(!owner)
@@ -139,7 +139,7 @@
else
new_spawn.mind.assigned_role = "Free Golem"
-/obj/effect/mob_spawn/human/golem/attack_hand(mob/user)
+/obj/effect/mob_spawn/human/alive/golem/attack_hand(mob/user)
. = ..()
if(.)
return
@@ -162,7 +162,7 @@
user.death()
return
-/obj/effect/mob_spawn/human/golem/attackby(obj/item/I, mob/living/carbon/user, params)
+/obj/effect/mob_spawn/human/alive/golem/attackby(obj/item/I, mob/living/carbon/user, params)
if(!istype(I, /obj/item/slimepotion/transference))
return ..()
if(iscarbon(user) && can_transfer)
@@ -171,7 +171,7 @@
return
if(QDELETED(src) || uses <= 0 || user.stat >= 1 || QDELETED(I))
return
- if(istype(src, /obj/effect/mob_spawn/human/golem/servant) && !isgolem(user))
+ if(istype(src, /obj/effect/mob_spawn/human/alive/golem/servant) && !isgolem(user))
has_owner = FALSE
if(isgolem(user) && can_transfer)
var/datum/species/golem/g = user.dna.species
@@ -193,12 +193,12 @@
to_chat(g, "You have become the [g.dna.species]. Your allegiances, alliances, and roles are still the same as they were prior to using [I]!")
qdel(I)
-/obj/effect/mob_spawn/human/golem/servant
+/obj/effect/mob_spawn/human/alive/golem/servant
has_owner = TRUE
name = "inert servant golem shell"
mob_name = "a servant golem"
-/obj/effect/mob_spawn/human/golem/adamantine
+/obj/effect/mob_spawn/human/alive/golem/adamantine
name = "dust-caked free golem shell"
desc = "A humanoid shape, empty, lifeless, and full of potential."
mob_name = "a free golem"
diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation_spawns.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation_spawns.dm
index ab868439cee..a8efc578594 100644
--- a/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation_spawns.dm
+++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/oldstation_spawns.dm
@@ -1,6 +1,6 @@
//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
-/obj/effect/mob_spawn/human/oldsec
+/obj/effect/mob_spawn/human/alive/old/sec
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a security uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a security officer"
@@ -22,11 +22,11 @@
l_pocket = /obj/item/flash
assignedrole = "Ancient Crew"
-/obj/effect/mob_spawn/human/oldsec/Destroy()
+/obj/effect/mob_spawn/human/alive/old/sec/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
-/obj/effect/mob_spawn/human/oldmed
+/obj/effect/mob_spawn/human/alive/old/med
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a medical uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a medical doctor"
@@ -48,11 +48,11 @@
r_pocket = /obj/item/stack/medical/ointment
assignedrole = "Ancient Crew"
-/obj/effect/mob_spawn/human/oldmed/Destroy()
+/obj/effect/mob_spawn/human/alive/old/med/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
-/obj/effect/mob_spawn/human/oldeng
+/obj/effect/mob_spawn/human/alive/old/eng
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise an engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "an engineer"
@@ -74,11 +74,11 @@
l_pocket = /obj/item/tank/internals/emergency_oxygen
assignedrole = "Ancient Crew"
-/obj/effect/mob_spawn/human/oldeng/Destroy()
+/obj/effect/mob_spawn/human/alive/old/eng/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
-/obj/effect/mob_spawn/human/oldsci
+/obj/effect/mob_spawn/human/alive/old/sci
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a science uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a scientist"
@@ -99,7 +99,7 @@
l_pocket = /obj/item/stack/medical/bruise_pack
assignedrole = "Ancient Crew"
-/obj/effect/mob_spawn/human/oldsci/Destroy()
+/obj/effect/mob_spawn/human/alive/old/sci/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
diff --git a/code/modules/awaymissions/mob_spawn.dm b/code/modules/awaymissions/mob_spawn.dm
index 6191dce21c0..318a9494d76 100644
--- a/code/modules/awaymissions/mob_spawn.dm
+++ b/code/modules/awaymissions/mob_spawn.dm
@@ -301,193 +301,10 @@
roundstart = FALSE //you could use these for alive fake humans on roundstart but this is more common scenario
-//Non-human spawners
+//////////Alive ones, used as "core" for ghost roles now and in future.//////////
-/obj/effect/mob_spawn/mouse
- name = "sleeper"
- mob_name = "space mouse"
- mob_type = /mob/living/simple_animal/mouse
- death = FALSE
- roundstart = FALSE
- icon = 'icons/obj/cryogenic2.dmi'
- icon_state = "sleeper"
- flavour_text = "Squeak!"
-
-/obj/effect/mob_spawn/cow
- name = "sleeper"
- mob_name = "space cow"
- mob_type = /mob/living/simple_animal/cow
- death = FALSE
- roundstart = FALSE
- mob_gender = FEMALE
- icon = 'icons/obj/cryogenic2.dmi'
- icon_state = "sleeper"
- flavour_text = "Moo!"
-
-
-///////////Civilians//////////////////////
-
-/obj/effect/mob_spawn/human/corpse/assistant
- name = "Assistant"
- mob_name = "Assistant"
- id_job = "Assistant"
- outfit = /datum/outfit/job/assistant
-
-/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection
- disease = /datum/disease/beesease
-
-/obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection
- disease = /datum/disease/brainrot
-
-/obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection
- disease = /datum/disease/fluspanish
-
-/obj/effect/mob_spawn/human/cook
- name = "Cook"
- mob_name = "Chef"
- id_job = "Chef"
- outfit = /datum/outfit/job/chef
-
-/obj/effect/mob_spawn/human/doctor
- name = "Doctor"
- mob_name = "Medical Doctor"
- id_job = "Medical Doctor"
- outfit = /datum/outfit/job/doctor
-
-/obj/effect/mob_spawn/human/doctor/alive
- death = FALSE
- roundstart = FALSE
- random = TRUE
- name = "sleeper"
- icon = 'icons/obj/cryogenic2.dmi'
- icon_state = "sleeper"
- flavour_text = "You are a space doctor!"
- assignedrole = "Space Doctor"
-
-/obj/effect/mob_spawn/human/doctor/alive/equip(mob/living/carbon/human/H)
- ..()
- // Remove radio and PDA so they wouldn't annoy station crew.
- var/list/del_types = list(/obj/item/pda, /obj/item/radio/headset)
- for(var/del_type in del_types)
- var/obj/item/I = locate(del_type) in H
- qdel(I)
-
-/obj/effect/mob_spawn/human/engineer
- name = "Engineer"
- mob_name = "Engineer"
- id_job = "Engineer"
- outfit = /datum/outfit/job/engineer
-
-/obj/effect/mob_spawn/human/engineer/hardsuit
- outfit = /datum/outfit/job/engineer/suit
-
-/datum/outfit/job/engineer/suit
- name = "Station Engineer"
-
- uniform = /obj/item/clothing/under/rank/engineering/engineer
- belt = /obj/item/storage/belt/utility/full
- suit = /obj/item/clothing/suit/space/hardsuit/engine
- shoes = /obj/item/clothing/shoes/workboots
- mask = /obj/item/clothing/mask/breath
- id = /obj/item/card/id/engineering
- l_pocket = /obj/item/t_scanner
-
- backpack = /obj/item/storage/backpack/industrial
-
-
-/obj/effect/mob_spawn/human/clown
- name = "Clown"
- mob_name = "Clown"
- id_job = "Clown"
- outfit = /datum/outfit/job/clown
-
-/obj/effect/mob_spawn/human/clown/Initialize()
- mob_name = pick(GLOB.clown_names)
- return ..()
-
-/obj/effect/mob_spawn/human/corpse/clownmili
- name = "Clown Soldier"
- outfit = /datum/outfit/clownsoldier
-
-/obj/effect/mob_spawn/human/corpse/clownmili/Initialize()
- mob_name = "Officer [pick(GLOB.clown_names)]"
- return ..()
-
-/obj/effect/mob_spawn/human/corpse/clownoff
- name = "Clown Officer"
- outfit = /datum/outfit/clownofficer
-
-/obj/effect/mob_spawn/human/corpse/clownoff/Initialize()
- mob_name = "Honk Specialist [pick(GLOB.clown_names)]"
- return ..()
-
-
-/datum/outfit/clownsoldier
- name = "Clown Soldier"
- uniform = /obj/item/clothing/under/costume/soldieruniform
- suit = /obj/item/clothing/suit/soldiercoat
- shoes = /obj/item/clothing/shoes/clown_shoes
- l_ear = /obj/item/radio/headset
- mask = /obj/item/clothing/mask/gas/clown_hat
- l_pocket = /obj/item/bikehorn
- back = /obj/item/storage/backpack/clown
- head = /obj/item/clothing/head/stalhelm
-
-/datum/outfit/clownofficer
- name = "Clown Officer"
- uniform = /obj/item/clothing/under/costume/officeruniform
- suit = /obj/item/clothing/suit/officercoat
- shoes = /obj/item/clothing/shoes/clown_shoes
- l_ear = /obj/item/radio/headset
- mask = /obj/item/clothing/mask/gas/clown_hat
- l_pocket = /obj/item/bikehorn
- back = /obj/item/storage/backpack/clown
- head = /obj/item/clothing/head/armyofficer
-
-/obj/effect/mob_spawn/human/mime
- name = "Mime"
- mob_name = "Mime"
- id_job = "Mime"
- outfit = /datum/outfit/job/mime
-
-/obj/effect/mob_spawn/human/mime/Initialize()
- mob_name = pick(GLOB.mime_names)
- return ..()
-
-/obj/effect/mob_spawn/human/scientist
- name = "Scientist"
- mob_name = "Scientist"
- id_job = "Scientist"
- outfit = /datum/outfit/job/scientist
-
-/obj/effect/mob_spawn/human/miner
- name = "Shaft Miner"
- mob_name = "Shaft Miner"
- id_job = "Shaft Miner"
- outfit = /datum/outfit/job/mining/suit
-
-/datum/outfit/job/mining/suit
- name = "Shaft Miner"
- suit = /obj/item/clothing/suit/space/hardsuit/mining
- uniform = /obj/item/clothing/under/rank/cargo/miner
- gloves = /obj/item/clothing/gloves/fingerless
- shoes = /obj/item/clothing/shoes/workboots
- l_ear = /obj/item/radio/headset/headset_cargo/mining
- id = /obj/item/card/id/shaftminer
- l_pocket = /obj/item/reagent_containers/food/pill/patch/styptic
- r_pocket = /obj/item/flashlight/seclite
-
-/obj/effect/mob_spawn/human/miner/explorer
- outfit = /datum/outfit/job/mining/equipped
-
-/obj/effect/mob_spawn/human/bartender
- name = "Space Bartender"
- mob_name = "Bartender"
- id_job = "Bartender"
- id_access_list = list(ACCESS_BAR)
- outfit = /datum/outfit/spacebartender
-
-/obj/effect/mob_spawn/human/bartender/alive
+//Lavaland Bartender (ghost role).
+/obj/effect/mob_spawn/human/alive/bartender
death = FALSE
roundstart = FALSE
random = TRUE
@@ -499,29 +316,8 @@
flavour_text = "You are a space bartender! Time to mix drinks and change lives. Wait, where did your bar just get transported to?"
assignedrole = "Space Bartender"
-/obj/effect/mob_spawn/human/beach/alive/lifeguard
- flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff. Then suddenly your entire beach was transported to this strange hell. \
- You aren't trained for this, but you'll still keep your guests alive!"
- description = "Try to survive on lavaland with the pitiful equipment of a lifeguard. Or hide in your biodome."
- mob_gender = "female"
- name = "lifeguard sleeper"
- id_job = "Lifeguard"
- uniform = /obj/item/clothing/under/pants/shorts/red
-
-/datum/outfit/spacebartender
- name = "Space Bartender"
- uniform = /obj/item/clothing/under/rank/civilian/bartender
- suit = /obj/item/clothing/suit/armor/vest
- belt = /obj/item/storage/belt/bandolier/full
- shoes = /obj/item/clothing/shoes/black
- glasses = /obj/item/clothing/glasses/sunglasses/reagent
- id = /obj/item/card/id
-
-
-/obj/effect/mob_spawn/human/beach
- outfit = /datum/outfit/beachbum
-
-/obj/effect/mob_spawn/human/beach/alive
+//Lavaland Beach Turist(?) (ghost role).
+/obj/effect/mob_spawn/human/alive/beach
death = FALSE
roundstart = FALSE
random = TRUE
@@ -534,79 +330,17 @@
description = "Try to survive on lavaland or just enjoy the beach, waiting for visitors."
assignedrole = "Beach Bum"
-/datum/outfit/beachbum
- name = "Beach Bum"
- glasses = /obj/item/clothing/glasses/sunglasses
+//Lavaland Beach Guard (ghost role).
+/obj/effect/mob_spawn/human/alive/beach/lifeguard
+ flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff. Then suddenly your entire beach was transported to this strange hell. \
+ You aren't trained for this, but you'll still keep your guests alive!"
+ description = "Try to survive on lavaland with the pitiful equipment of a lifeguard. Or hide in your biodome."
+ mob_gender = "female"
+ name = "lifeguard sleeper"
+ id_job = "Lifeguard"
uniform = /obj/item/clothing/under/pants/shorts/red
-/////////////////Spooky Undead//////////////////////
-
-/obj/effect/mob_spawn/human/skeleton
- name = "skeletal remains"
- mob_name = "skeleton"
- mob_species = /datum/species/skeleton/brittle
- mob_gender = NEUTER
-
-/obj/effect/mob_spawn/human/skeleton/alive
- death = FALSE
- roundstart = FALSE
- icon = 'icons/effects/blood.dmi'
- mob_species = /datum/species/skeleton
- icon_state = "remains"
- description = "Be a spooky scary skeleton." //not mapped in anywhere so admin spawner, who knows what they'll use this for.
- flavour_text = "By unknown powers, your skeletal remains have been reanimated! Walk this mortal plain and terrorize all living adventurers who dare cross your path."
- assignedrole = "Skeleton"
-
-/////////////////Officers//////////////////////
-
-/obj/effect/mob_spawn/human/bridgeofficer
- name = "Bridge Officer"
- mob_name = "Bridge Officer"
- id_job = "Bridge Officer"
- id_access = "Captain"
- outfit = /datum/outfit/nanotrasenbridgeofficercorpse
-
-/datum/outfit/nanotrasenbridgeofficercorpse
- name = "Bridge Officer Corpse"
- l_ear = /obj/item/radio/headset/heads/hop
- uniform = /obj/item/clothing/under/rank/centcom
- suit = /obj/item/clothing/suit/armor/bulletproof
- shoes = /obj/item/clothing/shoes/black
- glasses = /obj/item/clothing/glasses/sunglasses
- id = /obj/item/card/id
-
-
-/obj/effect/mob_spawn/human/commander
- name = "Commander"
- mob_name = "Commander"
- id_job = "Commander"
- id_access = "Captain"
- outfit = /datum/outfit/nanotrasencommandercorpse
-
-/datum/outfit/nanotrasencommandercorpse
- name = "Commander Corpse"
-
- uniform = /obj/item/clothing/under/rank/centcom/officer
- gloves = /obj/item/clothing/gloves/color/white
- shoes = /obj/item/clothing/shoes/centcom
- head = /obj/item/clothing/head/beret/centcom/officer
- glasses = /obj/item/clothing/glasses/hud/security/sunglasses
- id = /obj/item/card/id/centcom
-
-
-
-/obj/effect/mob_spawn/human/abductor
- name = "abductor"
- mob_name = "alien"
- mob_species = /datum/species/abductor
- outfit = /datum/outfit/abductorcorpse
-
-/datum/outfit/abductorcorpse
- name = "Abductor Corpse"
- uniform = /obj/item/clothing/under/color/grey
- shoes = /obj/item/clothing/shoes/combat
-
-//For ghost bar.
+//Space(?) Bar Patron (ghost role).
/obj/effect/mob_spawn/human/alive/space_bar_patron
name = "Bar cryogenics"
mob_name = "Bar patron"
@@ -630,3 +364,288 @@
shoes = /obj/item/clothing/shoes/black
suit = /obj/item/clothing/suit/armor/vest
glasses = /obj/item/clothing/glasses/sunglasses/reagent
+
+//Lavaland Animal Doctor (ghost role).
+/obj/effect/mob_spawn/human/alive/doctor
+ death = FALSE
+ roundstart = FALSE
+ random = TRUE
+ name = "sleeper"
+ icon = 'icons/obj/cryogenic2.dmi'
+ icon_state = "sleeper"
+ flavour_text = "You are a space doctor!"
+ assignedrole = "Space Doctor"
+
+/obj/effect/mob_spawn/human/alive/doctor/equip(mob/living/carbon/human/H)
+ ..()
+ // Remove radio and PDA so they wouldn't annoy station crew.
+ var/list/del_types = list(/obj/item/pda, /obj/item/radio/headset)
+ for(var/del_type in del_types)
+ var/obj/item/I = locate(del_type) in H
+ qdel(I)
+
+//Spooky Scary Skeleton...
+/obj/effect/mob_spawn/human/alive/skeleton
+ death = FALSE
+ roundstart = FALSE
+ icon = 'icons/mob/simple_human.dmi'
+ mob_species = /datum/species/skeleton
+ icon_state = "skeleton"
+ description = "Be a spooky scary skeleton." //not mapped in anywhere so admin spawner, who knows what they'll use this for.
+ flavour_text = "By unknown powers, your skeletal remains have been reanimated! Walk this mortal plain and terrorize all living adventurers who dare cross your path."
+ assignedrole = "Skeleton"
+
+//////////Corpses, they can be used for "decoration" purpose.//////////
+
+//Default Abductor corpse.
+/obj/effect/mob_spawn/human/corpse/abductor
+ name = "abductor"
+ mob_name = "alien"
+ mob_species = /datum/species/abductor
+ outfit = /datum/outfit/abductorcorpse
+
+/datum/outfit/abductorcorpse
+ name = "Abductor Corpse"
+ uniform = /obj/item/clothing/under/color/grey
+ shoes = /obj/item/clothing/shoes/combat
+
+//Assistant Corpse
+/obj/effect/mob_spawn/human/corpse/assistant
+ name = "Assistant"
+ mob_name = "Assistant"
+ id_job = "Assistant"
+ outfit = /datum/outfit/job/assistant
+
+//Yes you guess it, they have disease in corpse.
+/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection
+ disease = /datum/disease/beesease
+
+/obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection
+ disease = /datum/disease/brainrot
+
+/obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection
+ disease = /datum/disease/fluspanish
+
+//Bartender corpse.
+/obj/effect/mob_spawn/human/corpse/bartender
+ name = "Space Bartender"
+ mob_name = "Bartender"
+ id_job = "Bartender"
+ id_access_list = list(ACCESS_BAR)
+ outfit = /datum/outfit/spacebartender
+
+/datum/outfit/spacebartender
+ name = "Space Bartender"
+ uniform = /obj/item/clothing/under/rank/civilian/bartender
+ suit = /obj/item/clothing/suit/armor/vest
+ belt = /obj/item/storage/belt/bandolier/full
+ shoes = /obj/item/clothing/shoes/black
+ glasses = /obj/item/clothing/glasses/sunglasses/reagent
+ id = /obj/item/card/id
+
+//Lavaland Beach Turist (?) corpse.
+/obj/effect/mob_spawn/human/corpse/beach
+ outfit = /datum/outfit/beachbum
+
+/datum/outfit/beachbum
+ name = "Beach Bum"
+ glasses = /obj/item/clothing/glasses/sunglasses
+ uniform = /obj/item/clothing/under/pants/shorts/red
+
+//Bridge Officer corpse.
+/obj/effect/mob_spawn/human/corpse/bridgeofficer
+ name = "Bridge Officer"
+ mob_name = "Bridge Officer"
+ id_job = "Bridge Officer"
+ id_access = "Captain"
+ outfit = /datum/outfit/nanotrasenbridgeofficercorpse
+
+/datum/outfit/nanotrasenbridgeofficercorpse
+ name = "Bridge Officer Corpse"
+ l_ear = /obj/item/radio/headset/heads/hop
+ uniform = /obj/item/clothing/under/rank/centcom
+ suit = /obj/item/clothing/suit/armor/bulletproof
+ shoes = /obj/item/clothing/shoes/black
+ glasses = /obj/item/clothing/glasses/sunglasses
+ id = /obj/item/card/id
+
+//Clown corpse.
+/obj/effect/mob_spawn/human/corpse/clown
+ name = "Clown"
+ mob_name = "Clown"
+ id_job = "Clown"
+ outfit = /datum/outfit/job/clown
+
+/obj/effect/mob_spawn/human/corpse/clown/Initialize()
+ mob_name = pick(GLOB.clown_names)
+ return ..()
+
+//Clown Officer corpse.
+/obj/effect/mob_spawn/human/corpse/clown/officer
+ name = "Clown Officer"
+ outfit = /datum/outfit/clownofficer
+
+/obj/effect/mob_spawn/human/corpse/clown/officer/Initialize()
+ mob_name = "Honk Specialist [pick(GLOB.clown_names)]"
+ return ..()
+/datum/outfit/clownofficer
+ name = "Clown Officer"
+ uniform = /obj/item/clothing/under/costume/officeruniform
+ suit = /obj/item/clothing/suit/officercoat
+ shoes = /obj/item/clothing/shoes/clown_shoes
+ l_ear = /obj/item/radio/headset
+ mask = /obj/item/clothing/mask/gas/clown_hat
+ l_pocket = /obj/item/bikehorn
+ back = /obj/item/storage/backpack/clown
+ head = /obj/item/clothing/head/armyofficer
+
+//Clown Soldier corpse
+/obj/effect/mob_spawn/human/corpse/clown/soldier
+ name = "Clown Soldier"
+ outfit = /datum/outfit/clownsoldier
+
+/obj/effect/mob_spawn/human/corpse/clown/soldier/Initialize()
+ mob_name = "Officer [pick(GLOB.clown_names)]"
+ return ..()
+
+/datum/outfit/clownsoldier
+ name = "Clown Soldier"
+ uniform = /obj/item/clothing/under/costume/soldieruniform
+ suit = /obj/item/clothing/suit/soldiercoat
+ shoes = /obj/item/clothing/shoes/clown_shoes
+ l_ear = /obj/item/radio/headset
+ mask = /obj/item/clothing/mask/gas/clown_hat
+ l_pocket = /obj/item/bikehorn
+ back = /obj/item/storage/backpack/clown
+ head = /obj/item/clothing/head/stalhelm
+
+//Commander (?) corpse.
+/obj/effect/mob_spawn/human/corpse/commander
+ name = "Commander"
+ mob_name = "Commander"
+ id_job = "Commander"
+ id_access = "Captain"
+ outfit = /datum/outfit/nanotrasencommandercorpse
+
+/datum/outfit/nanotrasencommandercorpse
+ name = "Commander Corpse"
+
+ uniform = /obj/item/clothing/under/rank/centcom/officer
+ gloves = /obj/item/clothing/gloves/color/white
+ shoes = /obj/item/clothing/shoes/centcom
+ head = /obj/item/clothing/head/beret/centcom/officer
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ id = /obj/item/card/id/centcom
+
+//Chef corpse
+/obj/effect/mob_spawn/human/corpse/cook
+ name = "Cook"
+ mob_name = "Chef"
+ id_job = "Chef"
+ outfit = /datum/outfit/job/chef
+
+//Medical Doctor corpse.
+/obj/effect/mob_spawn/human/corpse/doctor
+ name = "Doctor"
+ mob_name = "Medical Doctor"
+ id_job = "Medical Doctor"
+ outfit = /datum/outfit/job/doctor
+
+//Engineer corpse.
+/obj/effect/mob_spawn/human/corpse/engineer
+ name = "Engineer"
+ mob_name = "Engineer"
+ id_job = "Engineer"
+ outfit = /datum/outfit/job/engineer
+
+//Hardsuit Engineer corpse.
+/obj/effect/mob_spawn/human/corpse/engineer/hardsuit
+ outfit = /datum/outfit/job/engineer/suit
+
+/datum/outfit/job/engineer/suit
+ name = "Station Engineer"
+
+ uniform = /obj/item/clothing/under/rank/engineering/engineer
+ belt = /obj/item/storage/belt/utility/full
+ suit = /obj/item/clothing/suit/space/hardsuit/engine
+ shoes = /obj/item/clothing/shoes/workboots
+ mask = /obj/item/clothing/mask/breath
+ id = /obj/item/card/id/engineering
+ l_pocket = /obj/item/t_scanner
+
+ backpack = /obj/item/storage/backpack/industrial
+
+//Mime corpse.
+/obj/effect/mob_spawn/human/corpse/mime
+ name = "Mime"
+ mob_name = "Mime"
+ id_job = "Mime"
+ outfit = /datum/outfit/job/mime
+
+/obj/effect/mob_spawn/human/corpse/mime/Initialize()
+ mob_name = pick(GLOB.mime_names)
+ return ..()
+
+//Normal Miner corpse.
+/obj/effect/mob_spawn/human/corpse/miner
+ name = "Shaft Miner"
+ mob_name = "Shaft Miner"
+ id_job = "Shaft Miner"
+ outfit = /datum/outfit/job/mining/equipped
+
+//Hardsuit Miner corpse.
+/obj/effect/mob_spawn/human/corpse/miner/explorer
+ outfit = /datum/outfit/job/mining/suit
+
+/datum/outfit/job/mining/suit
+ name = "Shaft Miner"
+ suit = /obj/item/clothing/suit/space/hardsuit/mining
+ uniform = /obj/item/clothing/under/rank/cargo/miner
+ gloves = /obj/item/clothing/gloves/fingerless
+ shoes = /obj/item/clothing/shoes/workboots
+ l_ear = /obj/item/radio/headset/headset_cargo/mining
+ id = /obj/item/card/id/shaftminer
+ l_pocket = /obj/item/reagent_containers/food/pill/patch/styptic
+ r_pocket = /obj/item/flashlight/seclite
+
+//Scientist corpse.
+/obj/effect/mob_spawn/human/corpse/scientist
+ name = "Scientist"
+ mob_name = "Scientist"
+ id_job = "Scientist"
+ outfit = /datum/outfit/job/scientist
+
+/obj/effect/mob_spawn/human/corpse/skeleton
+ name = "skeletal remains"
+ mob_name = "skeleton"
+ mob_species = /datum/species/skeleton/brittle
+ mob_gender = NEUTER
+
+////////Non-human spawners////////
+
+/obj/effect/mob_spawn/mouse
+ name = "sleeper"
+ mob_name = "space mouse"
+ mob_type = /mob/living/simple_animal/mouse
+ death = FALSE
+ roundstart = FALSE
+ icon = 'icons/obj/cryogenic2.dmi'
+ icon_state = "sleeper"
+ flavour_text = "Squeak!"
+
+/obj/effect/mob_spawn/cow
+ name = "sleeper"
+ mob_name = "space cow"
+ mob_type = /mob/living/simple_animal/cow
+ death = FALSE
+ roundstart = FALSE
+ mob_gender = FEMALE
+ icon = 'icons/obj/cryogenic2.dmi'
+ icon_state = "sleeper"
+ flavour_text = "Moo!"
+
+
+
+
+
+
diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm
index 5118162f7e7..f86b28c3e1f 100644
--- a/code/modules/mob/living/simple_animal/corpse.dm
+++ b/code/modules/mob/living/simple_animal/corpse.dm
@@ -42,11 +42,11 @@
id = /obj/item/card/id
-/obj/effect/mob_spawn/human/clown/corpse
+/obj/effect/mob_spawn/human/corpse/clown/corpse
roundstart = TRUE
instant = TRUE
-/obj/effect/mob_spawn/human/mime/corpse
+/obj/effect/mob_spawn/human/corpse/mime/corpse
roundstart = TRUE
instant = TRUE
@@ -102,7 +102,7 @@
name = "Corpse of a Space Wizard"
outfit = /datum/outfit/wizardcorpse
-/obj/effect/mob_spawn/human/corpse/clownoff/Initialize(mapload)
+/obj/effect/mob_spawn/human/corpse/clown/officer/Initialize(mapload)
mob_name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]"
. = ..()
diff --git a/code/modules/ruins/lavalandruin_code/animal_hospital.dm b/code/modules/ruins/lavalandruin_code/animal_hospital.dm
index 18ea13770a6..696dff6e8e8 100644
--- a/code/modules/ruins/lavalandruin_code/animal_hospital.dm
+++ b/code/modules/ruins/lavalandruin_code/animal_hospital.dm
@@ -2,7 +2,7 @@
name = "Important Notice - Mrs. Henderson"
info = "Nothing of interest to report."
-/obj/effect/mob_spawn/human/doctor/alive/lavaland
+/obj/effect/mob_spawn/human/alive/doctor/lavaland
name = "broken rejuvenation pod"
desc = "A small sleeper typically used to instantly restore minor wounds. This one seems broken, and its occupant is comatose."
mob_name = "a translocated vet"
@@ -13,7 +13,7 @@
assignedrole = "Translocated Vet"
allow_species_pick = TRUE
-/obj/effect/mob_spawn/human/doctor/alive/lavaland/Destroy()
+/obj/effect/mob_spawn/human/alive/doctor/lavaland/Destroy()
var/obj/structure/fluff/empty_sleeper/S = new(drop_location())
S.setDir(dir)
return ..()
diff --git a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm
index 8b184d2bf17..38c22cef2cd 100644
--- a/code/modules/ruins/lavalandruin_code/ash_walker_den.dm
+++ b/code/modules/ruins/lavalandruin_code/ash_walker_den.dm
@@ -50,11 +50,11 @@
/obj/structure/lavaland/ash_walker/proc/spawn_mob()
if(meat_counter >= ASH_WALKER_SPAWN_THRESHOLD)
- new /obj/effect/mob_spawn/human/ash_walker(get_step(loc, pick(GLOB.alldirs)))
+ new /obj/effect/mob_spawn/human/alive/ash_walker(get_step(loc, pick(GLOB.alldirs)))
visible_message("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!")
meat_counter -= ASH_WALKER_SPAWN_THRESHOLD
-/obj/effect/mob_spawn/human/ash_walker
+/obj/effect/mob_spawn/human/alive/ash_walker
name = "ash walker egg"
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within."
mob_name = "an ash walker"
@@ -74,14 +74,14 @@
You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest."
assignedrole = "Ash Walker"
-/obj/effect/mob_spawn/human/ash_walker/special(mob/living/carbon/human/new_spawn)
+/obj/effect/mob_spawn/human/alive/ash_walker/special(mob/living/carbon/human/new_spawn)
new_spawn.rename_character(new_spawn.real_name, new_spawn.dna.species.get_random_name(new_spawn.gender))
new_spawn.mind.offstation_role = TRUE
to_chat(new_spawn, "Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Glory to the Necropolis!")
to_chat(new_spawn, "For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Ash_Walker)")
-/obj/effect/mob_spawn/human/ash_walker/New()
+/obj/effect/mob_spawn/human/alive/ash_walker/New()
. = ..()
var/area/A = get_area(src)
if(A)
diff --git a/code/modules/ruins/lavalandruin_code/hermit.dm b/code/modules/ruins/lavalandruin_code/hermit.dm
index b0d8f91d2e9..855a545b3fc 100644
--- a/code/modules/ruins/lavalandruin_code/hermit.dm
+++ b/code/modules/ruins/lavalandruin_code/hermit.dm
@@ -1,5 +1,5 @@
//Malfunctioning cryostasis sleepers: Spawns in makeshift shelters in lavaland. Ghosts become hermits with knowledge of how they got to where they are now.
-/obj/effect/mob_spawn/human/hermit
+/obj/effect/mob_spawn/human/alive/hermit
name = "malfunctioning cryostasis sleeper"
desc = "A humming sleeper with a silhouetted occupant inside. Its stasis function is broken and it's likely being used as a bed."
mob_name = "a stranded hermit"
@@ -16,7 +16,7 @@
the fresh air of Earth. These thoughts are dispelled by yet another recollection of how you got here... "
assignedrole = "Hermit"
-/obj/effect/mob_spawn/human/hermit/Initialize(mapload)
+/obj/effect/mob_spawn/human/alive/hermit/Initialize(mapload)
. = ..()
var/arrpee = rand(1,4)
switch(arrpee)
@@ -49,6 +49,6 @@
outfit.shoes = /obj/item/clothing/shoes/black
outfit.back = /obj/item/storage/backpack
-/obj/effect/mob_spawn/human/hermit/Destroy()
+/obj/effect/mob_spawn/human/alive/hermit/Destroy()
new/obj/structure/fluff/empty_cryostasis_sleeper(get_turf(src))
return ..()
diff --git a/code/modules/ruins/lavalandruin_code/seed_vault.dm b/code/modules/ruins/lavalandruin_code/seed_vault.dm
index c0b6bbea223..7c70935c9f3 100644
--- a/code/modules/ruins/lavalandruin_code/seed_vault.dm
+++ b/code/modules/ruins/lavalandruin_code/seed_vault.dm
@@ -8,7 +8,7 @@
/obj/item/seeds/sunflower/moonflower = 8
)
-/obj/effect/mob_spawn/human/seed_vault
+/obj/effect/mob_spawn/human/alive/seed_vault
name = "preserved terrarium"
desc = "An ancient machine that seems to be used for storing plant matter. The glass is obstructed by a mat of vines."
mob_name = "a lifebringer"
@@ -24,11 +24,11 @@
for contact from your creators. Estimated time of last contact: Deployment, 5x10^3 millennia ago."
assignedrole = "Lifebringer"
-/obj/effect/mob_spawn/human/seed_vault/special(mob/living/new_spawn)
+/obj/effect/mob_spawn/human/alive/seed_vault/special(mob/living/new_spawn)
var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \
"Venus", "Sprout","Cocoa", "Strawberry", "Citrus", "Oak", "Cactus", "Pepper", "Juniper")
new_spawn.rename_character(null, plant_name)
-/obj/effect/mob_spawn/human/seed_vault/Destroy()
+/obj/effect/mob_spawn/human/alive/seed_vault/Destroy()
new/obj/structure/fluff/empty_terrarium(get_turf(src))
return ..()
diff --git a/code/modules/ruins/syndicate_space_base.dm b/code/modules/ruins/syndicate_space_base.dm
index e9a7f4260b0..b3e6044c21e 100644
--- a/code/modules/ruins/syndicate_space_base.dm
+++ b/code/modules/ruins/syndicate_space_base.dm
@@ -21,7 +21,7 @@
resistance_flags = FIRE_PROOF
// Spawners
-/obj/effect/mob_spawn/human/spacebase_syndicate
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate
name = "Syndicate Researcher sleeper"
mob_name = "Syndicate Researcher"
roundstart = FALSE
@@ -37,7 +37,7 @@
allow_species_pick = TRUE
skin_tone = 255
-/obj/effect/mob_spawn/human/spacebase_syndicate/Destroy()
+/obj/effect/mob_spawn/human/alive/spacebase_syndicate/Destroy()
var/obj/structure/fluff/empty_sleeper/syndicate/S = new /obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
S.setDir(dir)
return ..()
diff --git a/tools/UpdatePaths/Scripts/21728_mob_spawn_and_corpses.txt b/tools/UpdatePaths/Scripts/21728_mob_spawn_and_corpses.txt
new file mode 100644
index 00000000000..6f8159eb5bd
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/21728_mob_spawn_and_corpses.txt
@@ -0,0 +1,36 @@
+/obj/effect/mob_spawn/human/ash_walker : /obj/effect/mob_spawn/human/alive/ash_walker {@OLD}
+/obj/effect/mob_spawn/human/bartender/alive : /obj/effect/mob_spawn/human/alive/bartender {@OLD}
+/obj/effect/mob_spawn/human/beach/alive : /obj/effect/mob_spawn/human/alive/beach {@OLD}
+/obj/effect/mob_spawn/human/beach/alive/lifeguard : /obj/effect/mob_spawn/human/alive/beach/lifeguard {@OLD}
+/obj/effect/mob_spawn/human/doctor/alive : /obj/effect/mob_spawn/human/alive/doctor {@OLD}
+/obj/effect/mob_spawn/human/doctor/alive/lavaland : /obj/effect/mob_spawn/human/alive/doctor/lavaland {@OLD}
+/obj/effect/mob_spawn/human/golem : /obj/effect/mob_spawn/human/alive/golem {@OLD}
+/obj/effect/mob_spawn/human/golem/adamantine : /obj/effect/mob_spawn/human/alive/golem/adamantine {@OLD}
+/obj/effect/mob_spawn/human/oldeng : /obj/effect/mob_spawn/human/alive/old/eng {@OLD}
+/obj/effect/mob_spawn/human/oldmed : /obj/effect/mob_spawn/human/alive/old/med {@OLD}
+/obj/effect/mob_spawn/human/oldsci : /obj/effect/mob_spawn/human/alive/old/sci {@OLD}
+/obj/effect/mob_spawn/human/oldsec : /obj/effect/mob_spawn/human/alive/old/sec {@OLD}
+/obj/effect/mob_spawn/human/seed_vault : /obj/effect/mob_spawn/human/alive/seed_vault {@OLD}
+/obj/effect/mob_spawn/human/skeleton/alive : /obj/effect/mob_spawn/human/alive/skeleton {@OLD}
+/obj/effect/mob_spawn/human/spacebase_syndicate : /obj/effect/mob_spawn/human/alive/spacebase_syndicate {@OLD}
+/obj/effect/mob_spawn/human/hermit : /obj/effect/mob_spawn/human/alive/hermit {@OLD}
+/obj/effect/mob_spawn/human/abductor : /obj/effect/mob_spawn/human/corpse/abductor {@OLD}
+/obj/effect/mob_spawn/human/bartender : /obj/effect/mob_spawn/human/corpse/bartender {@OLD}
+/obj/effect/mob_spawn/human/beach : /obj/effect/mob_spawn/human/corpse/beach {@OLD}
+/obj/effect/mob_spawn/human/bridgeofficer : /obj/effect/mob_spawn/human/corpse/bridgeofficer {@OLD}
+/obj/effect/mob_spawn/human/clown : /obj/effect/mob_spawn/human/corpse/clown {@OLD}
+/obj/effect/mob_spawn/human/clown/corpse : /obj/effect/mob_spawn/human/corpse/clown {@OLD}
+/obj/effect/mob_spawn/human/clown/corpse : /obj/effect/mob_spawn/human/corpse/clown {@OLD}
+/obj/effect/mob_spawn/human/corpse/clownoff : /obj/effect/mob_spawn/human/corpse/clown/officer {@OLD}
+/obj/effect/mob_spawn/human/corpse/clownmili : /obj/effect/mob_spawn/human/corpse/clown/soldier {@OLD}
+/obj/effect/mob_spawn/human/commander : /obj/effect/mob_spawn/human/corpse/commander {@OLD}
+/obj/effect/mob_spawn/human/cook : /obj/effect/mob_spawn/human/corpse/cook {@OLD}
+/obj/effect/mob_spawn/human/doctor : /obj/effect/mob_spawn/human/corpse/doctor {@OLD}
+/obj/effect/mob_spawn/human/engineer : /obj/effect/mob_spawn/human/corpse/engineer {@OLD}
+/obj/effect/mob_spawn/human/mime : /obj/effect/mob_spawn/human/corpse/mime {@OLD}
+/obj/effect/mob_spawn/human/mime/corpse : /obj/effect/mob_spawn/human/corpse/mime {@OLD}
+/obj/effect/mob_spawn/human/miner : /obj/effect/mob_spawn/human/corpse/miner {@OLD}
+/obj/effect/mob_spawn/human/scientist : /obj/effect/mob_spawn/human/corpse/scientist {@OLD}
+/obj/effect/mob_spawn/human/miner/explorer : /obj/effect/mob_spawn/human/corpse/miner/explorer {@OLD}
+/obj/effect/mob_spawn/human/scientist : /obj/effect/mob_spawn/human/corpse/scientist {@OLD}
+/obj/effect/mob_spawn/human/skeleton : /obj/effect/mob_spawn/human/corpse/skeleton {@OLD}
\ No newline at end of file