Dynamic Human Icon Generation For Simple/Basic Mobs (& Cardboard Cutouts) (#72517)

## About The Pull Request
revive of #68760
this time a proc, not an element
this time supports cardboard cutouts
this time supports mob corpses

![image](https://user-images.githubusercontent.com/23585223/211064291-81070650-189f-4afa-8116-81b687e3ea35.png)

## Why It's Good For The Game
prevents these icons ever being outdated, they'll always look what they
are supposed to, saves spriting work

## Changelog
🆑 Fikou, a hood by Viro
refactor: humanoid mobs and cardboard cutouts automatically generate
their sprites, they no longer will be outdated
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>
This commit is contained in:
Fikou
2023-01-18 21:04:10 +01:00
committed by GitHub
parent b520d5342f
commit 519bf69869
55 changed files with 804 additions and 475 deletions
+97 -9
View File
@@ -65,6 +65,27 @@
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
/obj/effect/mob_spawn/corpse/human/syndicatepilot
name = "Syndicate Pilot"
hairstyle = "Bald"
facial_hairstyle = "Shaved"
outfit = /datum/outfit/syndicatepilotcorpse
/datum/outfit/syndicatepilotcorpse
name = "Syndicate Pilot Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest/alt
shoes = /obj/item/clothing/shoes/combat
neck = /obj/item/clothing/neck/large_scarf/syndie
glasses = /obj/item/clothing/glasses/cold
gloves = /obj/item/clothing/gloves/combat
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/pirate
name = "Pirate"
skin_tone = "caucasian1" //all pirates are white because it's easier that way
@@ -76,9 +97,25 @@
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/costume/pirate/bandana
/obj/effect/mob_spawn/corpse/human/pirate/melee
name = "Pirate Swashbuckler"
outfit = /datum/outfit/piratecorpse/melee
/datum/outfit/piratecorpse/melee
name = "Pirate Swashbuckler Corpse"
glasses = /obj/item/clothing/glasses/eyepatch
head = /obj/item/clothing/head/costume/pirate/bandana/armored
/obj/effect/mob_spawn/corpse/human/pirate/melee/space
name = "Pirate Swashbuckler - Space"
outfit = /datum/outfit/piratecorpse/melee/space
/datum/outfit/piratecorpse/melee/space
name = "Pirate Swashbuckler Corpse - Space"
suit = /obj/item/clothing/suit/space/pirate
head = /obj/item/clothing/head/helmet/space/pirate/bandana
back = /obj/item/tank/jetpack/carbondioxide
/obj/effect/mob_spawn/corpse/human/pirate/ranged
name = "Pirate Gunner"
@@ -86,9 +123,19 @@
/datum/outfit/piratecorpse/ranged
name = "Pirate Gunner Corpse"
suit = /obj/item/clothing/suit/costume/pirate
head = /obj/item/clothing/head/costume/pirate
glasses = /obj/item/clothing/glasses/eyepatch
suit = /obj/item/clothing/suit/costume/pirate/armored
head = /obj/item/clothing/head/costume/pirate/armored
/obj/effect/mob_spawn/corpse/human/pirate/ranged/space
name = "Pirate Gunner - Space"
outfit = /datum/outfit/piratecorpse/ranged/space
/datum/outfit/piratecorpse/ranged/space
name = "Pirate Gunner Corpse - Space"
suit = /obj/item/clothing/suit/space/pirate
head = /obj/item/clothing/head/helmet/space/pirate
back = /obj/item/tank/jetpack/carbondioxide
/obj/effect/mob_spawn/corpse/human/russian
name = "Russian"
@@ -156,15 +203,32 @@
shoes = /obj/item/clothing/shoes/sandal/magic
head = /obj/item/clothing/head/wizard
/obj/effect/mob_spawn/corpse/human/wizard/dark
name = "Dark Wizard Corpse"
outfit = /datum/outfit/wizardcorpse/dark
/datum/outfit/wizardcorpse/dark
head = /obj/item/clothing/head/wizard/hood
/obj/effect/mob_spawn/corpse/human/wizard/paper
name = "Paper Wizard Corpse"
outfit = /datum/outfit/paper_wizard
/datum/outfit/paper_wizard
name = "Paper Wizard"
uniform = /obj/item/clothing/under/color/white
suit = /obj/item/clothing/suit/wizrobe/paper
shoes = /obj/item/clothing/shoes/sandal/magic
head = /obj/item/clothing/head/collectable/paper
/obj/effect/mob_spawn/corpse/human/nanotrasensoldier
name = "\improper Nanotrasen Private Security Officer"
outfit = /datum/outfit/nanotrasensoldiercorpse2
outfit = /datum/outfit/nanotrasensoldiercorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/nanotrasensoldiercorpse2
name = "NT Private Security Officer Corpse"
/datum/outfit/nanotrasensoldiercorpse
name = "\improper 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
@@ -177,13 +241,13 @@
id_trim = /datum/id_trim/centcom/corpse/private_security/tradepost_officer
/obj/effect/mob_spawn/corpse/human/nanotrasenassaultsoldier
name = "Nanotrasen Private Security Officer"
name = "\improper Nanotrasen Assault Officer Corpse"
outfit = /datum/outfit/nanotrasenassaultsoldiercorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/nanotrasenassaultsoldiercorpse
name = "NT Assault Officer Corpse"
name = "\improper NT Assault Officer Corpse"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat
@@ -195,6 +259,22 @@
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/corpse/assault
/obj/effect/mob_spawn/corpse/human/nanotrasenelitesoldier
name = "\improper Nanotrasen Elite Assault Officer Corpse"
outfit = /datum/outfit/nanotrasenelitesoldiercorpse
hairstyle = "Bald"
facial_hairstyle = "Shaved"
/datum/outfit/nanotrasenelitesoldiercorpse
name = "\improper NT Elite Assault Officer Corpse"
uniform = /obj/item/clothing/under/rank/centcom/military
shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat
mask = /obj/item/clothing/mask/gas/sechailer/swat
back = /obj/item/mod/control/pre_equipped/responsory/security
id = /obj/item/card/id/advanced/centcom
id_trim = /datum/id_trim/centcom/ert/security
/obj/effect/mob_spawn/corpse/human/cat_butcher
name = "The Cat Surgeon"
hairstyle = "Cut Hair"
@@ -229,3 +309,11 @@
id = /obj/item/card/id/advanced
l_pocket = /obj/item/paper/fluff/bee_objectives
mask = /obj/item/clothing/mask/animal/small/bee
/obj/effect/mob_spawn/corpse/human/generic_assistant
name = "Generic Assistant"
hairstyle = "Short Hair"
haircolor = COLOR_BLACK
facial_hairstyle = "Shaved"
skin_tone = "caucasian1"
outfit = /datum/outfit/job/assistant/consistent
@@ -255,10 +255,14 @@
notify_ghosts("An ash walker egg is ready to hatch in \the [spawner_area.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER)
/datum/outfit/ashwalker
name ="Ashwalker"
name = "Ash Walker"
head = /obj/item/clothing/head/helmet/gladiator
uniform = /obj/item/clothing/under/costume/gladiator/ash_walker
/datum/outfit/ashwalker/spear
name = "Ash Walker - Spear"
back = /obj/item/spear/bonespear
///Syndicate Listening Post
/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate
+3 -1
View File
@@ -207,8 +207,10 @@
///burn damage this corpse will spawn with
var/burn_damage = 0
/obj/effect/mob_spawn/corpse/Initialize(mapload)
/obj/effect/mob_spawn/corpse/Initialize(mapload, no_spawn)
. = ..()
if(no_spawn)
return
switch(spawn_when)
if(CORPSE_INSTANT)
INVOKE_ASYNC(src, PROC_REF(create))