From b6af0dd02bc1af46dfda7bac4b325c36b31e3ea0 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Sun, 10 Jan 2016 23:46:39 -0500 Subject: [PATCH] TAIL FIX! Squashing all those commits... - Adds blank icons with standardized timings for species tail wagging, used in icon generation. - Fixes tails overlapping arms/limbs + gloves, etc. when facing EAST or WEST. - Ensures tails will overlap stuff as normal only when facing NORTH so as to avoid unwanted interference with the base sprite. - Tails now appear in ID cards, overlaying things correctly. - Tails now overlay and are overlaid by things correctly in preview icons. - Modifies the positioning of tail icon generation in the ID card preview icon generation file. - Modifies the positioning of tail icon generation in the player preferences preview icon generation file. - Breaks limb generation into its own layer, breaks tail generation into a second layer that can be overlaid by limbs. - TAIL_LAYER will now overlay the NORTH direction sprite of a tail now, while TAIL_UNDERLIMBS_LAYER gets all remaining directions. **AIMS TO DO THE FOLLOWING:** - *ELIMINATE THE ISSUE IN #3183 WITH DUPLICATE TAIL ICON GENERATION* - *ELIMINATE THE ISSUE IN #3183 WITH TAILS WAGGING TOO FAST/INCORRECTLY* - *ELIMINATE THE ISSUE IN #3183 WITH BODY ICONS NOT RENDERING* Missed a spot Occurred when reformatting the code and reducing the number of pointless variables Missed a spot 2 Crash Fix Fixes Spontaneous Tail Overlapping Limbs Tiny Unathi Sprite Corrections One pixel on the Unathi right arm east direction sprite was miscoloured (used left arm west direction as a reference), and the animated Unathi tails previously did not meet the body while naked-- appearing to float. Fixes both Finalizes Changelog Cleans up Vox puke Accommodates Admin Overrides to body_accessory Species Checks & Fix Does the above Elaborating on accommodation: Species getting body accessories that wouldn't normally be getting body accessories will inherit the Vulpkanin's default animation template as those are currently the only tails we have to worry about right now Elaborating on Fix: Adds a default animation template for Vulpkanin in body_accessory as the animation timings for Vulpkanin tails there are different from those in effects/species.dmi Unathi Static Tail Fix Adjusts north-direction Unathi static tail sprite, now attaches to the body in the correct location. This PR is now on Sale! Significantly cheaper. Now, it will only generate tail icons on a per-direction basis if the user's species is flagged to have a tail that is overlapped by limbs (TAIL_OVERLAPPED). Otherwise, it just uses the traditional cheapo method of icon generation. This way, we have fixed wagging Voxtails at a lower cost. Even Cheaper If the user's species isn't flagged to have a tail that needs to be overlapped by limbs, it won't divert limbs into their own layer as it's unnecessary. Tested by spawning a member of every species, walking around to see if there was any directional issues, wagging and *swagging all tails-- all is still working as it should be. --- code/__DEFINES/flags.dm | 11 +- code/datums/datacore.dm | 6 +- .../living/carbon/human/species/station.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 173 ++++++++++++++---- .../mob/new_player/preferences_setup.dm | 20 +- html/changelogs/KasparoVy-PR-3195.yml | 47 +++++ icons/effects/species.dmi | Bin 28317 -> 28574 bytes icons/mob/body_accessory.dmi | Bin 3872 -> 3916 bytes icons/mob/human_races/r_lizard.dmi | Bin 4381 -> 1900 bytes 9 files changed, 206 insertions(+), 53 deletions(-) create mode 100644 html/changelogs/KasparoVy-PR-3195.yml diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 521349b02af..d3f4abef037 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -60,11 +60,12 @@ #define FEET_NOSLIP 4 #define HAS_HEAD_ACCESSORY 8 #define HAS_TAIL 16 -#define HAS_SKIN_TONE 32 -#define HAS_SKIN_COLOR 64 -#define HAS_MARKINGS 128 -#define TAIL_WAGGING 256 -#define NO_EYES 512 +#define TAIL_OVERLAPPED 32 +#define HAS_SKIN_TONE 64 +#define HAS_SKIN_COLOR 128 +#define HAS_MARKINGS 256 +#define TAIL_WAGGING 512 +#define NO_EYES 1024 //Species Diet Flags #define DIET_CARN 1 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/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index ebab34d6fc7..6b419a6193a 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -200,7 +200,7 @@ flags = NO_SCAN | IS_WHITELISTED clothing_flags = HAS_SOCKS dietflags = DIET_OMNI - bodyflags = HAS_TAIL | TAIL_WAGGING + bodyflags = HAS_TAIL | TAIL_WAGGING | TAIL_OVERLAPPED blood_color = "#2299FC" flesh_color = "#808D11" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index e1c05cc7210..528f89cc38e 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_UNDERLIMBS_LAYER 2 +#define LIMBS_LAYER 3 +#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 SUIT_STORE_LAYER 15 +#define BACK_LAYER 16 +#define TAIL_LAYER 17 //bs12 specific. this hack is probably gonna come back to haunt me +#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 @@ -323,6 +325,8 @@ var/global/list/damage_icon_parts = list() //END CACHED ICON GENERATION. stand_icon.Blend(base_icon,ICON_OVERLAY) + if(src.species.bodyflags & TAIL_OVERLAPPED) // If the user's species is flagged to have a tail that needs to be overlapped by limbs... + overlays_standing[LIMBS_LAYER] = image(stand_icon) // Diverts limbs to their own layer so they can overlay things (i.e. tails). //Underwear if(underwear && species.clothing_flags & HAS_UNDERWEAR) @@ -1009,46 +1013,145 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/proc/update_tail_layer(var/update_icons=1) - overlays_standing[TAIL_LAYER] = null + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null // SEW direction icons, overlayed by LIMBS_LAYER. + overlays_standing[TAIL_LAYER] = null // This will be one of two things: + // If the species' tail is overlapped by limbs, this will be only the N direction icon so tails can still appear on the outside of uniforms and such. + // Otherwise, since the user's tail isn't overlapped by limbs, it will be a full icon with all directions. 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) - overlays_standing[TAIL_LAYER] = image(accessory_s, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + if(src.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... + // Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway. + var/icon/temp1 = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s") + if(src.species.name in body_accessory.allowed_species) + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "[species.tail]_delay") + temp1 = temp + else + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "vulptail_delay") + temp1 = temp + temp1.Insert(new/icon(accessory_s,dir=SOUTH),dir=SOUTH) + temp1.Insert(new/icon(accessory_s,dir=EAST),dir=EAST) + temp1.Insert(new/icon(accessory_s,dir=WEST),dir=WEST) + + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(temp1, "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. + var/icon/temp2 = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s") + if(src.species.name in body_accessory.allowed_species) + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "[species.tail]_delay") + temp2 = temp + else + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "vulptail_delay") + temp2 = temp + + temp2.Insert(new/icon(accessory_s,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 // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation. + overlays_standing[TAIL_LAYER] = image(accessory_s, "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 if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space)) 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) + if(src.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... + // Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway. + var/icon/temp1 = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_delay") + temp1.Insert(new/icon(tail_s,dir=SOUTH),dir=SOUTH) + temp1.Insert(new/icon(tail_s,dir=EAST),dir=EAST) + temp1.Insert(new/icon(tail_s,dir=WEST),dir=WEST) + + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(temp1) + + // 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. + var/icon/temp2 = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_delay") + temp2.Insert(new/icon(tail_s,dir=NORTH),dir=NORTH) + + overlays_standing[TAIL_LAYER] = image(temp2) + else // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation. + overlays_standing[TAIL_LAYER] = image(tail_s) if(update_icons) update_icons() /mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1) - overlays_standing[TAIL_LAYER] = null + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null // SEW direction icons, overlayed by LIMBS_LAYER. + overlays_standing[TAIL_LAYER] = null // This will be one of two things: + // If the species' tail is overlapped by limbs, this will be only the N direction icon so tails can still appear on the outside of uniforms and such. + // Otherwise, since the user's tail isn't overlapped by limbs, it will be a full icon with all directions. 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) + if(src.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... + // Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway. + var/icon/temp1 = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s") + if(body_accessory.allowed_species) + if(src.species.name in body_accessory.allowed_species) + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "[species.tail]_delay") + temp1 = temp + else + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "vulptail_delay") + temp1 = temp + + temp1.Insert(accessory_s,dir=SOUTH) + temp1.Insert(accessory_s,dir=EAST) + temp1.Insert(accessory_s,dir=WEST) + + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(temp1, "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. + var/icon/temp2 = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s") + if(src.species.name in body_accessory.allowed_species) // If the user's species is in the list of allowed species for the currently selected body accessory, use the appropriate animation timing blank + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "[species.tail]_delay") + temp2 = temp + else // Else if the user's species is not in the list of allowed species for the currently selected body accessory, this point must have been reached by admin-override. Use vulpkanin timings as default. + var/icon/temp = new/icon("icon" = 'icons/mob/body_accessory.dmi', "icon_state" = "vulptail_delay") + temp2 = temp + + temp2.Insert(accessory_s,dir=NORTH) + + overlays_standing[TAIL_LAYER] = image(temp2, "pixel_x" = body_accessory.pixel_x_offset, "pixel_y" = body_accessory.pixel_y_offset) + else // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation. + overlays_standing[TAIL_LAYER] = image(accessory_s, "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) + if(src.species.bodyflags & TAIL_OVERLAPPED) // If the player has a species whose tail is overlapped by limbs... + // Gives the underlimbs layer SEW direction icons since it's overlayed by limbs and just about everything else anyway. + var/icon/temp1 = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_delay") + temp1.Insert(tailw_s,dir=SOUTH) + temp1.Insert(tailw_s,dir=EAST) + temp1.Insert(tailw_s,dir=WEST) + + overlays_standing[TAIL_UNDERLIMBS_LAYER] = image(temp1) + + // 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. + var/icon/temp2 = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_delay") + temp2.Insert(tailw_s,dir=NORTH) + + overlays_standing[TAIL_LAYER] = image(temp2) + else // Otherwise, since the user's tail isn't overlapped by limbs, go ahead and use default icon generation. + overlays_standing[TAIL_LAYER] = image(tailw_s) if(update_icons) update_icons() /mob/living/carbon/human/proc/stop_tail_wagging(var/update_icons=1) + overlays_standing[TAIL_UNDERLIMBS_LAYER] = null overlays_standing[TAIL_LAYER] = null update_tail_layer(update_icons) //just trigger a full update for normal stationary sprites @@ -1114,11 +1217,12 @@ var/global/list/damage_icon_parts = list() //Human Overlays Indexes///////// #undef MUTANTRACE_LAYER +#undef TAIL_UNDERLIMBS_LAYER +#undef LIMBS_LAYER #undef MARKINGS_LAYER #undef MUTATIONS_LAYER #undef DAMAGE_LAYER #undef UNIFORM_LAYER -#undef TAIL_LAYER #undef ID_LAYER #undef SHOES_LAYER #undef GLOVES_LAYER @@ -1129,6 +1233,7 @@ var/global/list/damage_icon_parts = list() #undef BELT_LAYER #undef SUIT_STORE_LAYER #undef BACK_LAYER +#undef TAIL_LAYER #undef HAIR_LAYER #undef HEAD_LAYER #undef HEAD_ACCESSORY_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) diff --git a/html/changelogs/KasparoVy-PR-3195.yml b/html/changelogs/KasparoVy-PR-3195.yml new file mode 100644 index 00000000000..776e579afb5 --- /dev/null +++ b/html/changelogs/KasparoVy-PR-3195.yml @@ -0,0 +1,47 @@ +################################ +# 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: + - imageadd: "Adds blank icons with standardized timings for species tail wagging, used in icon generation." + - 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 overlaid 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 overlaid by limbs." + - tweak: "If the user's species is flagged to have a tail that is overlapped, TAIL_LAYER will now overlay the NORTH direction sprite of a tail now, while TAIL_UNDERLIMBS_LAYER gets all remaining directions. Otherwise icons are generated in the traditional manner." + - tweak: "Adjusts the Unathi right arm east direction and animated tail sprites, recolouring a random pixel and fixing a floating tail respectively." + - tweak: "Adjusts position of tail layer such that tails' north direction sprites will overlay backpacks (more importantly, satchel straps)." + - tweak: "Accommodates admin-overrides to the body_accessory species check by setting the default animation template to Vulpkanin." + - tweak: "Adjusts north-direction Unathi static tail sprite, now attaches to the body in the correct location." \ No newline at end of file diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index e339fbbdce173c45b710dad5d7b80d752c42aff7..7096b2d360a9f5bde1e35c8c58827dcee32112a1 100644 GIT binary patch literal 28574 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

!agA8DgAW*;QO^tK5!LB) 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 E0MnmSZ2$lO diff --git a/icons/mob/body_accessory.dmi b/icons/mob/body_accessory.dmi index f79b4c262f1d2c3865576a9a677dc1fcb4f92ce5..92068cd07ac6d0f8a066c17f196544b5d514ab29 100644 GIT binary patch literal 3916 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 diff --git a/icons/mob/human_races/r_lizard.dmi b/icons/mob/human_races/r_lizard.dmi index b351428779d225ca30e933c7cebc0467baff63b1..457e50b204e9dbdc428490083d891be8fab798c5 100644 GIT binary patch delta 1703 zcmYLKcT`h{8o!sMrbZG$ks%0SRJLU&L`W{Xl&SI_6oG^xD5D^tj1n#&7>l9^NLmmh zLd(!XDj+DDgxDg2H6REy%r=Z-0BHgeX3Eo^=Re;%=ljm@+Z8(V*g`c50sw%RdjWns zjO^>_=fdT34Gj$;2vS#9x3sjx;c%Lonivd5)&rQCnd#~26$8Kv0QemMmi%m3ELIo* z95VpeY_^>yu;aTwx+!oc6qtP6`vd^Z3}44Rg?FjDJ3IKL-dw1NV^o>QU(8dATEFv@ zD3ftWS!0$_%rbS;2fcH&l^66eXPmi?TxWxBu7cyI+8@Yc)6RgHg1+gnSm{Q~$}?qE zU-&e18uxXUt!j-&utIAPJhVdFTV0tLPBN(_B|sPgb$10>; zzEsj($wQ}&tqX;b-;Rdnr9STI5)H=leEcsxt3n^&8mvX{)3<~6ycvooKlS-3v_Y#G zy1839BN`n>zA#*isSSqppZRSci-QtzVwOj7V18!?ArYEh58t!Cgh)h)I2UnW1M(f+ zEBuOxGx`w&Iyv0tU>LT=-l|OA$1MpqzyISlotX78xBp9xJh5^PUJ$@)!?bz~sa>>X1w)(Zz)OR#q_k{(z((&#EamZQ zuF4d1RtycvQ`j~I>;Y-OHr+w7UA$kN#spYMx8zHOY4jmk=Y zlByx<{_CnWbMecAC&l{>ESY~BTc^CXZ*oH_8N{X?J=urBLYEU`mV(FgEy!ow;>+rf zA4dH;|941wCwuc0cDg=cM6}i;(3V4MzzK)AGo2m&8w`3o>7=s++jR~(3?`|h`d^Ce z@kuD3z}+~jwnx*t@watLnUnROe6ry3C!k6-De~v*>XQAVQ}|)}bDw?Ni=}Rx$O_Ar zO@c}P6n~<>`iQ4ze@aG>t4d%e*>?3molGYLf1*AEof_dt$mq5OjQtM(@_GIwJOz$! z-%Ilvk;w}dz(*|w##Vn!+xtdC{a9|ZebtuyySBVm4dCv`d5)rKIp-7!buE{o%<&OY zh7ljfAlL3%!O4hbS;}9m0B$g=m zU|PSorD?;7bBrMH_k)41NVwQvzO+45^(;ncc8^KRw9)Cb zjp9Nhxpc$eTVn8)=}cy^c%-=7rHfgzAN}Hd_TA zD$#_rrh(`*r(dz8`r2KOQk%8TZ{$na@>OffKN>#;84gqt%Ee3 zRr7^Z;obHzrDQOp{QV8b}lRE zsBPg1D;S)qDnccr^fpEcfQPO?mr=}0xpUcor{ZmjoS|HEeA!@)l^k()&^aq+*(N{} zY@&;4&|Q#aBxhnl#a<6W-WK||NJ2H|8?~=4%Jn&|*BmLLTj)9zesh$`fg7AtpszAz z9tOlKtFLFD^n6x9zRO|YQ^e_8SeQa}S%eoodCdFE?-(8`J`LMkkq||^Q|786;?0hM z1tmjMi!Tih%&hY5M2%Ec3;u?$Hj~4-uqG=;B<#vale$GFO29ALbYSue8IvbOXpV`! zPS=nC2Cyi`uspPuy0N$qcZT-Iy4}$1LlS=_t%09J3+bEupxggz*v=M7TI$#&O8J|A og$jX4!pSLGN!vO0Qx7*$#l=Q0=kXKAcOD4f?&9s-;7HB+2Sy|!#sB~S literal 4381 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