diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index eeb8accba92..dc81ed1a141 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -310,6 +310,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(tail_style.clip_mask) //VOREStation Edit. icon_key += tail_style.clip_mask_state + if(tail_style) + pixel_x = tail_style.mob_offset_x + pixel_y = tail_style.mob_offset_y + default_pixel_x = tail_style.mob_offset_x + default_pixel_y = tail_style.mob_offset_y + icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0]" var/icon/base_icon if(human_icon_cache[icon_key]) @@ -323,10 +329,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/apply_extra_transparency_foot = organs_by_name[BP_L_FOOT] && organs_by_name[BP_R_FOOT] var/icon/Cutter = null + var/icon_x_offset = 0 + var/icon_y_offset = 0 if(istype(tail_style, /datum/sprite_accessory/tail/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that. if(tail_style.clip_mask) //VOREStation Edit. - Cutter = new(icon = tail_style.icon, icon_state = tail_style.clip_mask_state) + Cutter = new(icon = (tail_style.clip_mask_icon ? tail_style.clip_mask_icon : tail_style.icon), icon_state = tail_style.clip_mask_state) Cutter.Blend("#000000", ICON_MULTIPLY) // Make it all black. @@ -335,13 +343,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() Cutter.Blend("#000000", ICON_MULTIPLY) // Black again. + icon_x_offset = tail_style.offset_x + icon_y_offset = tail_style.offset_y + for(var/obj/item/organ/external/part in organs) if(isnull(part) || part.is_stump() || part == chest || part.is_hidden_by_sprite_accessory()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff. continue var/icon/temp = part.get_icon(skeleton, !wholeicontransparent) if((part.organ_tag in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) && Cutter) - temp.Blend(Cutter, ICON_AND, x = -16) + temp.Blend(Cutter, ICON_AND, x = icon_x_offset, y = icon_y_offset) //That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST //And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part) @@ -904,7 +915,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!back) return //Why do anything - overlays_standing[BACK_LAYER] = back.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_back_str, default_icon = INV_BACK_DEF_ICON, default_layer = BACK_LAYER) + var/icon/c_mask = tail_style?.clip_mask //TODO: Figure out why the fuck it doesnt work with backpacks. Leaving this in for now, even though for some reason it does nothing. + if(c_mask) + if(istype(back, /obj/item/weapon/storage/backpack/saddlebag)) + c_mask = null + + overlays_standing[BACK_LAYER] = back.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_back_str, default_icon = INV_BACK_DEF_ICON, default_layer = BACK_LAYER, clip_mask = c_mask) apply_layer(BACK_LAYER) @@ -1327,13 +1343,15 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(istaurtail(tail_style)) var/datum/sprite_accessory/tail/taur/taurtype = tail_style - working.pixel_x = -16 + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y if(taurtype.can_ride && !riding_datum) riding_datum = new /datum/riding/taur(src) verbs |= /mob/living/carbon/human/proc/taur_mount verbs |= /mob/living/proc/toggle_rider_reins else if(islongtail(tail_style)) - working.pixel_x = -16 + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y return working return null diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm index 03d0d16ad10..1821ffe6aaa 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -32,8 +32,8 @@ /datum/sprite_accessory/tail/New() . = ..() - if(clip_mask_icon && clip_mask_state) - clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state) + if(clip_mask_state) + clip_mask = icon(icon = (clip_mask_icon ? clip_mask_icon : icon), icon_state = clip_mask_state) // Species-unique tails diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index b78de37bf74..77f5e7b71d3 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -8,17 +8,16 @@ /datum/sprite_accessory/tail name = "You should not see this..." icon = 'icons/mob/vore/tails_vr.dmi' + var/offset_x = 0 + var/offset_y = 0 + var/mob_offset_x = 0 + var/mob_offset_y = 0 do_colouration = 0 //Set to 1 to enable coloration using the tail color. species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use var/list/lower_layer_dirs = list(SOUTH) var/icon_loaf = null -/datum/sprite_accessory/tail/New() - . = ..() - if(clip_mask_icon && clip_mask_state) - clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state) - // Species-unique tails // Everyone tails @@ -1347,6 +1346,7 @@ /datum/sprite_accessory/tail/longtail name = "You should not see this..." icon = 'icons/mob/vore/taurs_vr.dmi' + offset_x = -16 do_colouration = 1 // Yes color, using tail color color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index 790ae7dc83f..976fdebc659 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -15,6 +15,7 @@ color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY can_ride = TRUE //whether we're real rideable taur or just in that category + offset_x = -16 //Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to //duplicate all the messages, and it starts getting awkward. These are singletons, anyway! @@ -1026,3 +1027,16 @@ icon_state = "fatnaga_s" extra_overlay = "fatnaga_markings" + +/* +/datum/sprite_accessory/tail/taur/teppi // Mostly used as example/template/test subject as to how you use the 'big' taur sprites. Pls give it better icons before uncommenting... + name = "Teppi (Taur)" + icon_state = "teppi_s" + clip_mask_icon = 'icons/mob/vore/taurs128x64_vr.dmi' + icon = 'icons/mob/vore/taurs128x64_vr.dmi' + clip_mask_state = "taur_clip_mask_teppi" + icon_sprite_tag = "teppi" + offset_x = -32 + offset_y = -11 + mob_offset_y = 11 +*/ \ No newline at end of file diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 2989dcad63d..24bd0447b42 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -375,8 +375,13 @@ load.forceMove(dest) load.set_dir(get_dir(loc, dest)) load.anchored = FALSE //we can only load non-anchored items, so it makes sense to set this to false - load.pixel_x = initial(load.pixel_x) - load.pixel_y = initial(load.pixel_y) + if(ismob(load)) + var/mob/L = load + L.pixel_x = L.default_pixel_x + L.pixel_y = L.default_pixel_y + else + load.pixel_x = initial(load.pixel_x) + load.pixel_y = initial(load.pixel_y) load.layer = initial(load.layer) if(ismob(load)) diff --git a/icons/mob/vore/taurs128x64_vr.dmi b/icons/mob/vore/taurs128x64_vr.dmi new file mode 100644 index 00000000000..fa546b9c682 Binary files /dev/null and b/icons/mob/vore/taurs128x64_vr.dmi differ diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index 4c5d0c8bf2e..74b8c3c0a59 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ