[MIRROR] Super Mega Mob Spawn Refactor [MDB IGNORE] (#10075)

* Super Mega Mob Spawn Refactor

* Super Mega Mob Spawn Refactor

* Update modular changes

* update kilo

* i wish unit tests would work on my machine

* fix kilo...?

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-12-23 02:30:55 +00:00
committed by GitHub
co-authored by tralezab Tom Gandalf
parent 3c20fe4c12
commit b894ce42d4
121 changed files with 2529 additions and 2630 deletions
@@ -0,0 +1,79 @@
//jobs from ss13 but DEAD.
/obj/effect/mob_spawn/corpse/human/cargo_tech
name = "Cargo Tech"
outfit = /datum/outfit/job/cargo_tech
icon_state = "corpsecargotech"
/obj/effect/mob_spawn/corpse/human/cook
name = "Cook"
outfit = /datum/outfit/job/cook
icon_state = "corpsecook"
/obj/effect/mob_spawn/corpse/human/doctor
name = "Doctor"
outfit = /datum/outfit/job/doctor
icon_state = "corpsedoctor"
/obj/effect/mob_spawn/corpse/human/geneticist
name = "Geneticist"
outfit = /datum/outfit/job/geneticist
icon_state = "corpsescientist"
/obj/effect/mob_spawn/corpse/human/engineer
name = "Engineer"
outfit = /datum/outfit/job/engineer/gloved
icon_state = "corpseengineer"
/obj/effect/mob_spawn/corpse/human/engineer/rig
outfit = /datum/outfit/job/engineer/gloved/rig
/obj/effect/mob_spawn/corpse/human/engineer/rig/gunner
outfit = /datum/outfit/job/engineer/gloved/rig/gunner
/obj/effect/mob_spawn/corpse/human/clown
name = "Clown"
outfit = /datum/outfit/job/clown
icon_state = "corpseclown"
/obj/effect/mob_spawn/corpse/human/scientist
name = "Scientist"
outfit = /datum/outfit/job/scientist
icon_state = "corpsescientist"
/obj/effect/mob_spawn/corpse/human/miner
name = "Shaft Miner"
outfit = /datum/outfit/job/miner
icon_state = "corpseminer"
/obj/effect/mob_spawn/corpse/human/miner/rig
outfit = /datum/outfit/job/miner/equipped/hardsuit
/obj/effect/mob_spawn/corpse/human/miner/explorer
outfit = /datum/outfit/job/miner/equipped
/obj/effect/mob_spawn/corpse/human/plasmaman
mob_species = /datum/species/plasmaman
outfit = /datum/outfit/plasmaman
/obj/effect/mob_spawn/corpse/human/assistant
name = "Assistant"
outfit = /datum/outfit/job/assistant
icon_state = "corpsegreytider"
/obj/effect/mob_spawn/corpse/human/assistant/beesease_infection/special(mob/living/spawned_mob)
. = ..()
spawned_mob.ForceContractDisease(new /datum/disease/beesease)
/obj/effect/mob_spawn/corpse/human/assistant/brainrot_infection/special(mob/living/spawned_mob)
. = ..()
spawned_mob.ForceContractDisease(new /datum/disease/brainrot)
/obj/effect/mob_spawn/corpse/human/assistant/spanishflu_infection/special(mob/living/spawned_mob)
. = ..()
spawned_mob.ForceContractDisease(new /datum/disease/fluspanish)
/obj/effect/mob_spawn/corpse/human/bartender
name = "Bartender"
outfit = /datum/outfit/spacebartender
@@ -171,7 +171,7 @@
if(prob(50))
neck = /obj/item/bedsheet/rd/royal_cape
if(prob(10) && !visualsOnly) //visualsonly = not a golem = can't put things in the pockets without a jumpsuit
l_pocket = pick(list(/obj/item/crowbar/power, /obj/item/screwdriver/power, /obj/item/weldingtool/experimental))
l_pocket = pick(list(/obj/item/crowbar/power, /obj/item/screwdriver/power, /obj/item/weldingtool/electric)) // SKYRAT EDIT CHANGE FROM /obj/item/weldingtool/experimental
//this is so pointlessly gendered but whatever bro i'm here to refactor not judge
/datum/outfit/consumed_dame
@@ -0,0 +1,229 @@
///all the corpses meant as mob drops yes, these definitely could be sorted properly. i invite (you) to do it!!
/obj/effect/mob_spawn/corpse/human/syndicatesoldier
name = "Syndicate Operative"
hairstyle = "Bald"
facial_hairstyle = "Shaved"
outfit = /datum/outfit/syndicatesoldiercorpse
/datum/outfit/syndicatesoldiercorpse
name = "Syndicate Operative Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas
head = /obj/item/clothing/head/helmet/swat
back = /obj/item/storage/backpack
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
/obj/effect/mob_spawn/corpse/human/syndicatecommando
name = "Syndicate Commando"
hairstyle = "Bald"
facial_hairstyle = "Shaved"
outfit = /datum/outfit/syndicatecommandocorpse
/datum/outfit/syndicatecommandocorpse
name = "Syndicate Commando Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/space/hardsuit/syndi
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas/syndicate
back = /obj/item/tank/jetpack/oxygen
r_pocket = /obj/item/tank/internals/emergency_oxygen
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
/obj/effect/mob_spawn/corpse/human/syndicatestormtrooper
name = "Syndicate Stormtrooper"
hairstyle = "Bald"
facial_hairstyle = "Shaved"
outfit = /datum/outfit/syndicatestormtroopercorpse
/datum/outfit/syndicatestormtroopercorpse
name = "Syndicate Stormtrooper Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas/syndicate
back = /obj/item/tank/jetpack/oxygen/harness
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
/obj/effect/mob_spawn/human/clown/corpse
skin_tone = "caucasian1"
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/obj/effect/mob_spawn/corpse/human/pirate
name = "Pirate"
skin_tone = "caucasian1" //all pirates are white because it's easier that way
outfit = /datum/outfit/piratecorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/piratecorpse
name = "Pirate Corpse"
uniform = /obj/item/clothing/under/costume/pirate
shoes = /obj/item/clothing/shoes/jackboots
glasses = /obj/item/clothing/glasses/eyepatch
head = /obj/item/clothing/head/bandana
/obj/effect/mob_spawn/corpse/human/pirate/ranged
name = "Pirate Gunner"
outfit = /datum/outfit/piratecorpse/ranged
/datum/outfit/piratecorpse/ranged
name = "Pirate Gunner Corpse"
suit = /obj/item/clothing/suit/pirate
head = /obj/item/clothing/head/pirate
/obj/effect/mob_spawn/corpse/human/russian
name = "Russian"
outfit = /datum/outfit/russiancorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/russiancorpse
name = "Russian Corpse"
uniform = /obj/item/clothing/under/costume/soviet
shoes = /obj/item/clothing/shoes/jackboots
head = /obj/item/clothing/head/bearpelt
gloves = /obj/item/clothing/gloves/color/black
mask = /obj/item/clothing/mask/gas
/obj/effect/mob_spawn/corpse/human/russian/ranged
outfit = /datum/outfit/russiancorpse/ranged
/datum/outfit/russiancorpse/ranged
name = "Ranged Russian Corpse"
head = /obj/item/clothing/head/ushanka
/obj/effect/mob_spawn/corpse/human/russian/ranged/trooper
outfit = /datum/outfit/russiancorpse/ranged/trooper
/datum/outfit/russiancorpse/ranged/trooper
name = "Ranged Russian Trooper Corpse"
uniform = /obj/item/clothing/under/syndicate/camo
suit = /obj/item/clothing/suit/armor/bulletproof
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat
ears = /obj/item/radio/headset
head = /obj/item/clothing/head/helmet/alt
mask = /obj/item/clothing/mask/balaclava
/obj/effect/mob_spawn/corpse/human/russian/ranged/officer
name = "Russian Officer"
outfit = /datum/outfit/russiancorpse/officer
/datum/outfit/russiancorpse/officer
name = "Russian Officer Corpse"
uniform = /obj/item/clothing/under/costume/russian_officer
suit = /obj/item/clothing/suit/security/officer/russian
shoes = /obj/item/clothing/shoes/combat
ears = /obj/item/radio/headset
head = /obj/item/clothing/head/ushanka
/obj/effect/mob_spawn/corpse/human/wizard
name = "Space Wizard Corpse"
outfit = /datum/outfit/wizardcorpse
hairstyle = "Bald"
facial_hairstyle = "Beard (Very Long)"
facial_haircolor = COLOR_WHITE
skin_tone = "caucasian1"
/datum/outfit/wizardcorpse
name = "Space Wizard Corpse"
uniform = /obj/item/clothing/under/color/lightpurple
suit = /obj/item/clothing/suit/wizrobe
shoes = /obj/item/clothing/shoes/sandal/magic
head = /obj/item/clothing/head/wizard
/obj/effect/mob_spawn/corpse/human/nanotrasensoldier
name = "\improper Nanotrasen Private Security Officer"
outfit = /datum/outfit/nanotrasensoldiercorpse2
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/nanotrasensoldiercorpse2
name = "NT Private Security Officer Corpse"
uniform = /obj/item/clothing/under/rank/security/officer
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas/sechailer/swat
head = /obj/item/clothing/head/helmet/swat/nanotrasen
back = /obj/item/storage/backpack/security
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/corpse/private_security/tradepost_officer
/obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier
name = "Nanotrasen Private Security Officer"
outfit = /datum/outfit/nanotrasenassaultsoldiercorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/nanotrasenassaultsoldiercorpse
name = "NT Assault Officer Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
ears = /obj/item/radio/headset
mask = /obj/item/clothing/mask/gas/sechailer/swat
head = /obj/item/clothing/head/helmet/swat/nanotrasen
back = /obj/item/storage/backpack/security
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/corpse/assault
/obj/effect/mob_spawn/corpse/human/cat_butcher
name = "The Cat Surgeon"
hairstyle = "Cut Hair"
facial_hairstyle = "Watson Mustache"
skin_tone = "caucasian1"
outfit = /datum/outfit/cat_butcher
/datum/outfit/cat_butcher
name = "Cat Butcher Uniform"
uniform = /obj/item/clothing/under/rank/medical/doctor/green
suit = /obj/item/clothing/suit/apron/surgical
shoes = /obj/item/clothing/shoes/sneakers/white
gloves = /obj/item/clothing/gloves/color/latex/nitrile
ears = /obj/item/radio/headset
back = /obj/item/storage/backpack/satchel/med
id = /obj/item/card/id/advanced
glasses = /obj/item/clothing/glasses/hud/health
id_trim = /datum/id_trim/away/cat_surgeon
/obj/effect/mob_spawn/corpse/human/bee_terrorist
name = "BLF Operative"
outfit = /datum/outfit/bee_terrorist
/datum/outfit/bee_terrorist
name = "BLF Operative"
uniform = /obj/item/clothing/under/color/yellow
suit = /obj/item/clothing/suit/hooded/bee_costume
shoes = /obj/item/clothing/shoes/sneakers/yellow
gloves = /obj/item/clothing/gloves/color/yellow
ears = /obj/item/radio/headset
belt = /obj/item/storage/belt/fannypack/yellow/bee_terrorist
id = /obj/item/card/id/advanced
l_pocket = /obj/item/paper/fluff/bee_objectives
mask = /obj/item/clothing/mask/animal/rat/bee
@@ -0,0 +1,60 @@
//generally nanotrasen themed corpses
/obj/effect/mob_spawn/corpse/human/bridgeofficer
name = "Bridge Officer"
outfit = /datum/outfit/nanotrasenbridgeofficer
/datum/outfit/nanotrasenbridgeofficer
name = "Bridge Officer"
ears = /obj/item/radio/headset/heads/hop
uniform = /obj/item/clothing/under/rank/centcom/officer
suit = /obj/item/clothing/suit/armor/bulletproof
shoes = /obj/item/clothing/shoes/sneakers/black
glasses = /obj/item/clothing/glasses/sunglasses
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/corpse/bridge_officer
/obj/effect/mob_spawn/corpse/human/commander
name = "Commander"
outfit = /datum/outfit/nanotrasencommander
/datum/outfit/nanotrasencommander
name = "\improper Nanotrasen Private Security Commander"
uniform = /obj/item/clothing/under/rank/centcom/commander
suit = /obj/item/clothing/suit/armor/bulletproof
ears = /obj/item/radio/headset/heads/captain
glasses = /obj/item/clothing/glasses/eyepatch
mask = /obj/item/clothing/mask/cigarette/cigar/cohiba
head = /obj/item/clothing/head/centhat
gloves = /obj/item/clothing/gloves/tackler/combat
shoes = /obj/item/clothing/shoes/combat/swat
r_pocket = /obj/item/lighter
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/corpse/commander
/obj/effect/mob_spawn/corpse/human/nanotrasensoldier
name = "\improper Nanotrasen Private Security Officer"
outfit = /datum/outfit/nanotrasensoldier
/datum/outfit/nanotrasensoldier
name = "NT Private Security Officer"
uniform = /obj/item/clothing/under/rank/security/officer
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/tackler/combat
mask = /obj/item/clothing/mask/gas/sechailer/swat
head = /obj/item/clothing/head/helmet/swat/nanotrasen
back = /obj/item/storage/backpack/security
id = /obj/item/card/id/advanced
id_trim = /datum/id_trim/centcom/corpse/private_security
/obj/effect/mob_spawn/corpse/human/intern //this is specifically the comms intern from the event
name = "CentCom Intern"
outfit = /datum/outfit/centcom/centcom_intern/unarmed
mob_name = "Nameless Intern"
/obj/effect/mob_spawn/corpse/human/intern/special(mob/living/carbon/human/spawned_human)
. = ..()
spawned_human.gender = MALE //we're making it canon babies
spawned_human.update_body()
@@ -0,0 +1,40 @@
//full of weird and wacky mob spawns. this is probably the darkest corner of mob spawns even after cleanup so be ready for shitcode
///dead ai, blue screen and everything.
/obj/effect/mob_spawn/corpse/ai
mob_type = /mob/living/silicon/ai/spawned
/obj/effect/mob_spawn/corpse/ai/create(mob/user, newname)
var/ai_already_present = locate(/mob/living/silicon/ai) in loc
if(ai_already_present)
return
. = ..()
/obj/effect/mob_spawn/corpse/ai/special(mob/living/silicon/ai/spawned/dead_ai)
. = ..()
dead_ai.name = src.name
dead_ai.real_name = src.name
dead_ai.aiPDA.toff = TRUE //turns the AI's PDA messenger off, stopping it showing up on player PDAs
///dead slimes, with a var for whatever color you want.
/obj/effect/mob_spawn/corpse/slime
mob_type = /mob/living/simple_animal/slime
icon = 'icons/mob/slimes.dmi'
icon_state = "grey baby slime" //sets the icon in the map editor
///the color of the slime you're spawning.
var/slime_species = "grey"
/obj/effect/mob_spawn/corpse/slime/special(mob/living/simple_animal/slime/spawned_slime)
. = ..()
spawned_slime.set_colour(slime_species)
///dead facehuggers, great for xeno ruins so you can have a cool ruin without spiraling the entire round into xenomorph hell. also, this is a terrible terrible artifact of time
/obj/effect/mob_spawn/corpse/facehugger
//mostly for unit tests to not get alarmed (which by all means it should because this is a mess)
mob_type = /obj/item/clothing/mask/facehugger
/obj/effect/mob_spawn/corpse/facehugger/create(mob/user)
var/obj/item/clothing/mask/facehugger/spawned_facehugger = new mob_type(loc)
spawned_facehugger.Die()
qdel(src)
@@ -0,0 +1,19 @@
//corpses that only differentiate themselves by representing a species
/obj/effect/mob_spawn/corpse/human/skeleton
mob_species = /datum/species/skeleton
/obj/effect/mob_spawn/corpse/human/zombie
mob_species = /datum/species/zombie
/obj/effect/mob_spawn/corpse/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