From ea07c3b06b68a6d8d241be20506a7e2cb3413ce4 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Fri, 1 Aug 2014 06:38:01 +0100 Subject: [PATCH] several fixes inc #233 Fixes icon creation issue in certain situations such as humanising monkeys and cloning Fixes humanized monkeys reverting to monkey name after being used for cloning Fixes humanized monkeys being made as human parent object instead of human/race --- code/game/dna/genes/monkey.dm | 6 +++++- .../mob/living/carbon/human/update_icons.dm | 18 ++++++++---------- code/modules/organs/organ_external.dm | 12 ++++++++---- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index ef3cdb1fc14..e1faba73a75 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -108,7 +108,10 @@ var/mob/living/carbon/human/O if(Mo.greaterform) - O = new(src, Mo.greaterform) + var/greatform = lowertext(Mo.greaterform) + var/typepath = "/mob/living/carbon/human/" + typepath += greatform + O = new typepath(src, greatform) else O = new(src) @@ -152,6 +155,7 @@ continue else O.real_name = randomname + O.dna.real_name = randomname i++ O.UpdateAppearance() O.take_overall_damage(M.getBruteLoss(), M.getFireLoss()) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cbfdfe251cc..4ea26a60a66 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -131,11 +131,12 @@ Please contact me on #coderbus IRC. ~Carn x #define FIRE_LAYER 24 //If you're on fire #define TOTAL_LAYERS 24 + + /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 + var/icon/skeleton /mob/living/carbon/human/proc/apply_overlay(cache_index) @@ -238,7 +239,6 @@ proc/get_damage_icon_part(damage_state, body_part) var/husk = (M_HUSK in src.mutations) //100% unnecessary -Agouri //nope, do you really want to iterate through src.mutations repeatedly? -Pete var/fat = (M_FAT in src.mutations) var/hulk = (M_HULK in src.mutations) - var/skeleton = (SKELETON in src.mutations) var/g = (gender == FEMALE ? "f" : "m") var/has_head = 0 @@ -351,7 +351,7 @@ proc/get_damage_icon_part(damage_state, body_part) //Handle husk overlay. if(husk) var/icon/mask = new(base_icon) - var/icon/husk_over = new(race_icon,"overlay_husk") + var/icon/husk_over = new(species.icobase,"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) base_icon.Blend(husk_over, ICON_OVERLAY) @@ -506,13 +506,11 @@ 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' + var/skel = (SKELETON in src.mutations) + if(skel) + skeleton = '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 + skeleton = null if(dna) switch(dna.mutantrace) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 897496afb02..3477ccd9039 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -813,11 +813,13 @@ Note that amputating the affected organ does in fact remove the infection from t /datum/organ/external/get_icon(gender="", fat="") if (status & ORGAN_MUTATED) - return new /icon(owner.deform_icon, "[icon_name][gender ? "_[gender]" : ""][fat ? "_fat" : ""]") + return new /icon(owner.species.deform, "[icon_name][gender ? "_[gender]" : ""][fat ? "_fat" : ""]") else if (status & ORGAN_ROBOT && !(owner.species && owner.species.flags & IS_SYNTHETIC)) return new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") + else if (owner.skeleton) + return new /icon(owner.skeleton, "[icon_name][gender ? "_[gender]" : ""]") else - return new /icon(owner.race_icon, "[icon_name][gender ? "_[gender]" : ""][fat ? "_fat" : ""]") + return new /icon(owner.species.icobase, "[icon_name][gender ? "_[gender]" : ""][fat ? "_fat" : ""]") /datum/organ/external/proc/is_usable() @@ -983,9 +985,11 @@ Note that amputating the affected organ does in fact remove the infection from t var/g = "m" if(owner.gender == FEMALE) g = "f" if (status & ORGAN_MUTATED) - . = new /icon(owner.deform_icon, "[icon_name]_[g]") + . = new /icon(owner.species.deform, "[icon_name]_[g]") + else if (owner.skeleton) + . = new /icon(owner.skeleton, "[icon_name]_[g]") else - . = new /icon(owner.race_icon, "[icon_name]_[g]") + . = new /icon(owner.species.icobase, "[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)