mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 14:00:18 +01:00
Random spawn mobs now have random cultures, hair, and skin tone. (#18120)
* Random spawn mobs now have random cultures, hair, and skin tone. * fixes + trioxin --------- Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
@@ -20,3 +20,16 @@
|
||||
/singleton/origin_item/proc/on_apply(var/mob/living/carbon/human/H)
|
||||
for(var/trait in origin_traits)
|
||||
ADD_TRAIT(H, trait, CULTURE_TRAIT)
|
||||
|
||||
/mob/living/carbon/human/proc/set_culture(var/singleton/origin_item/OI)
|
||||
if(!istype(OI))
|
||||
crash_with("Invalid culture supplied: [OI]!")
|
||||
culture = OI
|
||||
OI.on_apply(src)
|
||||
|
||||
/mob/living/carbon/human/proc/set_origin(var/singleton/origin_item/OI)
|
||||
if(!istype(OI))
|
||||
crash_with("Invalid origin supplied: [OI]!")
|
||||
origin = OI
|
||||
OI.on_apply(src)
|
||||
|
||||
|
||||
@@ -457,10 +457,9 @@ var/list/preferences_datums = list()
|
||||
character.employer_faction = faction
|
||||
character.religion = religion
|
||||
character.accent = accent
|
||||
character.origin = GET_SINGLETON(text2path(origin))
|
||||
character.culture = GET_SINGLETON(text2path(culture))
|
||||
character.origin.on_apply(character)
|
||||
character.culture.on_apply(character)
|
||||
character.set_culture(GET_SINGLETON(text2path(culture)))
|
||||
character.set_origin(GET_SINGLETON(text2path(origin)))
|
||||
|
||||
|
||||
// Destroy/cyborgize organs & setup body markings
|
||||
character.sync_organ_prefs_to_mob(src)
|
||||
|
||||
@@ -156,14 +156,14 @@
|
||||
for(var/culture in culture_restriction)
|
||||
var/singleton/origin_item/culture/CL = GET_SINGLETON(culture)
|
||||
if(CL.type in M.species.possible_cultures)
|
||||
M.culture = CL
|
||||
M.set_culture(CL)
|
||||
break
|
||||
for(var/origin in M.culture.possible_origins)
|
||||
var/singleton/origin_item/origin/OI = GET_SINGLETON(origin)
|
||||
if(length(origin_restriction))
|
||||
if(!(OI.type in origin_restriction))
|
||||
continue
|
||||
M.origin = OI
|
||||
M.set_origin(OI)
|
||||
M.accent = pick(OI.possible_accents)
|
||||
break
|
||||
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
pda_choice = 2
|
||||
age = rand(getMinAge(),getMaxAge())
|
||||
if(length(culture_restriction))
|
||||
H.culture = GET_SINGLETON(pick(culture_restriction))
|
||||
H.set_culture(GET_SINGLETON(pick(culture_restriction)))
|
||||
if(length(origin_restriction))
|
||||
for(var/O in origin_restriction)
|
||||
if(O in culture_restriction)
|
||||
H.origin = GET_SINGLETON(O)
|
||||
H.set_origin(GET_SINGLETON(O))
|
||||
break
|
||||
if(!H.origin)
|
||||
crash_with("Invalid origin restrictions [english_list(origin_restriction)] for culture restrictions [english_list(culture_restriction)]!")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
if(!species)
|
||||
if(new_species)
|
||||
set_species(new_species,1)
|
||||
set_species(new_species, 1)
|
||||
else
|
||||
set_species()
|
||||
|
||||
@@ -1481,10 +1481,21 @@
|
||||
if(typing_indicator)
|
||||
adjust_typing_indicator_offsets(typing_indicator)
|
||||
|
||||
fill_out_culture_data()
|
||||
|
||||
if(change_hair)
|
||||
species.set_default_hair(src)
|
||||
h_style = random_hair_style(gender, species.type)
|
||||
|
||||
if(prob(10))
|
||||
f_style = random_facial_hair_style(gender, species.type)
|
||||
|
||||
if(length(species.character_color_presets) && !default_colour)
|
||||
var/preset_name = pick(species.character_color_presets)
|
||||
var/preset_colour = species.character_color_presets[preset_name]
|
||||
r_skin = GetRedPart(preset_colour)
|
||||
g_skin = GetGreenPart(preset_colour)
|
||||
b_skin = GetBluePart(preset_colour)
|
||||
change_skin_tone(35 - rand(30, 220))
|
||||
|
||||
fill_random_culture_data()
|
||||
|
||||
species.set_default_tail(src)
|
||||
|
||||
@@ -1505,12 +1516,23 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/fill_out_culture_data()
|
||||
culture = GET_SINGLETON(species.possible_cultures[1])
|
||||
origin = GET_SINGLETON(culture.possible_origins[1])
|
||||
set_culture(GET_SINGLETON(species.possible_cultures[1]))
|
||||
set_origin(GET_SINGLETON(culture.possible_origins[1]))
|
||||
accent = pick(origin.possible_accents)
|
||||
citizenship = origin.possible_citizenships[1]
|
||||
religion = origin.possible_religions[1]
|
||||
|
||||
/mob/living/carbon/human/proc/fill_random_culture_data()
|
||||
var/new_culture_type = pick(species.possible_cultures)
|
||||
var/culture_singleton = GET_SINGLETON(new_culture_type)
|
||||
set_culture(culture_singleton)
|
||||
var/new_origin = pick(culture.possible_origins)
|
||||
var/origin_singleton = GET_SINGLETON(new_origin)
|
||||
set_origin(origin_singleton)
|
||||
accent = pick(origin.possible_accents)
|
||||
citizenship = pick(origin.possible_citizenships)
|
||||
religion = pick(origin.possible_religions)
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_doodle()
|
||||
set category = "IC"
|
||||
set name = "Write in blood"
|
||||
|
||||
@@ -321,8 +321,8 @@
|
||||
G.set_species(golem_type)
|
||||
G.name = G.species.get_random_name()
|
||||
G.real_name = G.name
|
||||
G.culture = GET_SINGLETON(/singleton/origin_item/culture/golem)
|
||||
G.origin = GET_SINGLETON(/singleton/origin_item/origin/golem)
|
||||
G.set_culture(GET_SINGLETON(/singleton/origin_item/culture/golem))
|
||||
G.set_origin(GET_SINGLETON(/singleton/origin_item/origin/golem))
|
||||
G.accent = G.origin.possible_accents[1]
|
||||
G.citizenship = G.origin.possible_citizenships[1]
|
||||
G.religion = G.origin.possible_religions[1]
|
||||
|
||||
@@ -142,10 +142,9 @@
|
||||
var/new_culture_id = params["culture"]
|
||||
if(new_culture_id in valid_cultures)
|
||||
var/singleton/origin_item/culture/new_culture = culture_map[new_culture_id]
|
||||
owner.culture = new_culture
|
||||
owner.culture.on_apply(owner)
|
||||
owner.set_culture(new_culture)
|
||||
if(!(owner.origin in new_culture.possible_origins))
|
||||
owner.origin = GET_SINGLETON(pick(new_culture.possible_origins))
|
||||
owner.set_origin(GET_SINGLETON(pick(new_culture.possible_origins)))
|
||||
clear_and_generate_data()
|
||||
. = TRUE
|
||||
if("origin")
|
||||
@@ -153,8 +152,7 @@
|
||||
var/new_origin_id = params["origin"]
|
||||
if(new_origin_id in valid_origins)
|
||||
var/singleton/origin_item/origin/new_origin = origin_map[new_origin_id]
|
||||
owner.origin = new_origin
|
||||
owner.origin.on_apply(owner)
|
||||
owner.set_origin(new_origin)
|
||||
if(!(owner.accent in new_origin.possible_accents))
|
||||
owner.accent = new_origin.possible_accents[1]
|
||||
if(!(owner.religion in new_origin.possible_religions))
|
||||
|
||||
@@ -227,6 +227,12 @@
|
||||
icon_state = "bottle-4"
|
||||
reagents_to_add = list(/singleton/reagent/hyronalin = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/trioxin
|
||||
name = "trioxin bottle"
|
||||
desc = "A small bottle. Contains a swirling, green liquid."
|
||||
icon_state = "bottle-1"
|
||||
reagents_to_add = list(/singleton/reagent/toxin/trioxin = 60)
|
||||
|
||||
//syrups
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/syrup
|
||||
|
||||
Reference in New Issue
Block a user