diff --git a/code/__defines/update_icons.dm b/code/__defines/update_icons.dm index 711eda080d..ab5b375c84 100644 --- a/code/__defines/update_icons.dm +++ b/code/__defines/update_icons.dm @@ -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) diff --git a/code/game/objects/structures/gargoyle.dm b/code/game/objects/structures/gargoyle.dm index e467837a85..73f3f72f5c 100644 --- a/code/game/objects/structures/gargoyle.dm +++ b/code/game/objects/structures/gargoyle.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index 283e343cc9..9e9d7c5b65 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm index 73a0118a0d..f0f97d9437 100644 --- a/code/modules/mob/living/carbon/human/human_defines_vr.dm +++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm @@ -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 diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 1b8e0f2705..c8a917b52a 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -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() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index a8f0d52a29..3e348d7145 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -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)