diff --git a/code/game/machinery/excelsior/ex_teleporter.dm b/code/game/machinery/excelsior/ex_teleporter.dm index c177d5c73d6..30c2dc2bc74 100644 --- a/code/game/machinery/excelsior/ex_teleporter.dm +++ b/code/game/machinery/excelsior/ex_teleporter.dm @@ -391,6 +391,7 @@ var/global/excelsior_last_draft = 0 conscript.stats.setStat(STAT_ROB, 30) conscript.stats.setStat(STAT_MEC, 10) conscript.stats.setStat(STAT_BIO, 10) + conscript.randomize_appearance() conscript.equip_to_appropriate_slot(new /obj/item/clothing/under/excelsior()) conscript.equip_to_appropriate_slot(new /obj/item/clothing/shoes/workboots()) conscript.equip_to_appropriate_slot(new /obj/item/device/radio/headset()) diff --git a/code/game/objects/items/devices/last_shelter.dm b/code/game/objects/items/devices/last_shelter.dm index 8e812d81ee9..14959581caf 100644 --- a/code/game/objects/items/devices/last_shelter.dm +++ b/code/game/objects/items/devices/last_shelter.dm @@ -94,6 +94,7 @@ GLOBAL_DATUM(last_shelter, /obj/item/device/last_shelter) if(!MN) return FALSE var/mob/living/carbon/human/H = new /mob/living/carbon/human(src) + H.randomize_appearance() for(var/stat in ALL_STATS) H.stats.changeStat(stat, rand(STAT_LEVEL_ADEPT, STAT_LEVEL_PROF)) var/datum/perk/perk_random = pick(subtypesof(/datum/perk/oddity)) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index cc29d81d093..acaae5c53fa 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -173,3 +173,27 @@ for(var/obj/item/organ/external/O in organs) O.sync_colour_to_human(src) update_body(0) + +/mob/living/carbon/human/proc/randomize_appearance() + hair_color = rgb(25 * rand(3,8),25 * rand(1,3),25 * rand(1,3)) //curated hair color + change_skin_tone(roll("1d20") * -10) //skintone randomization borrowed from corpse spawner. Increment by 10 to increase variance + change_hair(pick(GLOB.hair_styles_list)) //pick from hairstyles + change_hair_color(hair_color) + change_facial_hair_color(hair_color) + age = rand(20,50) + //set gender and gender specific traits + var/gender = pick(MALE, FEMALE) + var/list/tts_voices = new() + if(gender == FEMALE) //defaults are MALE so check for FEMALE first, use MALE as default case + change_gender(gender) + tts_voices += TTS_SEED_DEFAULT_FEMALE //Failsafe voice + else + change_facial_hair(pick(GLOB.facial_hair_styles_list)) //pick a random facial hair + tts_voices += TTS_SEED_DEFAULT_MALE //Failsafe voice + real_name = species.get_random_name(gender) //set name according to gender + //Set voice based on gender + for(var/i in tts_seeds) //from tts_seeds, add voices that match gender tag to list tts_voices + var/list/V = tts_seeds[i] + if((V["gender"] == gender || V["category"] == "any") && (V["category"] == "human" || V["gender"] == "any")) //cribbed from /code/modules/client/preference_setup/general/01_basic.dm + tts_voices += i + tts_seed = pick(tts_voices) //pick a random voice from list tts_voices diff --git a/code/modules/mob/living/simple_animal/spider_core.dm b/code/modules/mob/living/simple_animal/spider_core.dm index 9134d27da42..2cb951458bd 100644 --- a/code/modules/mob/living/simple_animal/spider_core.dm +++ b/code/modules/mob/living/simple_animal/spider_core.dm @@ -50,6 +50,7 @@ return var/mob/living/carbon/human/H = new /mob/living/carbon/human(loc) + H.randomize_appearance() visible_message(SPAN_DANGER("[src] morphs into a human body!")) gibs(loc, null) var/obj/item/organ/internal/carrion/core/core = locate(/obj/item/organ/internal/carrion/core) in contents