Fixed issue with #2154

Also moved selection of base icon for limbs to update_mutantrace so it's only doen when race is changed.
Changed mob icons a little, to get rid of rogue red pixel on torso that was not covered by arm
Moved awkward red spot where missing hand would be to arm sprite, since missing whole arm would still make stump appear there, and it looks weird.
This commit is contained in:
Chinsky
2013-03-12 00:41:37 +04:00
parent 19b6ca6022
commit b1bb564168
6 changed files with 52 additions and 55 deletions

View File

@@ -124,7 +124,7 @@ Please contact me on #coderbus IRC. ~Carn x
var/list/overlays_lying[TOTAL_LAYERS]
var/list/overlays_standing[TOTAL_LAYERS]
var/previous_damage_appearance // store what the body last looked like, so we only have to update it if something changed
var/race_icon
//UPDATES OVERLAYS FROM OVERLAYS_LYING/OVERLAYS_STANDING
//this proc is messy as I was forced to include some old laggy cloaking code to it so that I don't break cloakers
@@ -233,24 +233,8 @@ proc/get_damage_icon_part(damage_state, body_part)
var/g = "m"
if(gender == FEMALE) g = "f"
var/icon/icobase
if(skeleton)
icobase = 'icons/mob/human_races/r_skeleton.dmi'
else if(dna)
switch(dna.mutantrace)
if("tajaran")
icobase = 'icons/mob/human_races/r_tajaran.dmi'
if("lizard")
icobase = 'icons/mob/human_races/r_lizard.dmi'
if("skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi'
else
icobase = 'icons/mob/human_races/r_human.dmi'
else
icobase = 'icons/mob/human_races/r_human.dmi'
if(!skeleton)
stand_icon = new /icon(icobase, "torso_[g][fat?"_fat":""]")
stand_icon = new /icon(race_icon, "torso_[g][fat?"_fat":""]")
if(husk)
stand_icon.ColorTone(husk_color_mod)
else if(hulk)
@@ -260,7 +244,7 @@ proc/get_damage_icon_part(damage_state, body_part)
else if(plant)
stand_icon.ColorTone(plant_color_mod)
else
stand_icon = new /icon(icobase, "torso")
stand_icon = new /icon(race_icon, "torso")
var/datum/organ/external/head = get_organ("head")
var/has_head = 0
@@ -272,16 +256,16 @@ proc/get_damage_icon_part(damage_state, body_part)
var/icon/temp
if(istype(part, /datum/organ/external/groin))
if(skeleton)
temp = new /icon(icobase, "groin")
temp = new /icon(race_icon, "groin")
else
temp = new /icon(icobase, "groin_[g]")
temp = new /icon(race_icon, "groin_[g]")
else if(istype(part, /datum/organ/external/head))
if(skeleton)
temp = new /icon(icobase, "head")
temp = new /icon(race_icon, "head")
else
temp = new /icon(icobase, "head_[g]")
temp = new /icon(race_icon, "head_[g]")
else
temp = new /icon(icobase, "[part.icon_name]")
temp = new /icon(race_icon, "[part.icon_name]")
if(part.status & ORGAN_ROBOT)
temp.GrayScale()
if(part.status & ORGAN_DEAD)
@@ -326,7 +310,7 @@ proc/get_damage_icon_part(damage_state, body_part)
if(husk)
var/icon/mask = new(stand_icon)
var/icon/husk_over = new(icobase,"overlay_husk")
var/icon/husk_over = new(race_icon,"overlay_husk")
mask.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,0)
husk_over.Blend(mask, ICON_ADD)
stand_icon.Blend(husk_over, ICON_OVERLAY)
@@ -450,14 +434,30 @@ proc/get_damage_icon_part(damage_state, body_part)
// var/g = "m"
// if (gender == FEMALE) g = "f"
//BS12 EDIT
var/skeleton = (SKELETON in src.mutations)
if(skeleton)
race_icon = 'icons/mob/human_races/r_skeleton.dmi'
else if(dna)
switch(dna.mutantrace)
if("tajaran")
race_icon = 'icons/mob/human_races/r_tajaran.dmi'
if("lizard")
race_icon = 'icons/mob/human_races/r_lizard.dmi'
if("skrell")
race_icon = 'icons/mob/human_races/r_skrell.dmi'
else
race_icon = 'icons/mob/human_races/r_human.dmi'
else
icon = 'icons/mob/human_races/r_human.dmi'
if(dna)
switch(dna.mutantrace)
if("lizard","golem","slime","shadow","adamantine")
if("golem","slime","shadow","adamantine")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
if("lizard","tajaran","skrell")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[gender]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[gender]_s")
// if("lizard","tajaran","skrell")
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[gender]_l")
// overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[gender]_s")
if("plant")
if(stat == DEAD) //TODO
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace]_d")

View File

@@ -135,37 +135,34 @@ datum/preferences
var/g = "m"
if(gender == FEMALE) g = "f"
if(species == "Tajaran")
preview_icon = new /icon('icons/effects/species.dmi', "tajaran_[g]_s")
preview_icon.Blend(new /icon('icons/effects/species.dmi', "tajtail_s"), ICON_OVERLAY)
else if(species == "Unathi")
preview_icon = new /icon('icons/effects/species.dmi', "lizard_[g]_s")
preview_icon.Blend(new /icon('icons/effects/species.dmi', "sogtail_s"), ICON_OVERLAY)
else if(species == "Skrell")
preview_icon = new /icon('icons/effects/species.dmi', "skrell_[g]_s")
else
preview_icon = new /icon('human.dmi', "torso_[g]_s")
preview_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
var/icon/icobase
switch(species)
if("Tajaran")
icobase = 'icons/mob/human_races/r_tajaran.dmi'
if("Unathi")
icobase = 'icons/mob/human_races/r_lizard.dmi'
if("Skrell")
icobase = 'icons/mob/human_races/r_skrell.dmi'
else
icobase = 'icons/mob/human_races/r_human.dmi'
preview_icon = new /icon(icobase, "torso_[g]")
preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY)
preview_icon.Blend(new /icon(icobase, "head_[g]"), ICON_OVERLAY)
if(organ_data["head"] != "amputated")
preview_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY)
for(var/name in list("l_arm","r_arm","l_leg","r_leg","l_foot","r_foot","l_hand","r_hand"))
// make sure the organ is added to the list so it's drawn
if(organ_data[name] == null)
organ_data[name] = null
for(var/name in list("l_arm","r_arm","l_leg","r_leg","l_foot","r_foot","l_hand","r_hand"))
// make sure the organ is added to the list so it's drawn
if(organ_data[name] == null)
organ_data[name] = null
for(var/name in organ_data)
if(organ_data[name] == "amputated") continue
for(var/name in organ_data)
if(organ_data[name] == "amputated") continue
var/icon/temp = new /icon(icobase, "[name]")
if(organ_data[name] == "cyborg")
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
var/icon/temp = new /icon('human.dmi', "[name]_s")
if(organ_data[name] == "cyborg")
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
preview_icon.Blend(temp, ICON_OVERLAY)
preview_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
preview_icon.Blend(temp, ICON_OVERLAY)
// Skin tone
if(species == "Human")