From 0c0f505d82e24d15ec26d4bc94da51baa5cbe06e Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Thu, 7 Jan 2016 21:19:23 -0500 Subject: [PATCH 1/4] Fix Pass 1 Issue: Facing north means the tail is overlayed by just about everything but the body. --- code/datums/datacore.dm | 6 +- .../mob/living/carbon/human/update_icons.dm | 61 ++++++++++--------- .../mob/new_player/preferences_setup.dm | 20 +++--- 3 files changed, 46 insertions(+), 41 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 41019d29356..2c4273b2c23 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -140,14 +140,14 @@ proc/get_id_photo(var/mob/living/carbon/human/H) temp = new /icon(icobase, "head_[g]") preview_icon.Blend(temp, ICON_OVERLAY) - for(var/obj/item/organ/external/E in H.organs) - preview_icon.Blend(E.get_icon(), ICON_OVERLAY) - //Tail if(H.species.tail && H.species.flags & HAS_TAIL) temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.species.tail]_s") preview_icon.Blend(temp, ICON_OVERLAY) + for(var/obj/item/organ/external/E in H.organs) + preview_icon.Blend(E.get_icon(), ICON_OVERLAY) + // Skin tone if(H.species.bodyflags & HAS_SKIN_TONE) if (H.s_tone >= 0) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index e1c05cc7210..deb6981bd93 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -106,33 +106,35 @@ Please contact me on #coderbus IRC. ~Carn x //Human Overlays Indexes///////// #define MUTANTRACE_LAYER 1 -#define MARKINGS_LAYER 2 -#define MUTATIONS_LAYER 3 -#define DAMAGE_LAYER 4 -#define UNIFORM_LAYER 5 -#define ID_LAYER 6 -#define SHOES_LAYER 7 -#define GLOVES_LAYER 8 -#define EARS_LAYER 9 -#define SUIT_LAYER 10 -#define GLASSES_LAYER 11 -#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt? -#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me -#define SUIT_STORE_LAYER 14 -#define BACK_LAYER 15 -#define HAIR_LAYER 16 //TODO: make part of head layer? -#define HEAD_ACCESSORY_LAYER 17 -#define FHAIR_LAYER 18 -#define FACEMASK_LAYER 19 -#define HEAD_LAYER 20 -#define COLLAR_LAYER 21 -#define HANDCUFF_LAYER 22 -#define LEGCUFF_LAYER 23 -#define L_HAND_LAYER 24 -#define R_HAND_LAYER 25 -#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system -#define FIRE_LAYER 27 //If you're on fire -#define TOTAL_LAYERS 27 +#define TAIL_LAYER 2 //bs12 specific. this hack is probably gonna come back to haunt me +#define LIMBS_LAYER 3 +#define MARKINGS_LAYER 4 //2 +#define MUTATIONS_LAYER 5 //3 +#define DAMAGE_LAYER 6 //4 +#define UNIFORM_LAYER 7 //5 +#define ID_LAYER 8 //6 +#define SHOES_LAYER 9 //7 +#define GLOVES_LAYER 10 //8 +#define EARS_LAYER 11 //9 +#define SUIT_LAYER 12 //10 +#define GLASSES_LAYER 13 //11 +#define BELT_LAYER 14 //12 //Possible make this an overlay of somethign required to wear a belt? +//#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me +#define SUIT_STORE_LAYER 15 //14 +#define BACK_LAYER 16 //15 +#define HAIR_LAYER 17 //16 //TODO: make part of head layer? +#define HEAD_ACCESSORY_LAYER 18 //17 +#define FHAIR_LAYER 19 //18 +#define FACEMASK_LAYER 20 //19 +#define HEAD_LAYER 21 //20 +#define COLLAR_LAYER 22 //21 +#define HANDCUFF_LAYER 23 //22 +#define LEGCUFF_LAYER 24 //23 +#define L_HAND_LAYER 25 //24 +#define R_HAND_LAYER 26 //25 +#define TARGETED_LAYER 27 //26 //BS12: Layer for the target overlay from weapon targeting system +#define FIRE_LAYER 28 //27 //If you're on fire +#define TOTAL_LAYERS 28 //27 @@ -296,6 +298,7 @@ var/global/list/damage_icon_parts = list() if(!(part.icon_position & RIGHT)) temp2.Insert(new/icon(temp,dir=WEST),dir=WEST) base_icon.Blend(temp2, ICON_OVERLAY) + overlays_standing[LIMBS_LAYER] = image(base_icon) if(part.icon_position & LEFT) temp2.Insert(new/icon(temp,dir=EAST),dir=EAST) if(part.icon_position & RIGHT) @@ -1114,11 +1117,13 @@ var/global/list/damage_icon_parts = list() //Human Overlays Indexes///////// #undef MUTANTRACE_LAYER +#undef TAIL_LAYER +#undef LIMBS_LAYER #undef MARKINGS_LAYER #undef MUTATIONS_LAYER #undef DAMAGE_LAYER #undef UNIFORM_LAYER -#undef TAIL_LAYER +//#undef TAIL_LAYER #undef ID_LAYER #undef SHOES_LAYER #undef GLOVES_LAYER diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 6c2dd25dcd8..7eb20df76ea 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -211,16 +211,6 @@ datum/preferences preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY) preview_icon.Blend(new /icon(icobase, "head_[g]"), ICON_OVERLAY) - for(var/name in list("r_arm","r_hand","r_leg","r_foot","l_leg","l_foot","l_arm","l_hand")) - if(organ_data[name] == "amputated") continue - if(organ_data[name] == "cyborg") - var/datum/robolimb/R - if(rlimb_data[name]) R = all_robolimbs[rlimb_data[name]] - if(!R) R = basic_robolimb - preview_icon.Blend(icon(R.icon, "[name]"), ICON_OVERLAY) // This doesn't check gendered_icon. Not an issue while only limbs can be robotic. - continue - preview_icon.Blend(new /icon(icobase, "[name]"), ICON_OVERLAY) - //Tail if(current_species && (current_species.bodyflags & HAS_TAIL)) var/tail_icon @@ -237,6 +227,16 @@ datum/preferences var/icon/temp = new /icon("icon" = tail_icon, "icon_state" = tail_icon_state) preview_icon.Blend(temp, ICON_OVERLAY) + for(var/name in list("r_arm","r_hand","r_leg","r_foot","l_leg","l_foot","l_arm","l_hand")) + if(organ_data[name] == "amputated") continue + if(organ_data[name] == "cyborg") + var/datum/robolimb/R + if(rlimb_data[name]) R = all_robolimbs[rlimb_data[name]] + if(!R) R = basic_robolimb + preview_icon.Blend(icon(R.icon, "[name]"), ICON_OVERLAY) // This doesn't check gendered_icon. Not an issue while only limbs can be robotic. + continue + preview_icon.Blend(new /icon(icobase, "[name]"), ICON_OVERLAY) + // Skin color if(current_species && (current_species.bodyflags & HAS_SKIN_COLOR)) preview_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) From 16c5af933cfe02e82f5398306b1aea34a99e1f5b Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Fri, 8 Jan 2016 17:16:28 -0500 Subject: [PATCH 2/4] Fix Pass 2 Corrects the issue in Fix Pass 1 The tail's north sprite will only be rendered to the tail layer, so it won't overlap arms and gloves. --- .../mob/living/carbon/human/update_icons.dm | 76 +++++++++++++------ 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index deb6981bd93..ce76c0ae81b 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -106,7 +106,7 @@ Please contact me on #coderbus IRC. ~Carn x //Human Overlays Indexes///////// #define MUTANTRACE_LAYER 1 -#define TAIL_LAYER 2 //bs12 specific. this hack is probably gonna come back to haunt me +#define TAIL_UNDERLIMBS_LAYER 2 //bs12 specific. this hack is probably gonna come back to haunt me #define LIMBS_LAYER 3 #define MARKINGS_LAYER 4 //2 #define MUTATIONS_LAYER 5 //3 @@ -119,22 +119,22 @@ Please contact me on #coderbus IRC. ~Carn x #define SUIT_LAYER 12 //10 #define GLASSES_LAYER 13 //11 #define BELT_LAYER 14 //12 //Possible make this an overlay of somethign required to wear a belt? -//#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me -#define SUIT_STORE_LAYER 15 //14 -#define BACK_LAYER 16 //15 -#define HAIR_LAYER 17 //16 //TODO: make part of head layer? -#define HEAD_ACCESSORY_LAYER 18 //17 -#define FHAIR_LAYER 19 //18 -#define FACEMASK_LAYER 20 //19 -#define HEAD_LAYER 21 //20 -#define COLLAR_LAYER 22 //21 -#define HANDCUFF_LAYER 23 //22 -#define LEGCUFF_LAYER 24 //23 -#define L_HAND_LAYER 25 //24 -#define R_HAND_LAYER 26 //25 -#define TARGETED_LAYER 27 //26 //BS12: Layer for the target overlay from weapon targeting system -#define FIRE_LAYER 28 //27 //If you're on fire -#define TOTAL_LAYERS 28 //27 +#define TAIL_LAYER 15 //13 //bs12 specific. this hack is probably gonna come back to haunt me +#define SUIT_STORE_LAYER 16 //14 +#define BACK_LAYER 17 //15 +#define HAIR_LAYER 18 //16 //TODO: make part of head layer? +#define HEAD_ACCESSORY_LAYER 19 //17 +#define FHAIR_LAYER 20 //18 +#define FACEMASK_LAYER 21 //19 +#define HEAD_LAYER 22 //20 +#define COLLAR_LAYER 23 //21 +#define HANDCUFF_LAYER 24 //22 +#define LEGCUFF_LAYER 25 //23 +#define L_HAND_LAYER 26 //24 +#define R_HAND_LAYER 27 //25 +#define TARGETED_LAYER 28 //26 //BS12: Layer for the target overlay from weapon targeting system +#define FIRE_LAYER 29 //27 //If you're on fire +#define TOTAL_LAYERS 29 //27 @@ -1012,6 +1012,7 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/proc/update_tail_layer(var/update_icons=1) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null overlays_standing[TAIL_LAYER] = null if(body_accessory) @@ -1019,7 +1020,14 @@ var/global/list/damage_icon_parts = list() var/icon/accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state) accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode) - overlays_standing[TAIL_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + + for(var/obj/item/organ/external/part in organs) + var/icon/temp = accessory_s + if(part.icon_position&(NORTH)) + var/icon/temp2 = new('icons/mob/human.dmi',"blank") + temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH) + overlays_standing[TAIL_LAYER] = image(temp2, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) else if(species.tail && species.bodyflags & HAS_TAIL) //no tailless tajaran @@ -1027,26 +1035,48 @@ var/global/list/damage_icon_parts = list() var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s") tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) - overlays_standing[TAIL_LAYER] = image(tail_s) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(tail_s) + + for(var/obj/item/organ/external/part in organs) + var/icon/temp = tail_s + if(part.icon_position&(NORTH)) + var/icon/temp2 = new('icons/mob/human.dmi',"blank") + temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH) + overlays_standing[TAIL_LAYER] = image(temp2) if(update_icons) update_icons() /mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null overlays_standing[TAIL_LAYER] = null if(body_accessory) var/icon/accessory_s = new/icon("icon" = body_accessory.get_animated_icon(), "icon_state" = body_accessory.get_animated_icon_state()) accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode) - overlays_standing[TAIL_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + + for(var/obj/item/organ/external/part in organs) + var/icon/temp = accessory_s + if(part.icon_position&(NORTH)) + var/icon/temp2 = new('icons/mob/human.dmi',"blank") + temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH) + overlays_standing[TAIL_LAYER] = image(temp2, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) else if(species.tail && species.bodyflags & HAS_TAIL) var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]w_s") tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) - overlays_standing[TAIL_LAYER] = image(tailw_s) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(tailw_s) + + for(var/obj/item/organ/external/part in organs) + var/icon/temp = tailw_s + if(part.icon_position&(NORTH)) + var/icon/temp2 = new('icons/mob/human.dmi',"blank") + temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH) + overlays_standing[TAIL_LAYER] = image(temp2) if(update_icons) update_icons() @@ -1117,13 +1147,13 @@ var/global/list/damage_icon_parts = list() //Human Overlays Indexes///////// #undef MUTANTRACE_LAYER -#undef TAIL_LAYER +#undef TAIL_UNDERLIMBS_LAYER #undef LIMBS_LAYER #undef MARKINGS_LAYER #undef MUTATIONS_LAYER #undef DAMAGE_LAYER #undef UNIFORM_LAYER -//#undef TAIL_LAYER +#undef TAIL_LAYER #undef ID_LAYER #undef SHOES_LAYER #undef GLOVES_LAYER From 6f484072f918f3c26142776648a98a2dbe61eb91 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Fri, 8 Jan 2016 17:38:24 -0500 Subject: [PATCH 3/4] Changelog --- html/changelogs/KasparoVy-PR-3166.yml | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 html/changelogs/KasparoVy-PR-3166.yml diff --git a/html/changelogs/KasparoVy-PR-3166.yml b/html/changelogs/KasparoVy-PR-3166.yml new file mode 100644 index 00000000000..73dac3d171c --- /dev/null +++ b/html/changelogs/KasparoVy-PR-3166.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. Remove the quotation mark and put in your name when copy+pasting the example changelog. +author: KasparoVy + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixes tails overlapping arms/limbs + gloves, etc. when facing EAST or WEST." + - bugfix: "Ensures tails will overlap stuff as normal only when facing NORTH so as to avoid unwanted interference with the base sprite." + - bugfix: "Tails now appear in ID cards, overlays things correctly." + - bugfix: "Tails now overlay and are overlayed by things correctly in preview icons." + - tweak: "Modifies the positioning of tail icon generation in the ID card preview icon generation file." + - tweak: "Modifies the positioning of tail icon generation in the player preferences preview icon generation file." + - tweak: "Breaks limb generation into its own layer, breaks tail generation into a second layer that can be overlayed by limbs." + - tweak: "TAIL_LAYER will now overlay the NORTH direction sprite of a tail now, while TAIL_UNDERLIMBS_LAYER gets all directions." \ No newline at end of file From 8c2acbfc8c7530a833a933a3973720fad1362e68 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Fri, 8 Jan 2016 18:13:01 -0500 Subject: [PATCH 4/4] Sorts out Commenting --- .../mob/living/carbon/human/update_icons.dm | 83 +++++++++++-------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ce76c0ae81b..871b3ab2fdb 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -106,35 +106,35 @@ Please contact me on #coderbus IRC. ~Carn x //Human Overlays Indexes///////// #define MUTANTRACE_LAYER 1 -#define TAIL_UNDERLIMBS_LAYER 2 //bs12 specific. this hack is probably gonna come back to haunt me +#define TAIL_UNDERLIMBS_LAYER 2 #define LIMBS_LAYER 3 -#define MARKINGS_LAYER 4 //2 -#define MUTATIONS_LAYER 5 //3 -#define DAMAGE_LAYER 6 //4 -#define UNIFORM_LAYER 7 //5 -#define ID_LAYER 8 //6 -#define SHOES_LAYER 9 //7 -#define GLOVES_LAYER 10 //8 -#define EARS_LAYER 11 //9 -#define SUIT_LAYER 12 //10 -#define GLASSES_LAYER 13 //11 -#define BELT_LAYER 14 //12 //Possible make this an overlay of somethign required to wear a belt? -#define TAIL_LAYER 15 //13 //bs12 specific. this hack is probably gonna come back to haunt me -#define SUIT_STORE_LAYER 16 //14 -#define BACK_LAYER 17 //15 -#define HAIR_LAYER 18 //16 //TODO: make part of head layer? -#define HEAD_ACCESSORY_LAYER 19 //17 -#define FHAIR_LAYER 20 //18 -#define FACEMASK_LAYER 21 //19 -#define HEAD_LAYER 22 //20 -#define COLLAR_LAYER 23 //21 -#define HANDCUFF_LAYER 24 //22 -#define LEGCUFF_LAYER 25 //23 -#define L_HAND_LAYER 26 //24 -#define R_HAND_LAYER 27 //25 -#define TARGETED_LAYER 28 //26 //BS12: Layer for the target overlay from weapon targeting system -#define FIRE_LAYER 29 //27 //If you're on fire -#define TOTAL_LAYERS 29 //27 +#define MARKINGS_LAYER 4 +#define MUTATIONS_LAYER 5 +#define DAMAGE_LAYER 6 +#define UNIFORM_LAYER 7 +#define ID_LAYER 8 +#define SHOES_LAYER 9 +#define GLOVES_LAYER 10 +#define EARS_LAYER 11 +#define SUIT_LAYER 12 +#define GLASSES_LAYER 13 +#define BELT_LAYER 14 //Possible make this an overlay of somethign required to wear a belt? +#define TAIL_LAYER 15 //bs12 specific. this hack is probably gonna come back to haunt me +#define SUIT_STORE_LAYER 16 +#define BACK_LAYER 17 +#define HAIR_LAYER 18 //TODO: make part of head layer? +#define HEAD_ACCESSORY_LAYER 19 +#define FHAIR_LAYER 20 +#define FACEMASK_LAYER 21 +#define HEAD_LAYER 22 +#define COLLAR_LAYER 23 +#define HANDCUFF_LAYER 24 +#define LEGCUFF_LAYER 25 +#define L_HAND_LAYER 26 +#define R_HAND_LAYER 27 +#define TARGETED_LAYER 28 //BS12: Layer for the target overlay from weapon targeting system +#define FIRE_LAYER 29 //If you're on fire +#define TOTAL_LAYERS 29 @@ -298,7 +298,7 @@ var/global/list/damage_icon_parts = list() if(!(part.icon_position & RIGHT)) temp2.Insert(new/icon(temp,dir=WEST),dir=WEST) base_icon.Blend(temp2, ICON_OVERLAY) - overlays_standing[LIMBS_LAYER] = image(base_icon) + overlays_standing[LIMBS_LAYER] = image(base_icon) // Diverts limbs to their own layer so they can overlay things (i.e. tails). if(part.icon_position & LEFT) temp2.Insert(new/icon(temp,dir=EAST),dir=EAST) if(part.icon_position & RIGHT) @@ -1012,16 +1012,20 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/proc/update_tail_layer(var/update_icons=1) - overlays_standing[TAIL_UNDERLIMBS_LAYER] = null - overlays_standing[TAIL_LAYER] = null + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null // NSEW direction icons, overlayed by LIMBS_LAYER + overlays_standing[TAIL_LAYER] = null // Only N direction icon so tails can still appear on the outside of uniforms and such. if(body_accessory) if(body_accessory.try_restrictions(src)) var/icon/accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state) accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode) + // Gives the underlimbs layer NSEW direction icons since it's overlayed by limbs and just about everything else anyway. + // No special treatment. overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + // Creates a blank icon, and copies accessory_s' north direction sprite into it + // before passing that to the tail layer that overlays uniforms and such. for(var/obj/item/organ/external/part in organs) var/icon/temp = accessory_s if(part.icon_position&(NORTH)) @@ -1035,8 +1039,12 @@ var/global/list/damage_icon_parts = list() var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s") tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + // Gives the underlimbs layer NSEW direction icons since it's overlayed by limbs and just about everything else anyway. + // No special treatment. overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(tail_s) + // Creates a blank icon, and copies accessory_s' north direction sprite into it + // before passing that to the tail layer that overlays uniforms and such. for(var/obj/item/organ/external/part in organs) var/icon/temp = tail_s if(part.icon_position&(NORTH)) @@ -1049,15 +1057,19 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1) - overlays_standing[TAIL_UNDERLIMBS_LAYER] = null - overlays_standing[TAIL_LAYER] = null + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null // NSEW direction icons, overlayed by LIMBS_LAYER + overlays_standing[TAIL_LAYER] = null // Only N direction icon so tails can still appear on the outside of uniforms and such. if(body_accessory) var/icon/accessory_s = new/icon("icon" = body_accessory.get_animated_icon(), "icon_state" = body_accessory.get_animated_icon_state()) accessory_s.Blend(rgb(r_skin, g_skin, b_skin), body_accessory.blend_mode) + // Gives the underlimbs layer NSEW direction icons since it's overlayed by limbs and just about everything else anyway. + // No special treatment. overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + // Creates a blank icon, and copies accessory_s' north direction sprite into it + // before passing that to the tail layer that overlays uniforms and such. for(var/obj/item/organ/external/part in organs) var/icon/temp = accessory_s if(part.icon_position&(NORTH)) @@ -1069,8 +1081,13 @@ var/global/list/damage_icon_parts = list() var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]w_s") tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + + // Gives the underlimbs layer NSEW direction icons since it's overlayed by limbs and just about everything else anyway. + // No special treatment. overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(tailw_s) + // Creates a blank icon, and copies accessory_s' north direction sprite into it + // before passing that to the tail layer that overlays uniforms and such. for(var/obj/item/organ/external/part in organs) var/icon/temp = tailw_s if(part.icon_position&(NORTH))