change the switch tail layer verb to choose between three layers (#17862)

This commit is contained in:
Timothy Teakettle
2025-06-14 23:21:22 -07:00
committed by GitHub
parent 45618b5e9e
commit d79a8105e9
6 changed files with 67 additions and 43 deletions
+33 -32
View File
@@ -11,39 +11,40 @@
#define SURGERY_LAYER 8 //Overlays for open surgical sites
#define UNDERWEAR_LAYER 9 //Underwear/bras/etc
#define SHOES_LAYER_ALT 10 //Shoe-slot item (when set to be under uniform via verb)
#define UNIFORM_LAYER 11 //Uniform-slot item
#define ID_LAYER 12 //ID-slot item
#define SHOES_LAYER 13 //Shoe-slot item
#define GLOVES_LAYER 14 //Glove-slot item
#define BELT_LAYER 15 //Belt-slot item
#define SUIT_LAYER 16 //Suit-slot item
#define TAIL_UPPER_LAYER 17 //Some species have tails to render (As viewed from the N, E, or W)
#define GLASSES_LAYER 18 //Eye-slot item
#define BELT_LAYER_ALT 19 //Belt-slot item (when set to be above suit via verb)
#define SUIT_STORE_LAYER 20 //Suit storage-slot item
#define BACK_LAYER 21 //Back-slot item
#define HAIR_LAYER 22 //The human's hair
#define HAIR_ACCESSORY_LAYER 23 //Simply move this up a number if things are added.
#define EARS_LAYER 24 //Both ear-slot items (combined image)
#define EYES_LAYER 25 //Mob's eyes (used for glowing eyes)
#define FACEMASK_LAYER 26 //Mask-slot item
#define GLASSES_LAYER_ALT 27 //So some glasses can appear on top of hair and things
#define HEAD_LAYER 28 //Head-slot item
#define HANDCUFF_LAYER 29 //Handcuffs, if the human is handcuffed, in a secret inv slot
#define LEGCUFF_LAYER 30 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 31 //Left-hand item
#define R_HAND_LAYER 32 //Right-hand item
#define WING_LAYER 33 //Wings or protrusions over the suit.
#define VORE_BELLY_LAYER 34 //Move this and everything after up if things are added.
#define VORE_TAIL_LAYER 35 //Move this and everything after up if things are added.
#define TAIL_UPPER_LAYER_ALT 36 //Modified tail-sprite layer. Tend to be larger.
#define MODIFIER_EFFECTS_LAYER 37 //Effects drawn by modifiers
#define FIRE_LAYER 38 //'Mob on fire' overlay layer
#define MOB_WATER_LAYER 39 //'Mob submerged' overlay layer
#define TARGETED_LAYER 40 //'Aimed at' overlay layer
#define TOTAL_LAYERS 40 // <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
#define TAIL_UPPER_LAYER_LOW 11 //Modified tail-sprite layer. Tend to be larger.
#define UNIFORM_LAYER 12 //Uniform-slot item
#define ID_LAYER 13 //ID-slot item
#define SHOES_LAYER 14 //Shoe-slot item
#define GLOVES_LAYER 15 //Glove-slot item
#define BELT_LAYER 16 //Belt-slot item
#define SUIT_LAYER 17 //Suit-slot item
#define TAIL_UPPER_LAYER 18 //Some species have tails to render (As viewed from the N, E, or W)
#define GLASSES_LAYER 19 //Eye-slot item
#define BELT_LAYER_ALT 20 //Belt-slot item (when set to be above suit via verb)
#define SUIT_STORE_LAYER 21 //Suit storage-slot item
#define BACK_LAYER 22 //Back-slot item
#define HAIR_LAYER 23 //The human's hair
#define HAIR_ACCESSORY_LAYER 24 //Simply move this up a number if things are added.
#define EARS_LAYER 25 //Both ear-slot items (combined image)
#define EYES_LAYER 26 //Mob's eyes (used for glowing eyes)
#define FACEMASK_LAYER 27 //Mask-slot item
#define GLASSES_LAYER_ALT 28 //So some glasses can appear on top of hair and things
#define HEAD_LAYER 29 //Head-slot item
#define HANDCUFF_LAYER 30 //Handcuffs, if the human is handcuffed, in a secret inv slot
#define LEGCUFF_LAYER 31 //Same as handcuffs, for legcuffs
#define L_HAND_LAYER 32 //Left-hand item
#define R_HAND_LAYER 33 //Right-hand item
#define WING_LAYER 34 //Wings or protrusions over the suit.
#define VORE_BELLY_LAYER 35 //Move this and everything after up if things are added.
#define VORE_TAIL_LAYER 36 //Move this and everything after up if things are added.
#define TAIL_UPPER_LAYER_HIGH 37 //Modified tail-sprite layer. Tend to be larger.
#define MODIFIER_EFFECTS_LAYER 38 //Effects drawn by modifiers
#define FIRE_LAYER 39 //'Mob on fire' overlay layer
#define MOB_WATER_LAYER 40 //'Mob submerged' overlay layer
#define TARGETED_LAYER 41 //'Aimed at' overlay layer
#define TOTAL_LAYERS 41 // <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
//These two are only used for gargoyles currently
#define HUMAN_BODY_LAYERS list(MUTATIONS_LAYER, TAIL_LOWER_LAYER, WING_LOWER_LAYER, BODYPARTS_LAYER, SKIN_LAYER, BLOOD_LAYER, MOB_DAM_LAYER, TAIL_UPPER_LAYER, HAIR_LAYER, HAIR_ACCESSORY_LAYER, EYES_LAYER, WING_LAYER, VORE_BELLY_LAYER, VORE_TAIL_LAYER, TAIL_UPPER_LAYER_ALT)
#define HUMAN_BODY_LAYERS list(MUTATIONS_LAYER, TAIL_LOWER_LAYER, WING_LOWER_LAYER, BODYPARTS_LAYER, SKIN_LAYER, BLOOD_LAYER, MOB_DAM_LAYER, TAIL_UPPER_LAYER, HAIR_LAYER, HAIR_ACCESSORY_LAYER, EYES_LAYER, WING_LAYER, VORE_BELLY_LAYER, VORE_TAIL_LAYER, TAIL_UPPER_LAYER_HIGH, TAIL_UPPER_LAYER_LOW)
#define HUMAN_OTHER_LAYERS list(MODIFIER_EFFECTS_LAYER, FIRE_LAYER, MOB_WATER_LAYER, TARGETED_LAYER)
+2 -2
View File
@@ -62,7 +62,7 @@
tail_lower_dirs.Cut()
else if (H.tail_style)
tail_lower_dirs = H.tail_style.lower_layer_dirs.Copy()
tail_alt = H.tail_alt ? TAIL_UPPER_LAYER_ALT : TAIL_UPPER_LAYER
tail_alt = H.tail_alt ? TAIL_UPPER_LAYER_HIGH : TAIL_UPPER_LAYER
max_integrity = H.getMaxHealth() + 100
obj_integrity = H.health + 100
@@ -96,7 +96,7 @@
if (istype(H.overlays_standing[i], /image) && (i in body_layers))
var/image/old_image = H.overlays_standing[i]
var/image/new_image = image(old_image)
if (i == TAIL_LOWER_LAYER || i == TAIL_UPPER_LAYER || i == TAIL_UPPER_LAYER_ALT)
if (i == TAIL_LOWER_LAYER || i == TAIL_UPPER_LAYER || i == TAIL_UPPER_LAYER_HIGH)
tail_image = new_image
new_image.color = tint_color
new_image.layer = old_image.layer
@@ -1,3 +1,7 @@
#define SWITCH_TAIL_LAYER_UPPER "Upper"
#define SWITCH_TAIL_LAYER_STANDARD "Standard"
#define SWITCH_TAIL_LAYER_LOWER "Lower"
/mob/living/carbon/human/verb/toggle_resizing_immunity()
set name = "Toggle Resizing Immunity"
set desc = "Toggles your ability to resist resizing attempts"
@@ -46,7 +50,18 @@
set name = "Switch tail layer"
set category = "IC.Game"
set desc = "Switch tail layer on top."
tail_alt = !tail_alt
var/input = tgui_input_list(usr, "Select a tail layer.", "Set Tail Layer", list(SWITCH_TAIL_LAYER_UPPER, SWITCH_TAIL_LAYER_STANDARD, SWITCH_TAIL_LAYER_LOWER))
if(isnull(input))
return
switch(input)
if(SWITCH_TAIL_LAYER_UPPER)
tail_alt = TAIL_UPPER_LAYER_HIGH
if(SWITCH_TAIL_LAYER_STANDARD)
tail_alt = TAIL_UPPER_LAYER
if(SWITCH_TAIL_LAYER_LOWER)
tail_alt = TAIL_UPPER_LAYER_LOW
update_tail_showing()
/mob/living/carbon/human/verb/hide_wings_vr()
@@ -84,3 +99,7 @@
else
message = "hides their tail."
visible_message(span_filter_notice("[src] [message]"))
#undef SWITCH_TAIL_LAYER_UPPER
#undef SWITCH_TAIL_LAYER_STANDARD
#undef SWITCH_TAIL_LAYER_LOWER
@@ -11,6 +11,8 @@
var/markings_len = 0 //mostly an arbitrary number
var/low_sorting_priority = FALSE
tail_alt = TAIL_UPPER_LAYER // not a toggle for humans but a pointer for what layer the tail should be when facing North/East/West
/mob/living/carbon/human/proc/shadekin_get_energy()
var/datum/species/shadekin/SK = species
@@ -283,5 +283,5 @@
/mob/living/carbon/human/set_dir(var/new_dir)
. = ..()
if(. && (species.tail || tail_style))
update_tail_showing()
//update_tail_showing() this is already called by update_inv_wear_suit
update_inv_wear_suit()
@@ -860,7 +860,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
suit_sprite = INV_SUIT_DEF_ICON
var/icon/c_mask = null
var/tail_is_rendered = (overlays_standing[TAIL_UPPER_LAYER] || overlays_standing[TAIL_UPPER_LAYER_ALT] || overlays_standing[TAIL_LOWER_LAYER])
var/tail_is_rendered = overlays_standing[TAIL_LOWER_LAYER] || overlays_standing[tail_alt]
var/valid_clip_mask = tail_style?.clip_mask
if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden.
@@ -993,14 +993,15 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
return
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_ALT)
remove_layer(TAIL_UPPER_LAYER_HIGH)
remove_layer(TAIL_UPPER_LAYER_LOW)
remove_layer(TAIL_LOWER_LAYER)
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_UPPER_LAYER)
tail_layer = TAIL_UPPER_LAYER_ALT
if(tail_layer == TAIL_UPPER_LAYER)
tail_layer = tail_alt
var/obj/item/organ/external/chest = organs_by_name[BP_TORSO]
@@ -1046,12 +1047,13 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_UPPER_LAYER)
tail_layer = TAIL_UPPER_LAYER_ALT
if(tail_layer == TAIL_UPPER_LAYER)
tail_layer = tail_alt
var/image/tail_overlay = overlays_standing[tail_layer]
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_ALT)
remove_layer(TAIL_UPPER_LAYER_HIGH)
remove_layer(TAIL_UPPER_LAYER_LOW)
remove_layer(TAIL_LOWER_LAYER)
if(tail_overlay)