diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 5a06f2cfbea..d98566bb3af 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -134,8 +134,6 @@ Please contact me on #coderbus IRC. ~Carn x /mob/living/carbon/human 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/icon/race_icon - var/icon/deform_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 @@ -269,12 +267,15 @@ proc/get_damage_icon_part(damage_state, body_part) //BEGIN CACHED ICON GENERATION. - //Icon is not cached, generate and store it. + // Why don't we just make skeletons/shadows/golems a species? ~Z + var/race_icon = (skeleton ? 'icons/mob/human_races/r_skeleton.dmi' : species.icobase) + var/deform_icon = (skeleton ? 'icons/mob/human_races/r_skeleton.dmi' : species.icobase) + //Robotic limbs are handled in get_icon() so all we worry about are missing or dead limbs. //No icon stored, so we need to start with a basic one. var/datum/organ/external/chest = get_organ("chest") - base_icon = chest.get_icon(g) - + base_icon = chest.get_icon(race_icon,deform_icon,g) + if(chest.status & ORGAN_DEAD) base_icon.ColorTone(necrosis_color_mod) base_icon.SetIntensity(0.7) @@ -287,9 +288,9 @@ proc/get_damage_icon_part(damage_state, body_part) continue if (istype(part, /datum/organ/external/groin) || istype(part, /datum/organ/external/head)) - temp = part.get_icon(g) + temp = part.get_icon(race_icon,deform_icon,g) else - temp = part.get_icon() + temp = part.get_icon(race_icon,deform_icon) if(part.status & ORGAN_DEAD) temp.ColorTone(necrosis_color_mod) @@ -474,18 +475,9 @@ proc/get_damage_icon_part(damage_state, body_part) /mob/living/carbon/human/proc/update_mutantrace(var/update_icons=1) var/fat + if( FAT in mutations ) fat = "fat" -// 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 - //Icon data is kept in species datums within the mob. - race_icon = species.icobase - deform_icon = species.deform if(dna) switch(dna.mutantrace) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index a483a43d0fd..f0c28d87c3b 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -5,25 +5,25 @@ var/list/datum/autopsy_data/autopsy_data = list() var/list/trace_chemicals = list() // traces of chemicals in the organ, // links chemical IDs to number of ticks for which they'll stay in the blood - + var/germ_level = 0 // INTERNAL germs inside the organ, this is BAD if it's greater than INFECTION_LEVEL_ONE - + proc/process() return 0 proc/receive_chem(chemical as obj) return 0 -/datum/organ/proc/get_icon() +/datum/organ/proc/get_icon(var/icon/race_icon, var/icon/deform_icon) return icon('icons/mob/human.dmi',"blank") //Germs /datum/organ/proc/handle_antibiotics() var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin") - + if (!germ_level || antibiotics < 5) return - + if (germ_level < INFECTION_LEVEL_ONE) germ_level = 0 //cure instantly else if (germ_level < INFECTION_LEVEL_TWO) @@ -67,14 +67,14 @@ bad_external_organs.Cut() for(var/datum/organ/external/Ex in organs) bad_external_organs += Ex - + //processing internal organs is pretty cheap, do that first. for(var/datum/organ/internal/I in internal_organs) I.process() - + if(!force_process && !bad_external_organs.len) return - + for(var/datum/organ/external/E in bad_external_organs) if(!E) continue @@ -91,7 +91,7 @@ var/datum/organ/internal/I = pick(E.internal_organs) custom_pain("You feel broken bones moving in your [E.display_name]!", 1) I.take_damage(rand(3,5)) - + //Moving makes open wounds get infected much faster if (E.wounds.len) for(var/datum/wound/W in E.wounds) @@ -101,14 +101,14 @@ if(E.name in list("l_leg","l_foot","r_leg","r_foot") && !lying) if (!E.is_usable() || E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED))) leg_tally-- // let it fail even if just foot&leg - + // standing is poor if(leg_tally <= 0 && !paralysis && !(lying || resting) && prob(5)) if(species && species.flags & NO_PAIN) emote("scream") emote("collapse") paralysis = 10 - + //Check arms and legs for existence can_stand = 2 //can stand on both legs var/datum/organ/external/E = organs_by_name["l_foot"] diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index bba9246ea7c..79bbe771b30 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -793,14 +793,14 @@ Note that amputating the affected organ does in fact remove the infection from t return 1 return 0 -/datum/organ/external/get_icon(gender="") +/datum/organ/external/get_icon(var/icon/race_icon, var/icon/deform_icon,gender="") if (status & ORGAN_ROBOT && !(owner.species && owner.species.flags & IS_SYNTHETIC)) return new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") if (status & ORGAN_MUTATED) - return new /icon(owner.deform_icon, "[icon_name][gender ? "_[gender]" : ""]") + return new /icon(deform_icon, "[icon_name][gender ? "_[gender]" : ""]") - return new /icon(owner.race_icon, "[icon_name][gender ? "_[gender]" : ""]") + return new /icon(race_icon, "[icon_name][gender ? "_[gender]" : ""]") /datum/organ/external/proc/is_usable() @@ -959,15 +959,15 @@ Note that amputating the affected organ does in fact remove the infection from t var/disfigured = 0 vital = 1 -/datum/organ/external/head/get_icon() +/datum/organ/external/head/get_icon(var/icon/race_icon, var/icon/deform_icon) if (!owner) return ..() var/g = "m" if(owner.gender == FEMALE) g = "f" if (status & ORGAN_MUTATED) - . = new /icon(owner.deform_icon, "[icon_name]_[g]") + . = new /icon(deform_icon, "[icon_name]_[g]") else - . = new /icon(owner.race_icon, "[icon_name]_[g]") + . = new /icon(race_icon, "[icon_name]_[g]") /datum/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list()) ..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)