mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Cleans up duplicate calls in bodypart overlays, implements a texture priority system (#89783)
## About The Pull Request Implemented a bodypart texture overlay priority system - ensures that derez suicide always goes ontop of carp infusions, and voidwalker curse goes ontop of both - currently the last one applied is the one that sticks with you. Also cleaned up duplicate update_body calls, either removing them or adding ``update = FALSE`` to overlay code. ## Why It's Good For The Game Having whichever overlay was applied the latest be displayed is just too inconsistent. And duplicate calls eat perf, bad.
This commit is contained in:
+22
-9
@@ -121,10 +121,12 @@ Unlike normal organs, we're actually inside a persons limbs at all times
|
||||
feature_key = "horns"
|
||||
dyable = TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
/datum/bodypart_overlay/mutant/horns/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/horns/get_global_feature_list()
|
||||
@@ -151,7 +153,10 @@ Unlike normal organs, we're actually inside a persons limbs at all times
|
||||
layers = EXTERNAL_ADJACENT
|
||||
feature_key = "frills"
|
||||
|
||||
/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
/datum/bodypart_overlay/mutant/frills/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(!(human.head?.flags_inv & HIDEEARS))
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -182,10 +187,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
|
||||
layers = EXTERNAL_ADJACENT
|
||||
feature_key = "snout"
|
||||
|
||||
/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
if(!(human.wear_mask?.flags_inv & HIDESNOUT) && !(human.head?.flags_inv & HIDESNOUT))
|
||||
/datum/bodypart_overlay/mutant/snout/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
return FALSE
|
||||
if((human.head?.flags_inv & HIDESNOUT) || (human.wear_mask?.flags_inv & HIDESNOUT))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/snout/get_global_feature_list()
|
||||
return SSaccessories.snouts_list
|
||||
@@ -272,7 +280,10 @@ Unlike normal organs, we're actually inside a persons limbs at all times
|
||||
/datum/bodypart_overlay/mutant/antennae/get_base_icon_state()
|
||||
return burnt ? burn_datum.icon_state : sprite_datum.icon_state
|
||||
|
||||
/datum/bodypart_overlay/mutant/antennae/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
/datum/bodypart_overlay/mutant/antennae/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(!(human.head?.flags_inv & HIDEANTENNAE))
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -320,8 +331,10 @@ Unlike normal organs, we're actually inside a persons limbs at all times
|
||||
else
|
||||
overlay.color = null
|
||||
|
||||
/datum/bodypart_overlay/mutant/pod_hair/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
/datum/bodypart_overlay/mutant/pod_hair/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if((human.head?.flags_inv & HIDEHAIR) || (human.wear_mask?.flags_inv & HIDEHAIR))
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
+6
-3
@@ -37,10 +37,13 @@
|
||||
/datum/bodypart_overlay/mutant/spines/get_global_feature_list()
|
||||
return SSaccessories.spines_list
|
||||
|
||||
/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
. = ..()
|
||||
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
|
||||
/datum/bodypart_overlay/mutant/spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(human.wear_suit?.flags_inv & HIDEJUMPSUIT)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/spines/set_dye_color(new_color, obj/item/organ/tail/organ)
|
||||
var/obj/item/organ/tail/tail = organ?.owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
|
||||
|
||||
+11
-5
@@ -147,8 +147,11 @@
|
||||
/datum/bodypart_overlay/mutant/tail/get_base_icon_state()
|
||||
return "[wagging ? "wagging_" : ""][sprite_datum.icon_state]" //add the wagging tag if we be wagging
|
||||
|
||||
/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
|
||||
/datum/bodypart_overlay/mutant/tail/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(human.wear_suit?.flags_inv & HIDEJUMPSUIT)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -279,10 +282,13 @@
|
||||
/datum/bodypart_overlay/mutant/tail_spines/get_base_icon_state()
|
||||
return (!isnull(tail_spine_key) ? "[tail_spine_key]_" : "") + (wagging ? "wagging_" : "") + sprite_datum.icon_state // Select the wagging state if appropriate
|
||||
|
||||
/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
. = ..()
|
||||
if(human.wear_suit && (human.wear_suit.flags_inv & HIDEJUMPSUIT))
|
||||
/datum/bodypart_overlay/mutant/tail_spines/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(human.wear_suit?.flags_inv & HIDEJUMPSUIT)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/tail_spines/set_dye_color(new_color, obj/item/organ/organ)
|
||||
dye_color = new_color //no update_body_parts() call, tail/set_dye_color will do it.
|
||||
|
||||
@@ -111,10 +111,13 @@
|
||||
/datum/bodypart_overlay/mutant/wings/moth/get_global_feature_list()
|
||||
return SSaccessories.moth_wings_list
|
||||
|
||||
/datum/bodypart_overlay/mutant/wings/moth/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
if(!(human.wear_suit?.flags_inv & HIDEMUTWINGS))
|
||||
/datum/bodypart_overlay/mutant/wings/moth/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
return FALSE
|
||||
if(human.wear_suit?.flags_inv & HIDEMUTWINGS)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/bodypart_overlay/mutant/wings/moth/get_base_icon_state()
|
||||
return burnt ? burn_datum.icon_state : sprite_datum.icon_state
|
||||
|
||||
+4
-1
@@ -24,7 +24,10 @@
|
||||
layers = ALL_EXTERNAL_OVERLAYS
|
||||
feature_key = "wings"
|
||||
|
||||
/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(mob/living/carbon/human/human)
|
||||
/datum/bodypart_overlay/mutant/wings/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner)
|
||||
var/mob/living/carbon/human/human = bodypart_owner.owner
|
||||
if(!istype(human))
|
||||
return TRUE
|
||||
if(!human.wear_suit)
|
||||
return TRUE
|
||||
if(!(human.wear_suit.flags_inv & HIDEJUMPSUIT))
|
||||
|
||||
Reference in New Issue
Block a user