Files
VOREStation/code/modules/mob/dead/corpse.dm
Cameron Lennox 84dc5535dc var/global/list -> GLOB. conversion (#17928)
* These two are easy

* !!!runlevel_flags

the fact it was global.runlevel_flags.len has me a bit...iffy on this.

* !!!json_cache

Same as above. used global.

* player_list & observer_mob_list

* mechas_list

* this wasn't even used

* surgery_steps

* event_triggers

* landmarks_list

* dead_mob_list

* living_mob_list

* ai_list

* cable_list

* cleanbot_reserved_turfs

* listening_objects

* silicon_mob_list

* human_mob_list

* Update global_lists.dm

* joblist

* mob_list

* Update global_lists.dm

* holomap_markers

* mapping_units

* mapping_beacons

* hair_styles_list

* facial_hair_styles_list

* Update global_lists.dm

* facial_hair_styles_male_list

* facial_hair_styles_female_list

* body_marking_styles_list

* body_marking_nopersist_list

* ear_styles_list

* hair_styles_male_list

* tail_styles_list

* wing_styles_list

* escape_list & rune_list & endgame_exits

these were all really small

* endgame_safespawns

* stool_cache

* emotes_by_key

* random_maps & map_count

* item_tf_spawnpoints

* narsie_list

* active_radio_jammers

* unused

* paikeys

* pai_software_by_key & default_pai_software

* plant_seed_sprites

* magazine_icondata_keys  & magazine_icondata_states

* unused

* ashtray_cache

* light_type_cache

* HOLIDAY!!!

this one was annoying

* faction stuff (red?!)

* Update preferences_factions.dm

* vs edit removal

* backbaglist, pdachoicelist, exclude_jobs

* item_digestion_blacklist, edible_tech, blacklisted_artifact_effect, selectable_footstep, hexNums, syndicate_access

* string_slot_flags and hexdigits->hexNums

* possible_changeling_IDs

* vr_mob_tf_options

* vr_mob_spawner_options

* pipe_colors

* vr_mob_spawner_options

* common_tools

* newscaster_standard_feeds

* Update periodic_news.dm

* changeling_fabricated_clothing

* semirandom_mob_spawner_decisions

* id_card_states

* Update syndicate_ids.dm

* overlay_cache & gear_distributed_to

* more

* radio_channels_by_freq

* Update global_lists.dm

* proper

* default_medbay_channels & default_internal_channels

default_internal_channels is weird as it has a mapbased proc() but that proc is never called...

* valid_ringtones

* move this

* possible_plants

* more

* separate these

moves xeno2chemlist from a hook to a new global list.

* tube_dir_list

* valid_bloodreagents & monitor_states

* Junk

* valid_bloodtypes

* breach_burn_descriptors & burn

* more!!

appliance_available_recipes seems uber cursed, re-look at later

* Appliance code is cursed

* wide_chassis & flying_chassis

* allows_eye_color

* all_tooltip_styles

* direction_table

* gun_choices

* severity_to_string

* old event_viruses

* description_icons

* MOVE_KEY_MAPPINGS

* more more

* pai & robot modules

* Update global_lists.dm

* GEOSAMPLES

Also swaps a .len to LAZYLEN()

* shieldgens

* reagent recipies

* global ammo types

* rad collector

* old file and unused global

* nif_look_messages

* FESH

* nifsoft

* chamelion

* the death of sortAtom

* globulins

* lazylen that

* Update global_lists.dm

* LAZY

* Theese too

* quick fix

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-07-14 20:14:31 +02:00

262 lines
9.5 KiB
Plaintext

//Meant for simple animals to drop lootable human bodies.
//If someone can do this in a neater way, be my guest-Kor
//This has to be seperate from the Away Mission corpses, because New() doesn't work for those, and initialize() doesn't work for these.
//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).
/obj/effect/landmark/mobcorpse
name = "Unknown"
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
var/corpseuniform = null //Set this to an object path to have the slot filled with said object on the corpse.
var/corpsesuit = null
var/corpseshoes = null
var/corpsegloves = null
var/corpseradio = null
var/corpseglasses = null
var/corpsemask = null
var/corpsehelmet = null
var/corpsebelt = null
var/corpsepocket1 = null
var/corpsepocket2 = null
var/corpseback = null
var/corpseid = 0 //Just set to 1 if you want them to have an ID
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJARAN,SPECIES_UNATHI,SPECIES_SKRELL)
var/list/tail_type = null
var/list/ear_type = null
/// list(name of ear, color of ear, color of ear, ...).
/// Color is optional, each position after the name is a color channel from 1 to n.
var/list/ear_secondary_type
var/list/wing_type = null
var/corpsesynthtype = 0 // 0 for organic, 1 for drone, 2 for posibrain
var/corpsesynthbrand = "Unbranded"
delete_me = TRUE
/obj/effect/landmark/mobcorpse/Initialize(mapload)
. = ..()
createCorpse()
/obj/effect/landmark/mobcorpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it.
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
M.low_sorting_priority = TRUE
if(random_species)
var/random_pick = pick(random_species_list)
M.set_species(random_pick)
src.species = random_pick
else
M.set_species(species)
if(tail_type && tail_type.len)
if(tail_type[1] in GLOB.tail_styles_list)
M.tail_style = GLOB.tail_styles_list[tail_type[1]]
if(tail_type.len > 1)
var/list/color_rgb_list = hex2rgb(tail_type[2])
M.r_tail = color_rgb_list[1]
M.g_tail = color_rgb_list[2]
M.b_tail = color_rgb_list[3]
if(tail_type.len > 2)
color_rgb_list = hex2rgb(tail_type[3])
M.r_tail2 = color_rgb_list[1]
M.g_tail2 = color_rgb_list[2]
M.b_tail2 = color_rgb_list[3]
if(tail_type.len > 3)
color_rgb_list = hex2rgb(tail_type[4])
M.r_tail3 = color_rgb_list[1]
M.g_tail3 = color_rgb_list[2]
M.b_tail3 = color_rgb_list[3]
M.update_tail_showing()
if(ear_type && ear_type.len)
if(ear_type[1] in GLOB.ear_styles_list)
M.ear_style = GLOB.ear_styles_list[ear_type[1]]
if(ear_type.len > 1)
var/list/color_rgb_list = hex2rgb(ear_type[2])
M.r_ears = color_rgb_list[1]
M.g_ears = color_rgb_list[2]
M.b_ears = color_rgb_list[3]
if(ear_type.len > 2)
color_rgb_list = hex2rgb(ear_type[3])
M.r_ears2 = color_rgb_list[1]
M.g_ears2 = color_rgb_list[2]
M.b_ears2 = color_rgb_list[3]
if(ear_type.len > 3)
color_rgb_list = hex2rgb(ear_type[4])
M.r_ears3 = color_rgb_list[1]
M.g_ears3 = color_rgb_list[2]
M.b_ears3 = color_rgb_list[3]
M.update_hair()
// handle secondary ears
if(length(ear_secondary_type) && (ear_secondary_type[1] in GLOB.ear_styles_list))
M.ear_secondary_style = GLOB.ear_styles_list[ear_secondary_type[1]]
if(length(ear_secondary_type) > 1)
M.ear_secondary_colors = ear_secondary_type.Copy(2, min(length(GLOB.fancy_sprite_accessory_color_channel_names), length(ear_secondary_type)) + 1)
if(wing_type && wing_type.len)
if(wing_type[1] in GLOB.wing_styles_list)
M.wing_style = GLOB.wing_styles_list[wing_type[1]]
if(wing_type.len > 1)
var/list/color_rgb_list = hex2rgb(wing_type[2])
M.r_wing = color_rgb_list[1]
M.g_wing = color_rgb_list[2]
M.b_wing = color_rgb_list[3]
if(wing_type.len > 2)
color_rgb_list = hex2rgb(wing_type[3])
M.r_wing2 = color_rgb_list[1]
M.g_wing2 = color_rgb_list[2]
M.b_wing2 = color_rgb_list[3]
if(wing_type.len > 3)
color_rgb_list = hex2rgb(wing_type[4])
M.r_wing3 = color_rgb_list[1]
M.g_wing3 = color_rgb_list[2]
M.b_wing3 = color_rgb_list[3]
M.update_wing_showing()
M.real_name = generateCorpseName()
M.set_stat(DEAD) //Kills the new mob
if(corpsesynthtype > 0)
if(!corpsesynthbrand)
corpsesynthbrand = "Unbranded"
for(var/obj/item/organ/external/O in M.organs)
switch(corpsesynthtype)
if(1)
O.digitize(corpsesynthbrand)
if(2)
O.robotize(corpsesynthbrand)
if(src.corpseuniform)
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
if(src.corpseshoes)
M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes)
if(src.corpsegloves)
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
if(src.corpseradio)
M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
if(src.corpseglasses)
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask)
if(src.corpsebelt)
M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt)
if(src.corpsepocket1)
M.equip_to_slot_or_del(new src.corpsepocket1(M), slot_r_store)
if(src.corpsepocket2)
M.equip_to_slot_or_del(new src.corpsepocket2(M), slot_l_store)
if(src.corpseback)
M.equip_to_slot_or_del(new src.corpseback(M), slot_back)
if(src.corpseid == 1)
var/obj/item/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
var/datum/job/jobdatum
for(var/jobtype in typesof(/datum/job))
var/datum/job/J = new jobtype
if(J.title == corpseidaccess)
jobdatum = J
break
if(src.corpseidicon)
W.icon_state = corpseidicon
if(src.corpseidaccess)
if(jobdatum)
W.access = jobdatum.get_access()
else
W.access = list()
if(corpseidjob)
W.assignment = corpseidjob
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if(src.corpsehelmet)
M.equip_voidhelm_to_slot_or_del_with_refit(new src.corpsehelmet(M), slot_head, src.species)
if(src.corpsesuit)
M.equip_voidsuit_to_slot_or_del_with_refit(new src.corpsesuit(M), slot_wear_suit, src.species)
/obj/effect/landmark/mobcorpse/proc/generateCorpseName()
return name
//List of different corpse types
/obj/effect/landmark/mobcorpse/syndicatesoldier
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/radio/headset
corpsemask = /obj/item/clothing/mask/gas
corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/storage/backpack
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = JOB_SYNDICATE
/obj/effect/landmark/mobcorpse/solarpeacekeeper
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/pcarrier/blue/sol
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/radio/headset
corpsemask = /obj/item/clothing/mask/gas
corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/storage/backpack
corpseid = 1
corpseidjob = "Peacekeeper"
corpseidaccess = JOB_SYNDICATE
/obj/effect/landmark/mobcorpse/syndicatecommando
name = "Mercenary Commando"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/space/void/merc
corpseshoes = /obj/item/clothing/shoes/boots/swat
corpsegloves = /obj/item/clothing/gloves/swat
corpseradio = /obj/item/radio/headset
corpsemask = /obj/item/clothing/mask/gas/syndicate
corpsehelmet = /obj/item/clothing/head/helmet/space/void/merc
corpseback = /obj/item/tank/jetpack/oxygen
corpsepocket1 = /obj/item/tank/emergency/oxygen
corpseid = 1
corpseidjob = "Operative"
corpseidaccess = JOB_SYNDICATE
/obj/effect/landmark/mobcorpse/clown
name = JOB_CLOWN
corpseuniform = /obj/item/clothing/under/rank/clown
corpseshoes = /obj/item/clothing/shoes/clown_shoes
corpseradio = /obj/item/radio/headset
corpsemask = /obj/item/clothing/mask/gas/clown_hat
corpsepocket1 = /obj/item/bikehorn
corpseback = /obj/item/storage/backpack/clown
corpseid = 1
corpseidjob = JOB_CLOWN
corpseidaccess = JOB_CLOWN
/obj/effect/landmark/mobcorpse/pirate
name = "Pirate"
corpseuniform = /obj/item/clothing/under/pirate
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseglasses = /obj/item/clothing/glasses/eyepatch
corpsehelmet = /obj/item/clothing/head/bandana
/obj/effect/landmark/mobcorpse/pirate/ranged
name = "Pirate Gunner"
corpsesuit = /obj/item/clothing/suit/pirate
corpsehelmet = /obj/item/clothing/head/pirate
/obj/effect/landmark/mobcorpse/russian
name = "Russian"
corpseuniform = /obj/item/clothing/under/soviet
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpsehelmet = /obj/item/clothing/head/bearpelt
/obj/effect/landmark/mobcorpse/russian/ranged
corpsehelmet = /obj/item/clothing/head/ushanka