Merge pull request #3184 from ParadiseSS13/revert-3166-Tail-Fix

Revert "Fixes Tails Overlaying Arms"
This commit is contained in:
TheDZD
2016-01-10 18:17:12 -05:00
4 changed files with 46 additions and 140 deletions
@@ -106,35 +106,33 @@ Please contact me on #coderbus IRC. ~Carn x
//Human Overlays Indexes/////////
#define MUTANTRACE_LAYER 1
#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 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
#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
@@ -298,7 +296,6 @@ 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) // 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,26 +1009,14 @@ 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 // 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.
overlays_standing[TAIL_LAYER] = null
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))
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)
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
@@ -1039,61 +1024,26 @@ 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))
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
overlays_standing[TAIL_LAYER] = image(temp2)
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_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.
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)
// 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))
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)
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)
// 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))
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
overlays_standing[TAIL_LAYER] = image(temp2)
overlays_standing[TAIL_LAYER] = image(tailw_s)
if(update_icons)
update_icons()
@@ -1164,8 +1114,6 @@ 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
@@ -211,6 +211,16 @@ 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
@@ -227,16 +237,6 @@ 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)