Merge pull request #3744 from Crazylemon64/human_icons_tweak

Changing a person's appearance now works better
This commit is contained in:
Fox McCloud
2016-03-03 20:38:18 -05:00
14 changed files with 64 additions and 36 deletions
@@ -17,14 +17,24 @@
reset_hair()
return 1
/mob/living/carbon/human/proc/change_gender(var/gender)
/mob/living/carbon/human/proc/change_gender(var/gender, var/update_dna = 1)
if(src.gender == gender)
return
src.gender = gender
reset_hair()
var/datum/sprite_accessory/hair/current_hair = hair_styles_list[h_style]
if(current_hair.gender != NEUTER && current_hair.gender != src.gender)
reset_head_hair()
var/datum/sprite_accessory/hair/current_fhair = facial_hair_styles_list[f_style]
if(current_fhair.gender != NEUTER && current_fhair.gender != src.gender)
reset_facial_hair()
if(update_dna)
update_dna()
sync_organ_dna(assimilate = 0)
update_body()
update_dna()
return 1
/mob/living/carbon/human/proc/change_hair(var/hair_style)
@@ -58,8 +68,11 @@
return 1
/mob/living/carbon/human/proc/reset_hair()
reset_head_hair()
reset_facial_hair()
/mob/living/carbon/human/proc/reset_head_hair()
var/list/valid_hairstyles = generate_valid_hairstyles()
var/list/valid_facial_hairstyles = generate_valid_facial_hairstyles()
if(valid_hairstyles.len)
h_style = pick(valid_hairstyles)
@@ -67,13 +80,15 @@
//this shouldn't happen
h_style = "Bald"
update_hair()
/mob/living/carbon/human/proc/reset_facial_hair()
var/list/valid_facial_hairstyles = generate_valid_facial_hairstyles()
if(valid_facial_hairstyles.len)
f_style = pick(valid_facial_hairstyles)
else
//this shouldn't happen
f_style = "Shaved"
update_hair()
update_fhair()
/mob/living/carbon/human/proc/change_eye_color(var/red, var/green, var/blue)
@@ -44,7 +44,7 @@
if(!delay_ready_dna && dna)
dna.ready_dna(src)
dna.real_name = real_name
sync_organ_dna() //this shouldn't be necessaaaarrrryyyyyyyy
sync_organ_dna(1)
if(species)
species.handle_dna(src)
@@ -1406,6 +1406,8 @@
/mob/living/carbon/human/generate_name()
name = species.makeName(gender,src)
real_name = name
if(dna)
dna.real_name = name
return name
/mob/living/carbon/human/proc/handle_embedded_objects()
@@ -146,10 +146,15 @@
var/obj/item/organ/O = pick(organs)
O.trace_chemicals[A.name] = 100
/mob/living/carbon/human/proc/sync_organ_dna()
/*
When assimilate is 1, organs that have a different UE will still have their DNA overriden by that of the host
Otherwise, this restricts itself to organs that share the UE of the host.
*/
/mob/living/carbon/human/proc/sync_organ_dna(var/assimilate = 1)
var/list/all_bits = internal_organs|organs
for(var/obj/item/organ/O in all_bits)
O.set_dna(dna)
if(assimilate || O.dna.unique_enzymes == dna.unique_enzymes)
O.set_dna(dna)
/*
Given the name of an organ, returns the external organ it's contained in
@@ -177,11 +177,10 @@ Please contact me on #coderbus IRC. ~Carn x
if(istype(I)) overlays += I
else
icon = stand_icon
if(overlays.len != overlays_standing.len)
overlays.Cut()
overlays.Cut()
for(var/thing in overlays_standing)
if(thing) overlays += thing
for(var/thing in overlays_standing)
if(thing) overlays += thing
update_transform()
@@ -286,7 +285,7 @@ var/global/list/damage_icon_parts = list()
else
//BEGIN CACHED ICON GENERATION.
var/obj/item/organ/external/chest = get_organ("chest")
base_icon = chest.get_icon()
base_icon = chest.get_icon(skeleton)
for(var/obj/item/organ/external/part in organs)
var/icon/temp = part.get_icon(skeleton)
+1 -1
View File
@@ -477,7 +477,7 @@
domutcheck(new_character)
new_character.dna.UpdateSE()
new_character.sync_organ_dna() //just fucking incase I guess
new_character.sync_organ_dna(1) //just fucking incase I guess
// Do the initial caching of the player's body icons.
new_character.force_update_limbs()