diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index 0b6b9ea7af..46a12d0d8c 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -104,3 +104,10 @@ return 0 change_gender_identity(new_gender_identity) return 1 + +/mob/living/carbon/human/verb/switch_tail_layer() + set name = "Switch tail layer" + set category = "IC" + set desc = "Switch tail layer on top." + tail_alt = !tail_alt + update_tail_showing() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 0db94400c5..b2c9a0e221 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -87,11 +87,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() #define L_HAND_LAYER 26 //Left-hand item #define R_HAND_LAYER 27 //Right-hand item #define WING_LAYER 28 //VOREStation edit. Simply move this up a number if things are added. -#define MODIFIER_EFFECTS_LAYER 29 //Effects drawn by modifiers -#define FIRE_LAYER 30 //'Mob on fire' overlay layer -#define WATER_LAYER 31 //'Mob submerged' overlay layer -#define TARGETED_LAYER 32 //'Aimed at' overlay layer -#define TOTAL_LAYERS 32 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list. +#define TAIL_LAYER_ALT 29 //VOREStation edit. Simply move this up a number if things are added. +#define MODIFIER_EFFECTS_LAYER 30 //Effects drawn by modifiers +#define FIRE_LAYER 31 //'Mob on fire' overlay layer +#define WATER_LAYER 32 //'Mob submerged' overlay layer +#define TARGETED_LAYER 33 //'Aimed at' overlay layer +#define TOTAL_LAYERS 33 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list. ////////////////////////////////// /mob/living/carbon/human @@ -839,13 +840,15 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(TAIL_LAYER) + remove_layer(TAIL_LAYER_ALT) // VOREStation Edit - START - Alt Tail Layer + + var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER - // VOREStation Edit - START var/image/vr_tail_image = get_tail_image() if(vr_tail_image) - vr_tail_image.layer = BODY_LAYER+TAIL_LAYER - overlays_standing[TAIL_LAYER] = vr_tail_image - apply_layer(TAIL_LAYER) + vr_tail_image.layer = BODY_LAYER+used_tail_layer + overlays_standing[used_tail_layer] = vr_tail_image + apply_layer(used_tail_layer) return // VOREStation Edit - END @@ -854,7 +857,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //This one is actually not that bad I guess. if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) var/icon/tail_s = get_tail_icon() - overlays_standing[TAIL_LAYER] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+TAIL_LAYER) + overlays_standing[used_tail_layer] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+used_tail_layer) // VOREStation Edit - Alt Tail Layer animate_tail_reset() //TODO: Is this the appropriate place for this, and not on species...? @@ -879,17 +882,19 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return tail_icon /mob/living/carbon/human/proc/set_tail_state(var/t_state) - var/image/tail_overlay = overlays_standing[TAIL_LAYER] + var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // VOREStation Edit - START - Alt Tail Layer + var/image/tail_overlay = overlays_standing[used_tail_layer] remove_layer(TAIL_LAYER) + remove_layer(TAIL_LAYER_ALT) if(tail_overlay) - overlays_standing[TAIL_LAYER] = tail_overlay + overlays_standing[used_tail_layer] = tail_overlay if(species.get_tail_animation(src)) tail_overlay.icon_state = t_state . = tail_overlay - apply_layer(TAIL_LAYER) + apply_layer(used_tail_layer) // VOREStation Edit - END //Not really once, since BYOND can't do that. //Update this if the ability to flick() images or make looping animation start at the first frame is ever added. @@ -899,8 +904,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return var/t_state = "[species.get_tail(src)]_once" - - var/image/tail_overlay = overlays_standing[TAIL_LAYER] + var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // VOREStation Edit - Alt Tail Layer + + var/image/tail_overlay = overlays_standing[used_tail_layer] // VOREStation Edit - Alt Tail Layer if(tail_overlay && tail_overlay.icon_state == t_state) return //let the existing animation finish @@ -908,7 +914,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(tail_overlay) spawn(20) //check that the animation hasn't changed in the meantime - if(overlays_standing[TAIL_LAYER] == tail_overlay && tail_overlay.icon_state == t_state) + if(overlays_standing[used_tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) // VOREStation Edit - Alt Tail Layer animate_tail_stop() /mob/living/carbon/human/proc/animate_tail_start() @@ -1048,4 +1054,4 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() #undef FIRE_LAYER #undef WATER_LAYER #undef TARGETED_LAYER -#undef TOTAL_LAYERS \ No newline at end of file +#undef TOTAL_LAYERS diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 19cd71f3c3..def24d450a 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -19,6 +19,7 @@ var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time. var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon. + var/tail_alt = 0 // Tail layer toggle. var/can_be_drop_prey = 0 var/can_be_drop_pred = 1 //Mobs are pred by default.