diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm index 61080f2fca..ae87b1c624 100644 --- a/code/__defines/mobs_vr.dm +++ b/code/__defines/mobs_vr.dm @@ -7,7 +7,9 @@ #define VIS_AUGMENTED 32 -#define VIS_COUNT 32 +#define VIS_CH_STOMACH 33 + +#define VIS_COUNT 33 //Protean organs #define O_ORCH "orchestrator" diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 6cf2293e1b..a58ace67b6 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1610,6 +1610,7 @@ GLOBAL_REAL_VAR(list/stack_trace_storage) . += new /obj/screen/plane_master{plane = PLANE_CH_HEALTH_VR} //Health bar but transparent at 100 . += new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status . += new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags + . += new /obj/screen/plane_master{plane = PLANE_CH_STOMACH} //Stomachs . += new /obj/screen/plane_master{plane = PLANE_AUGMENTED} //Augmented reality //VOREStation Add End /proc/CallAsync(datum/source, proctype, list/arguments) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 17fb35d8f7..4f51c7292e 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -48,7 +48,7 @@ var/obj/item/weapon/weldingtool/WT = W.get_welder() if(can_weld == FALSE) - to_chat("You can't reform these into their original components.") + to_chat(user, "You can't reform these into their original components.") return if(get_amount() < 4) @@ -97,7 +97,7 @@ name = "sivian overgrowth tile" singular_name = "sivian overgrowth floor tile" desc = "A patch of dark overgrowth like those that decorate the plains of Sif." - + /obj/item/stack/tile/grass/sif/forest name = "sivian overgrowth tile" singular_name = "sivian overgrowth floor tile" diff --git a/code/game/objects/structures/low_wall.dm b/code/game/objects/structures/low_wall.dm index 848444c64d..d65abcbad5 100644 --- a/code/game/objects/structures/low_wall.dm +++ b/code/game/objects/structures/low_wall.dm @@ -133,7 +133,7 @@ if(istype(O, /obj/structure/window)) var/obj/structure/window/W = O if(Adjacent(W) && !W.anchored) - to_chat("You hoist [W] up onto [src].") + to_chat(user, "You hoist [W] up onto [src].") W.forceMove(loc) return if(isrobot(user)) diff --git a/code/modules/client/preference_setup/vore/09_misc.dm b/code/modules/client/preference_setup/vore/09_misc.dm index c50406190a..2cc2cce649 100644 --- a/code/modules/client/preference_setup/vore/09_misc.dm +++ b/code/modules/client/preference_setup/vore/09_misc.dm @@ -13,6 +13,7 @@ S["capture_crystal"] >> pref.capture_crystal S["auto_backup_implant"] >> pref.auto_backup_implant S["borg_petting"] >> pref.borg_petting + S["stomach_vision"] >> pref.stomach_vision /datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S) S["show_in_directory"] << pref.show_in_directory @@ -25,12 +26,16 @@ S["capture_crystal"] << pref.capture_crystal S["auto_backup_implant"] << pref.auto_backup_implant S["borg_petting"] << pref.borg_petting + S["stomach_vision"] << pref.stomach_vision /datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character) if(pref.sensorpref > 5 || pref.sensorpref < 1) pref.sensorpref = 5 character.sensorpref = pref.sensorpref character.capture_crystal = pref.capture_crystal + //Vore Stomach Sprite Preference + character.stomach_vision = pref.stomach_vision + character.recalculate_vis() /datum/category_item/player_setup_item/vore/misc/sanitize_character() pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory)) @@ -42,6 +47,7 @@ pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal)) pref.auto_backup_implant = sanitize_integer(pref.auto_backup_implant, 0, 1, initial(pref.auto_backup_implant)) pref.borg_petting = sanitize_integer(pref.borg_petting, 0, 1, initial(pref.borg_petting)) + pref.stomach_vision = sanitize_integer(pref.stomach_vision, 0, 1, initial(pref.stomach_vision)) /datum/category_item/player_setup_item/vore/misc/content(var/mob/user) . += "
" @@ -55,6 +61,7 @@ . += "Capture Crystal Preference: [pref.capture_crystal ? "Yes" : "No"]
" . += "Spawn With Backup Implant: [pref.auto_backup_implant ? "Yes" : "No"]
" . += "Allow petting as robot: [pref.borg_petting ? "Yes" : "No"]
" + . += "Enable Stomach Sprites: [pref.stomach_vision ? "Yes" : "No"]
" /datum/category_item/player_setup_item/vore/misc/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["toggle_show_in_directory"]) @@ -106,4 +113,7 @@ else if(href_list["toggle_borg_petting"]) pref.borg_petting = pref.borg_petting ? 0 : 1; return TOPIC_REFRESH + else if(href_list["toggle_stomach_vision"]) + pref.stomach_vision = pref.stomach_vision ? 0 : 1; + return TOPIC_REFRESH return ..(); diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm index 05b2e7cc8a..8aac560416 100644 --- a/code/modules/client/preferences_vr.dm +++ b/code/modules/client/preferences_vr.dm @@ -11,6 +11,7 @@ var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals var/auto_backup_implant = FALSE //Whether someone starts with a backup implant or not. var/borg_petting = TRUE //Whether someone can be petted as a borg or not. + var/stomach_vision = TRUE //Whether or not someone can view stomach sprites var/job_talon_high = 0 var/job_talon_med = 0 @@ -170,7 +171,7 @@ /client/verb/toggle_automatic_afk() set name = "Toggle Automatic AFK" - set category = "Preferences" + set category = "Preferences.Game" //CHOMPEdit set desc = "When enabled, causes you to be automatically marked as AFK if you are idle for too long." var/pref_path = /datum/client_preference/auto_afk diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index c4d8277fc8..f7bd43be71 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -5027,7 +5027,7 @@ return 0 if (C.volume < req) - to_chat("There's not enough [C.name] to coat the [src]!") + to_chat(user, "There's not enough [C.name] to coat the [src]!") return 0 var/id = C.id diff --git a/code/modules/food/kitchen/cooking_machines/_mixer.dm b/code/modules/food/kitchen/cooking_machines/_mixer.dm index 9d78be3475..bab8374e1e 100644 --- a/code/modules/food/kitchen/cooking_machines/_mixer.dm +++ b/code/modules/food/kitchen/cooking_machines/_mixer.dm @@ -106,7 +106,7 @@ fundamental differences var/datum/cooking_item/CI = cooking_objs[1] if(!CI.container.check_contents()) - to_chat("There's nothing in it! Add ingredients before turning [src] on!") + to_chat(usr, "There's nothing in it! Add ingredients before turning [src] on!") return if(stat & POWEROFF)//Its turned off @@ -152,4 +152,4 @@ fundamental differences /obj/machinery/appliance/mixer/process() if (!stat) for (var/i in cooking_objs) - do_cooking_tick(i) \ No newline at end of file + do_cooking_tick(i) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c8fb7e1223..66d631e214 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -7,6 +7,18 @@ has_huds = TRUE //We do have HUDs (like health, wanted, status, not inventory slots) + vore_capacity = 3 // CHOMPEdit + vore_capacity_ex = list("stomach" = 3, "taur belly" = 3) //CHOMPEdit + vore_fullness_ex = list("stomach" = 0, "taur belly" = 0) //CHOMPEdit + vore_icon_bellies = list("stomach", "taur belly") //CHOMPEdit + var/struggle_anim_stomach = FALSE + var/struggle_anim_taur = FALSE + /* CHOMPRemove Start, THIS ALL GOES TO MOB! + var/vore_sprite_color = list("stomach" = "#FFFFFF", "taur belly" = "#FFFFFF") + var/vore_sprite_multiply = list("stomach" = TRUE, "taur belly" = TRUE) + var/vore_fullness = 0 + */// CHOMPRemove End + var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. var/obj/item/weapon/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call. var/last_push_time //For human_attackhand.dm, keeps track of the last use of disarm @@ -1808,3 +1820,21 @@ resting = !resting to_chat(src, "You are now [resting ? "resting" : "getting up"].") update_canmove() + +/*CHOMPRemove Start +/mob/living/carbon/human/proc/update_fullness() + var/list/new_fullness = list() + vore_fullness = 0 + for(var/belly_class in vore_icon_bellies) + new_fullness[belly_class] = 0 + for(var/obj/belly/B as anything in vore_organs) + new_fullness[B.belly_sprite_to_affect] += B.GetFullnessFromBelly() + for(var/belly_class in vore_icon_bellies) + new_fullness[belly_class] /= size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey. + new_fullness[belly_class] = round(new_fullness[belly_class], 1) // Because intervals of 0.25 are going to make sprite artists cry. + vore_fullness_ex[belly_class] = min(vore_capacity_ex[belly_class], new_fullness[belly_class]) + vore_fullness += new_fullness[belly_class] + vore_fullness = min(vore_capacity, vore_fullness) + update_vore_belly_sprite() + update_vore_tail_sprite() +*///CHOMPRemove End diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index ee62384980..3994679a01 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -203,6 +203,15 @@ compiled_vis |= VIS_CH_VANTAG //VOREStation Add End + //Vore Stomach addition start. This goes here. + if(stomach_vision && !(VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,TRUE) + compiled_vis += VIS_CH_STOMACH + else if(!stomach_vision && (VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,FALSE) + compiled_vis -= VIS_CH_STOMACH + //Vore Stomach addition end + if(!compiled_vis.len && !vis_enabled.len) return //Nothin' doin'. diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 5f05115aa3..300b5ef863 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -252,6 +252,8 @@ var/rarity_value = 1 // Relative rarity/collector value for this species. var/economic_modifier = 2 // How much money this species makes + var/vore_belly_default_variant = "H" + // Determines the organs that the species spawns with and var/list/has_organ = list( // which required-organ checks are conducted. O_HEART = /obj/item/organ/internal/heart, diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index a8407e7b9f..a9a50ffd56 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1447,6 +1447,76 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() if((. = ..())) update_wing_showing() +/mob/living/carbon/human/proc/update_vore_belly_sprite() + if(QDESTROYING(src)) + return + + remove_layer(VORE_BELLY_LAYER) + + var/image/vore_belly_image = get_vore_belly_image() + if(vore_belly_image) + vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER + overlays_standing[VORE_BELLY_LAYER] = vore_belly_image + vore_belly_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. + vore_belly_image.appearance_flags = appearance_flags + + apply_layer(VORE_BELLY_LAYER) + +/mob/living/carbon/human/proc/get_vore_belly_image() + if(!(wear_suit && wear_suit.flags_inv & HIDETAIL)) + var/vs_fullness = vore_fullness_ex["stomach"] + var/icon/vorebelly_s = new/icon(icon = 'modular_chomp/icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]") //CHOMPEdit + vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(vorebelly_s) + working.overlays += em_block_image_generic(working) + return working + return null + +/mob/living/carbon/human/proc/vore_belly_animation() + if(!struggle_anim_stomach) + struggle_anim_stomach = TRUE + update_vore_belly_sprite() + spawn(12) + struggle_anim_stomach = FALSE + update_vore_belly_sprite() + +/mob/living/carbon/human/proc/update_vore_tail_sprite() + if(QDESTROYING(src)) + return + + remove_layer(VORE_TAIL_LAYER) + + var/image/vore_tail_image = get_vore_tail_image() + if(vore_tail_image) + vore_tail_image.layer = BODY_LAYER+VORE_TAIL_LAYER + overlays_standing[VORE_TAIL_LAYER] = vore_tail_image + vore_tail_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. + vore_tail_image.appearance_flags = appearance_flags + + apply_layer(VORE_TAIL_LAYER) + +/mob/living/carbon/human/proc/get_vore_tail_image() + if(tail_style && istaurtail(tail_style) && tail_style:vore_tail_sprite_variant) + var/vs_fullness = vore_fullness_ex["taur belly"] + var/loaf_alt = lying && tail_style:belly_variant_when_loaf + var/fullness_icons = min(tail_style.fullness_icons, vs_fullness) + var/icon/vorebelly_s = new/icon(icon = tail_style.bellies_icon_path, icon_state = "Taur[tail_style:vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]") + vorebelly_s.Blend(vore_sprite_color["taur belly"], vore_sprite_multiply["taur belly"] ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(vorebelly_s) + working.pixel_x = -16 + if(tail_style.em_block) + working.overlays += em_block_image_generic(working) + return working + return null + +/mob/living/carbon/human/proc/vore_tail_animation() + if(tail_style.struggle_anim && !struggle_anim_taur) + struggle_anim_taur = TRUE + update_vore_tail_sprite() + spawn(12) + struggle_anim_taur = FALSE + update_vore_tail_sprite() + //Human Overlays Indexes///////// /* CHOMPEdit - why are these undefined?? # undef MUTATIONS_LAYER diff --git a/code/modules/mob/mob_defines_vr.dm b/code/modules/mob/mob_defines_vr.dm index f3a8678587..ec8add1440 100644 --- a/code/modules/mob/mob_defines_vr.dm +++ b/code/modules/mob/mob_defines_vr.dm @@ -1,5 +1,6 @@ /mob var/vantag_hud = 0 // Do I have the HUD enabled? + var/stomach_vision = 1 // By default, you will see stomachs. var/mob/living/simple_mob/temporary_form // For holding onto a temporary form //CHOMPEdit - should be mob/living/simple_mob, not /mob var/disconnect_time = null //Time of client loss, set by Logout(), for timekeeping diff --git a/code/modules/mob/mob_helpers_vr.dm b/code/modules/mob/mob_helpers_vr.dm index 663cfc7f4a..e77c969915 100644 --- a/code/modules/mob/mob_helpers_vr.dm +++ b/code/modules/mob/mob_helpers_vr.dm @@ -1,5 +1,13 @@ /mob/recalculate_vis() . = ..() + + if(stomach_vision && !(VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,TRUE) + vis_enabled += VIS_CH_STOMACH + else if(!stomach_vision && (VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,FALSE) + vis_enabled -= VIS_CH_STOMACH + if(!plane_holder || !vis_enabled) return @@ -12,3 +20,35 @@ plane_holder.set_vis(VIS_CH_VANTAG,FALSE) vis_enabled -= VIS_CH_VANTAG return + + +/mob/verb/toggle_stomach_vision() + set name = "Toggle Stomach Sprites" + set category = "Preferences.Vore" //CHOMPEdit + set desc = "Toggle the ability to see stomachs or not" + + var/toggle + toggle = tgui_alert(src, "Would you like to see visible stomachs?", "Visible Tummy?", list("Yes", "No")) + if(!toggle) + return + if(toggle =="Yes") + stomach_vision = 1 //Simple! Easy! + if(!(VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,TRUE) + vis_enabled += VIS_CH_STOMACH + to_chat(src, "You can now see stomachs!") + else + stomach_vision = 0 + if(VIS_CH_STOMACH in vis_enabled) + plane_holder.set_vis(VIS_CH_STOMACH,FALSE) + vis_enabled -= VIS_CH_STOMACH + to_chat(src, "You will no longer see stomachs!") + +/* //Leaving this in as an example of 'how to properly enable a plane to hide/show itself' for future PRs. +if(stomach_vision && !(VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,TRUE) + vis_enabled += VIS_CH_STOMACH +else if(!stomach_vision && (VIS_CH_STOMACH in vis_enabled)) + plane_holder.set_vis(VIS_CH_STOMACH,FALSE) + vis_enabled -= VIS_CH_STOMACH +*/ diff --git a/code/modules/mob/mob_planes_vr.dm b/code/modules/mob/mob_planes_vr.dm index 7fe4fd4c60..efe52cb25b 100644 --- a/code/modules/mob/mob_planes_vr.dm +++ b/code/modules/mob/mob_planes_vr.dm @@ -4,6 +4,7 @@ plane_masters[VIS_CH_HEALTH_VR] = new /obj/screen/plane_master{plane = PLANE_CH_HEALTH_VR} //Health bar but transparent at 100 plane_masters[VIS_CH_BACKUP] = new /obj/screen/plane_master{plane = PLANE_CH_BACKUP} //Backup implant status plane_masters[VIS_CH_VANTAG] = new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags + plane_masters[VIS_CH_STOMACH] = new /obj/screen/plane_master{plane = PLANE_CH_STOMACH} //Stomach plane_masters[VIS_AUGMENTED] = new /obj/screen/plane_master/augmented(M = my_mob) //Augmented reality ..() diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm index 671300945e..8a50962800 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -1,3 +1,10 @@ +/datum/sprite_accessory/tail + var/vore_tail_sprite_variant = "" + var/belly_variant_when_loaf = FALSE + var/fullness_icons = 0 + var/struggle_anim = FALSE + var/bellies_icon_path = 'modular_chomp/icons/mob/vore/Taur_Bellies.dmi' //CHOMPEdit + /datum/riding/taur keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack! nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs. 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 ef68c35a79..cf10693587 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -60,6 +60,9 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 4 + vore_tail_sprite_variant = "N" + fullness_icons = 3 + struggle_anim = TRUE /datum/sprite_accessory/tail/taur/wolf/fatwolf name = "Fat Wolf (Taur)" @@ -81,22 +84,22 @@ /datum/sprite_accessory/tail/taur/wolf/fatwolf_2c name = "Fat Wolf 3-color (Taur)" - icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit + icon = 'icons/mob/vore/taurs_ch.dmi' //Ported from Chomp icon_state = "fatwolf_s" extra_overlay = "fatwolf_markings" - extra_overlay2 = "fatwolf_markings_2" //CHOMPEdit + extra_overlay2 = "fatwolf_markings_2" //Ported from Chomp //icon_sprite_tag = "fatwolf2c" loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag name = "Wolf 3-color (Taur, Fat vwag)" - icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit + icon = 'icons/mob/vore/taurs_ch.dmi' //Ported from Chomp icon_state = "wolf_s" extra_overlay = "wolf_markings" extra_overlay2 = "wolf_markings_2" ani_state = "fatwolf_s" extra_overlay_w = "fatwolf_markings" - extra_overlay2_w = "fatwolf_markings_2" //CHOMPEdit + extra_overlay2_w = "fatwolf_markings_2" //Ported from Chomp /datum/sprite_accessory/tail/taur/wolf/synthwolf name = "SynthWolf dual-color (Taur)" @@ -131,6 +134,10 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 3 + vore_tail_sprite_variant = "Skunk" //Sadly there appears to be no sprites... For now! + belly_variant_when_loaf = TRUE + fullness_icons = 1 + // struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/naga name = "Naga (Taur)" @@ -165,34 +172,45 @@ msg_prey_stepunder = "You jump over %prey's thick tail." msg_owner_stepunder = "%owner bounds over your tail." -/datum/sprite_accessory/tail/taur/naga/naga_2c +/*CHOMPRemove Start +/datum/sprite_accessory/tail/taur/naga/vore_compatable + name = "Naga (Taur) (Vore Compatable)" + vore_tail_sprite_variant = "Naga" + fullness_icons = 1 + struggle_anim = TRUE +*///CHOMPRemove End + +/datum/sprite_accessory/tail/taur/naga/naga_2c //CHOMPEdit name = "Naga dual-color (Taur)" icon_state = "naga_s" extra_overlay = "naga_markings" //icon_sprite_tag = "naga2c" + vore_tail_sprite_variant = "Naga" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove -/datum/sprite_accessory/tail/taur/naga/alt_2c +/datum/sprite_accessory/tail/taur/naga/alt_2c //CHOMPEdit name = "Naga alt style dual-color (Taur)" suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' icon_state = "altnaga_s" extra_overlay = "altnaga_markings" //icon_sprite_tag = "altnaga2c" -/datum/sprite_accessory/tail/taur/naga/alt_3c +/datum/sprite_accessory/tail/taur/naga/alt_3c //CHOMPEdit name = "Naga alt style tri-color (Taur)" suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' icon_state = "altnaga_s" extra_overlay = "altnaga_markings" extra_overlay2 = "altnaga_stripes" -/datum/sprite_accessory/tail/taur/naga/alt_3c_rattler +/datum/sprite_accessory/tail/taur/naga/alt_3c_rattler //CHOMPEdit name = "Naga alt style tri-color, rattler (Taur)" suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' icon_state = "altnaga_s" extra_overlay = "altnaga_markings" extra_overlay2 = "altnaga_rattler" -/datum/sprite_accessory/tail/taur/naga/alt_3c_tailmaw +/datum/sprite_accessory/tail/taur/naga/alt_3c_tailmaw //CHOMPEdit name = "Naga alt style tri-color, tailmaw (Taur)" suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' icon_state = "altnagatailmaw_s" @@ -208,6 +226,9 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 4 + vore_tail_sprite_variant = "Horse" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" @@ -242,6 +263,9 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 3 + vore_tail_sprite_variant = "Cow" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" @@ -267,6 +291,10 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 7 + vore_tail_sprite_variant = "Deer" + belly_variant_when_loaf = TRUE + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" @@ -297,12 +325,15 @@ /datum/sprite_accessory/tail/taur/lizard name = "Lizard (Taur)" icon_state = "lizard_s" -// suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi' ///Chomp edit +// suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi' //Ported from Chomp suit_sprites = 'icons/mob/taursuits_lizard_ch.dmi' icon_sprite_tag = "lizard" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 5 + vore_tail_sprite_variant = "Lizard" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/lizard/fatlizard name = "Fat Lizard (Taur)" @@ -349,6 +380,9 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 3 + vore_tail_sprite_variant = "SynthLiz" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/lizard/fatsynthlizard name = "Fat SynthLizard dual-color (Taur)" @@ -424,6 +458,10 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 5 + vore_tail_sprite_variant = "Feline" + belly_variant_when_loaf = TRUE + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/fatfeline name = "Fat Feline (Taur)" @@ -452,10 +490,10 @@ /datum/sprite_accessory/tail/taur/feline/fatfeline_2c name = "Fat Feline 3-color (Taur)" - icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit + icon = 'icons/mob/vore/taurs_ch.dmi' //Ported from Chomp icon_state = "fatfeline_s" extra_overlay = "fatfeline_markings" - extra_overlay2 = "fatfeline_markings_2" //CHOMPEdit + extra_overlay2 = "fatfeline_markings_2" //Ported from Chomp //icon_sprite_tag = "fatfeline2c" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' @@ -463,13 +501,13 @@ /datum/sprite_accessory/tail/taur/feline/feline_2c_wag name = "Feline 3-color (Taur, Fat vwag)" - icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit + icon = 'icons/mob/vore/taurs_ch.dmi' //Ported from Chomp icon_state = "feline_s" extra_overlay = "feline_markings" extra_overlay2 = "feline_markings_2" ani_state = "fatfeline_s" extra_overlay_w = "fatfeline_markings" - extra_overlay2_w = "fatfeline_markings_2" //CHOMPEdit + extra_overlay2_w = "fatfeline_markings_2" //Ported from Chomp loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/synthfeline @@ -529,6 +567,9 @@ icon_state = "slug_s" suit_sprites = 'icons/mob/taursuits_slug_vr.dmi' icon_sprite_tag = "slug" + vore_tail_sprite_variant = "Slug" + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove msg_owner_help_walk = "You carefully slither around %prey." msg_prey_help_walk = "%owner's huge tail slithers past beside you!" @@ -599,6 +640,10 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 6 + vore_tail_sprite_variant = "Drake" + belly_variant_when_loaf = TRUE + fullness_icons = 3 //CHOMPEdit + //struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/drake/fat name = "Fat Drake (Taur)" @@ -626,6 +671,10 @@ can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' loaf_offset = 5 + vore_tail_sprite_variant = "Otie" + belly_variant_when_loaf = TRUE + fullness_icons = 1 + //struggle_anim = TRUE //CHOMPRemove /datum/sprite_accessory/tail/taur/alraune/alraune_2c name = "Alraune (dual color)" @@ -884,7 +933,7 @@ name = "Fat Sect Drone (Taur)" icon_state = "fat_sect_drone" extra_overlay = "fat_sect_drone_markings" - icon_sprite_tag = "sect_drone" //CHOMPEdit addition + icon_sprite_tag = "sect_drone" //Ported from Chomp /datum/sprite_accessory/tail/taur/sect_drone/drone_wag name = "Sect Drone (Taur, Fat vwag)" @@ -892,7 +941,7 @@ extra_overlay = "sect_drone_markings" ani_state = "fat_sect_drone" extra_overlay_w = "fat_sect_drone_markings" - icon_sprite_tag = "sect_drone" //CHOMPEdit addition + icon_sprite_tag = "sect_drone" //Ported from Chomp /datum/sprite_accessory/tail/taur/giantspider_colorable//these are honestly better fit for vass icontypes whoops name = "Giant Spider dual-color (Taur)" diff --git a/code/modules/recycling/recycling.dm b/code/modules/recycling/recycling.dm index 63a5fe444a..2c6d17cbc3 100644 --- a/code/modules/recycling/recycling.dm +++ b/code/modules/recycling/recycling.dm @@ -29,7 +29,7 @@ return if(working) - to_chat("\The [src] is busy! Wait until it's idle.") + to_chat(user, "\The [src] is busy! Wait until it's idle.") return if(default_deconstruction_screwdriver(user, O)) diff --git a/code/modules/vore/eating/belly_obj_ch.dm b/code/modules/vore/eating/belly_obj_ch.dm index 0aa26692da..28929294e1 100644 --- a/code/modules/vore/eating/belly_obj_ch.dm +++ b/code/modules/vore/eating/belly_obj_ch.dm @@ -99,33 +99,9 @@ "Tricordrazine" ) - //CHOMP - vore sprites - var/vore_sprite_flags = DM_FLAG_VORESPRITE_BELLY - var/tmp/static/list/vore_sprite_flag_list= list( - "Normal belly sprite" = DM_FLAG_VORESPRITE_BELLY, - //"Tail adjustment" = DM_FLAG_VORESPRITE_TAIL, - //"Marking addition" = DM_FLAG_VORESPRITE_MARKING, - "Undergarment addition" = DM_FLAG_VORESPRITE_ARTICLE, - ) - - var/affects_vore_sprites = FALSE - var/count_absorbed_prey_for_sprite = TRUE - var/absorbed_multiplier = 1 - var/count_liquid_for_sprite = FALSE - var/liquid_multiplier = 1 - var/count_items_for_sprite = FALSE - var/item_multiplier = 1 - var/health_impacts_size = TRUE - var/resist_triggers_animation = TRUE - var/size_factor_for_sprite = 1 - var/belly_sprite_to_affect = "stomach" - var/undergarment_chosen = "Underwear, bottom" var/undergarment_if_none var/undergarment_color = COLOR_GRAY - var/datum/sprite_accessory/tail/tail_to_change_to = FALSE var/tail_colouration = FALSE - var/tail_extra_overlay = FALSE - var/tail_extra_overlay2 = FALSE //var/marking_to_add = NULL //var/marking_color = NULL var/special_entrance_sound // Mob specific custom entry sound set by mob's init_vore when applicable @@ -143,44 +119,6 @@ var/list/belly_surrounding = list() // A list of living mobs surrounded by this belly, including inside containers, food, on mobs, etc. Exclusing inside other bellies. -/obj/belly/proc/GetFullnessFromBelly() - if(!affects_vore_sprites) - return 0 - var/belly_fullness = 0 - for(var/mob/living/M in src) - if(count_absorbed_prey_for_sprite || !M.absorbed) - var/fullness_to_add = M.size_multiplier - fullness_to_add *= M.mob_size / 20 - if(M.absorbed) - fullness_to_add *= absorbed_multiplier - if(health_impacts_size) - if(ishuman(M)) - fullness_to_add *= (M.health + 100) / (M.getMaxHealth() + 100) - else - fullness_to_add *= M.health / M.getMaxHealth() - if(fullness_to_add > 0) - belly_fullness += fullness_to_add - if(count_liquid_for_sprite) - belly_fullness += (reagents.total_volume / 100) * liquid_multiplier - if(count_items_for_sprite) - for(var/obj/item/I in src) - var/fullness_to_add = 0 - if(I.w_class == ITEMSIZE_TINY) - fullness_to_add = ITEMSIZE_COST_TINY - else if(I.w_class == ITEMSIZE_SMALL) - fullness_to_add = ITEMSIZE_COST_SMALL - else if(I.w_class == ITEMSIZE_NORMAL) - fullness_to_add = ITEMSIZE_COST_NORMAL - else if(I.w_class == ITEMSIZE_LARGE) - fullness_to_add = ITEMSIZE_COST_LARGE - else if(I.w_class == ITEMSIZE_HUGE) - fullness_to_add = ITEMSIZE_COST_HUGE - else - fullness_to_add = I.w_class - fullness_to_add /= 32 - belly_fullness += fullness_to_add * item_multiplier - belly_fullness *= size_factor_for_sprite - return belly_fullness ///////////////////// NUTRITION REAGENT PRODUCTION ///////////////// diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 4deb58697f..089a567a37 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -8,6 +8,12 @@ // // Parent type of all the various "belly" varieties. // + +// # define DM_FLAG_VORESPRITE_TAIL 0x2 //CHOMPRemove +// # define DM_FLAG_VORESPRITE_MARKING 0x4 //CHOMPRemove +// # define DM_FLAG_VORESPRITE_ARTICLE 0x8 //CHOMPRemove + + /obj/belly name = "belly" // Name of this location desc = "It's a belly! You're in it!" // Flavor text description of inside sight/sound/smells/feels. @@ -67,6 +73,30 @@ var/belly_overall_mult = 1 //Multiplier applied ontop of any other specific multipliers var/private_struggle = FALSE // If struggles are made public or not //CHOMPAdd + + var/vore_sprite_flags = DM_FLAG_VORESPRITE_BELLY //CHOMPEdit + var/tmp/static/list/vore_sprite_flag_list= list( + "Normal Belly Sprite" = DM_FLAG_VORESPRITE_BELLY, //CHOMPEdit + //"Tail adjustment" = DM_FLAG_VORESPRITE_TAIL, + //"Marking addition" = DM_FLAG_VORESPRITE_MARKING + "Undergarment addition" = DM_FLAG_VORESPRITE_ARTICLE, //CHOMPAdd + ) + var/affects_vore_sprites = FALSE + var/count_absorbed_prey_for_sprite = TRUE + var/absorbed_multiplier = 1 + var/count_liquid_for_sprite = FALSE + var/liquid_multiplier = 1 + var/count_items_for_sprite = FALSE + var/item_multiplier = 1 + var/health_impacts_size = TRUE + var/resist_triggers_animation = TRUE + var/size_factor_for_sprite = 1 + var/belly_sprite_to_affect = "stomach" + var/datum/sprite_accessory/tail/tail_to_change_to = FALSE + var/tail_extra_overlay = FALSE + var/tail_extra_overlay2 = FALSE + var/undergarment_chosen = "Underwear, bottom" + // Generally just used by AI var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location var/autotransferwait = 10 // Time between trying to transfer. @@ -440,18 +470,9 @@ "vorespawn_blacklist", "vorespawn_whitelist", "vorespawn_absorbed", - "vore_sprite_flags", - "affects_vore_sprites", - "count_absorbed_prey_for_sprite", "absorbed_multiplier", "count_liquid_for_sprite", "liquid_multiplier", - "count_items_for_sprite", - "item_multiplier", - "health_impacts_size", - "resist_triggers_animation", - "size_factor_for_sprite", - "belly_sprite_to_affect", "undergarment_chosen", "undergarment_if_none", "undergarment_color", @@ -495,6 +516,15 @@ "belly_item_mult", "belly_overall_mult", "drainmode", + "vore_sprite_flags", + "affects_vore_sprites", + "count_absorbed_prey_for_sprite", + "resist_triggers_animation", + "size_factor_for_sprite", + "belly_sprite_to_affect", + "health_impacts_size", + "count_items_for_sprite", + "item_multiplier" ) if (save_digest_mode == 1) @@ -2639,18 +2669,9 @@ dupe.vorespawn_blacklist = vorespawn_blacklist dupe.vorespawn_whitelist = vorespawn_whitelist dupe.vorespawn_absorbed = vorespawn_absorbed - dupe.vore_sprite_flags = vore_sprite_flags - dupe.affects_vore_sprites = affects_vore_sprites - dupe.count_absorbed_prey_for_sprite = count_absorbed_prey_for_sprite dupe.absorbed_multiplier = absorbed_multiplier dupe.count_liquid_for_sprite = count_liquid_for_sprite dupe.liquid_multiplier = liquid_multiplier - dupe.count_items_for_sprite = count_items_for_sprite - dupe.item_multiplier = item_multiplier - dupe.health_impacts_size = health_impacts_size - dupe.resist_triggers_animation = resist_triggers_animation - dupe.size_factor_for_sprite = size_factor_for_sprite - dupe.belly_sprite_to_affect = belly_sprite_to_affect dupe.undergarment_chosen = undergarment_chosen dupe.undergarment_if_none = undergarment_if_none dupe.undergarment_color = undergarment_color @@ -2691,6 +2712,15 @@ dupe.belly_mob_mult = belly_mob_mult dupe.belly_item_mult = belly_item_mult dupe.belly_overall_mult = belly_overall_mult + dupe.vore_sprite_flags = vore_sprite_flags + dupe.affects_vore_sprites = affects_vore_sprites + dupe.count_absorbed_prey_for_sprite = count_absorbed_prey_for_sprite + dupe.resist_triggers_animation = resist_triggers_animation + dupe.size_factor_for_sprite = size_factor_for_sprite + dupe.belly_sprite_to_affect = belly_sprite_to_affect + dupe.health_impacts_size = health_impacts_size + dupe.count_items_for_sprite = count_items_for_sprite + dupe.item_multiplier = item_multiplier //// Object-holding variables //struggle_messages_outside - strings @@ -2926,3 +2956,44 @@ /obj/belly/container_resist(mob/M) return relay_resist(M) + +/obj/belly/proc/GetFullnessFromBelly() + if(!affects_vore_sprites) + return 0 + var/belly_fullness = 0 + for(var/mob/living/M in src) + if(count_absorbed_prey_for_sprite || !M.absorbed) + var/fullness_to_add = M.size_multiplier + fullness_to_add *= M.mob_size / 20 + if(M.absorbed) + fullness_to_add *= absorbed_multiplier + if(health_impacts_size) + //CHOMPEdit Start + if(ishuman(M)) + fullness_to_add *= (M.health + 100) / (M.getMaxHealth() + 100) + else + fullness_to_add *= M.health / M.getMaxHealth() + if(fullness_to_add > 0) + belly_fullness += fullness_to_add + //CHOMPEdit End + if(count_liquid_for_sprite) + belly_fullness += (reagents.total_volume / 100) * liquid_multiplier + if(count_items_for_sprite) + for(var/obj/item/I in src) + var/fullness_to_add = 0 + if(I.w_class == ITEMSIZE_TINY) + fullness_to_add = ITEMSIZE_COST_TINY + else if(I.w_class == ITEMSIZE_SMALL) + fullness_to_add = ITEMSIZE_COST_SMALL + else if(I.w_class == ITEMSIZE_NORMAL) + fullness_to_add = ITEMSIZE_COST_NORMAL + else if(I.w_class == ITEMSIZE_LARGE) + fullness_to_add = ITEMSIZE_COST_LARGE + else if(I.w_class == ITEMSIZE_HUGE) + fullness_to_add = ITEMSIZE_COST_HUGE + else + fullness_to_add = I.w_class //CHOMPEdit + fullness_to_add /= 32 + belly_fullness += fullness_to_add * item_multiplier + belly_fullness *= size_factor_for_sprite + return belly_fullness diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index e0c8361d95..a859f05780 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -88,9 +88,10 @@ GLOBAL_LIST_INIT(digest_modes, list()) var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02 var/difference = B.owner.size_multiplier / L.size_multiplier - consider_healthbar(L, old_health, B.owner) if(B.health_impacts_size) //CHOMPEdit - Health probably changed so... B.owner.update_fullness() //CHOMPEdit - This is run whenever a belly's contents are changed. + + consider_healthbar(L, old_health, B.owner) /*if(isrobot(B.owner)) //CHOMPEdit: Borgos can now use nutrition too if(B.reagent_mode_flags & DM_FLAG_REAGENTSDIGEST && B.reagents.total_volume < B.reagents.maximum_volume) //digestion producing reagents var/mob/living/silicon/robot/R = B.owner diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 8234ec8fa0..120e40c017 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -274,6 +274,7 @@ P.nutrition_messages = src.nutrition_messages P.weight_message_visible = src.weight_message_visible P.weight_messages = src.weight_messages + P.vore_sprite_color = src.vore_sprite_color // CHOMPEdit P.allow_mind_transfer = src.allow_mind_transfer //CHOMP stuff Start @@ -286,7 +287,6 @@ P.apply_reagents = src.apply_reagents P.autotransferable = src.autotransferable P.strip_pref = src.strip_pref - P.vore_sprite_color = src.vore_sprite_color P.vore_sprite_multiply = src.vore_sprite_multiply P.no_latejoin_vore_warning = src.no_latejoin_vore_warning P.no_latejoin_prey_warning = src.no_latejoin_prey_warning @@ -348,6 +348,7 @@ nutrition_messages = P.nutrition_messages weight_message_visible = P.weight_message_visible weight_messages = P.weight_messages + vore_sprite_color = P.vore_sprite_color //CHOMPEdit allow_mind_transfer = P.allow_mind_transfer //CHOMP stuff @@ -360,7 +361,6 @@ apply_reagents = P.apply_reagents autotransferable = P.autotransferable strip_pref = P.strip_pref - vore_sprite_color = P.vore_sprite_color vore_sprite_multiply = P.vore_sprite_multiply no_latejoin_vore_warning = P.no_latejoin_vore_warning no_latejoin_prey_warning = P.no_latejoin_prey_warning @@ -1294,7 +1294,7 @@ dispvoreprefs += "Late join prey auto accept: [no_latejoin_prey_warning ? "Enabled" : "Disabled"]
" dispvoreprefs += "Global Vore Privacy is: [eating_privacy_global ? "Subtle" : "Loud"]
" dispvoreprefs += "Current active belly: [vore_selected ? vore_selected.name : "None"]
" - dispvoreprefs += "Current active belly: [belly_rub_target ? belly_rub_target : vore_selected.name]
" + dispvoreprefs += "Current active belly: [belly_rub_target ? belly_rub_target : (vore_selected ? vore_selected.name : "None")]
" //CHOMPEdit End user << browse("Vore prefs: [src]
[dispvoreprefs]
", "window=[name]mvp;size=300x400;can_resize=1;can_minimize=0") onclose(user, "[name]") diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index ecada79f55..1834e9d28d 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -67,6 +67,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/show_vore_fx = TRUE var/step_mechanics_pref = FALSE var/pickup_pref = TRUE + var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") var/allow_mind_transfer = FALSE //CHOMP stuff @@ -80,7 +81,6 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/autotransferable = TRUE var/strip_pref = FALSE var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE) - var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") var/no_latejoin_vore_warning = FALSE // Only load, when... no_latejoin_vore_warning_persists var/no_latejoin_prey_warning = FALSE // Only load, when... no_latejoin_vore_warning_persists var/no_latejoin_vore_warning_time = 15 // Only load, when... no_latejoin_vore_warning_persists @@ -220,6 +220,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE weight_message_visible = json_from_file["weight_message_visible"] weight_messages = json_from_file["weight_messages"] eating_privacy_global = json_from_file["eating_privacy_global"] + vore_sprite_color = json_from_file["vore_sprite_color"] allow_mind_transfer = json_from_file["allow_mind_transfer"] //CHOMP stuff Start @@ -231,7 +232,6 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE give_reagents = json_from_file["give_reagents"] apply_reagents = json_from_file["apply_reagents"] autotransferable = json_from_file["autotransferable"] - vore_sprite_color = json_from_file["vore_sprite_color"] vore_sprite_multiply = json_from_file["vore_sprite_multiply"] strip_pref = json_from_file["strip_pref"] @@ -331,6 +331,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE else if(weight_messages.len < 10) while(weight_messages.len < 10) weight_messages.Add("") + if(isnull(vore_sprite_color)) + vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") if(isnull(allow_mind_transfer)) allow_mind_transfer = FALSE @@ -351,8 +353,6 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE noisy_full = FALSE if(isnull(autotransferable)) autotransferable = TRUE - if(isnull(vore_sprite_color)) - vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") if(isnull(vore_sprite_multiply)) vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE) if(isnull(strip_pref)) @@ -423,7 +423,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "weight_message_visible" = weight_message_visible, "weight_messages" = weight_messages, "eating_privacy_global" = eating_privacy_global, - "vore_sprite_color" = vore_sprite_color, //CHOMPEdit + "vore_sprite_color" = vore_sprite_color, "vore_sprite_multiply" = vore_sprite_multiply, //CHOMPEdit "strip_pref" = strip_pref, //CHOMPEdit "no_latejoin_vore_warning" = no_latejoin_vore_warning, //CHOMPEdit diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index f693d5213d..9e6ae0dcae 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -255,6 +255,23 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "belly_item_mult" = selected.belly_item_mult, "belly_overall_mult" = selected.belly_overall_mult, "drainmode" = selected.drainmode, + "affects_voresprite" = selected.affects_vore_sprites, + "absorbed_voresprite" = selected.count_absorbed_prey_for_sprite, + "absorbed_multiplier" = selected.absorbed_multiplier, + "liquid_voresprite" = selected.count_liquid_for_sprite, + "liquid_multiplier" = selected.liquid_multiplier, + "item_voresprite" = selected.count_items_for_sprite, + "item_multiplier" = selected.item_multiplier, + "health_voresprite" = selected.health_impacts_size, + "resist_animation" = selected.resist_triggers_animation, + "voresprite_size_factor" = selected.size_factor_for_sprite, + "belly_sprite_to_affect" = selected.belly_sprite_to_affect, + "belly_sprite_option_shown" = LAZYLEN(host.vore_icon_bellies) >= 1 ? TRUE : FALSE, //CHOMPEdit + "tail_option_shown" = istype(host, /mob/living/carbon/human), + "tail_to_change_to" = selected.tail_to_change_to, + "tail_colouration" = selected.tail_colouration, + "tail_extra_overlay" = selected.tail_extra_overlay, + "tail_extra_overlay2" = selected.tail_extra_overlay2, //CHOMP add: vore sprite options and additional stuff "belly_fullscreen_color" = selected.belly_fullscreen_color, //"belly_fullscreen_color_secondary" = selected.belly_fullscreen_color_secondary, // Chomp REMOVE - use our solution, not upstream's @@ -285,31 +302,14 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "vorespawn_whitelist" = selected.vorespawn_whitelist, "vorespawn_absorbed" = (global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_YES) + global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_PREY)), "sound_volume" = selected.sound_volume, - "affects_voresprite" = selected.affects_vore_sprites, - "absorbed_voresprite" = selected.count_absorbed_prey_for_sprite, - "absorbed_multiplier" = selected.absorbed_multiplier, - "liquid_voresprite" = selected.count_liquid_for_sprite, - "liquid_multiplier" = selected.liquid_multiplier, - "item_voresprite" = selected.count_items_for_sprite, - "item_multiplier" = selected.item_multiplier, - "health_voresprite" = selected.health_impacts_size, - "resist_animation" = selected.resist_triggers_animation, - "voresprite_size_factor" = selected.size_factor_for_sprite, - "belly_sprite_to_affect" = selected.belly_sprite_to_affect, "undergarment_chosen" = selected.undergarment_chosen, "undergarment_if_none" = selected.undergarment_if_none || "None", "undergarment_color" = selected.undergarment_color, - "belly_sprite_option_shown" = LAZYLEN(host.vore_icon_bellies) >= 1 ? TRUE : FALSE, - "tail_option_shown" = istype(host, /mob/living/carbon/human), - "tail_to_change_to" = selected.tail_to_change_to, - "tail_colouration" = selected.tail_colouration, - "tail_extra_overlay" = selected.tail_extra_overlay, - "tail_extra_overlay2" = selected.tail_extra_overlay2, "noise_freq" = selected.noise_freq, "item_digest_logs" = selected.item_digest_logs, + "private_struggle" = selected.private_struggle, //"marking_to_add" = selected.marking_to_add //CHOMPEdit end - "private_struggle" = selected.private_struggle, ) var/list/addons = list() @@ -318,13 +318,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", addons.Add(flag_name) selected_list["addons"] = addons - //CHOMPEdit voresprite flags var/list/vs_flags = list() for(var/flag_name in selected.vore_sprite_flag_list) if(selected.vore_sprite_flags & selected.vore_sprite_flag_list[flag_name]) vs_flags.Add(flag_name) selected_list["vore_sprite_flags"] = vs_flags - //CHOMPEdit END + selected_list["egg_type"] = selected.egg_type selected_list["egg_name"] = selected.egg_name //CHOMPAdd @@ -3880,7 +3879,8 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.vorespawn_absorbed &= ~(VS_FLAG_ABSORB_PREY) unsaved_changes = TRUE return TRUE - if("b_belly_sprite_to_affect") //CHOMP Addition + //CHOMPEdit Start + if("b_belly_sprite_to_affect") var/belly_choice = tgui_input_list(user, "Which belly sprite do you want your [lowertext(host.vore_selected.name)] to affect?","Select Region", host.vore_icon_bellies) //ChompEDIT - user, not usr if(!belly_choice) //They cancelled, no changes return FALSE @@ -3888,6 +3888,44 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.belly_sprite_to_affect = belly_choice host.update_fullness() . = TRUE + if("b_affects_vore_sprites") + host.vore_selected.affects_vore_sprites = !host.vore_selected.affects_vore_sprites + host.update_fullness() + . = TRUE + if("b_count_absorbed_prey_for_sprites") + host.vore_selected.count_absorbed_prey_for_sprite = !host.vore_selected.count_absorbed_prey_for_sprite + host.update_fullness() + . = TRUE + if("b_absorbed_multiplier") + var/absorbed_multiplier_input = input(user, "Set the impact absorbed prey's size have on your vore sprite. 1 means no scaling, 0.5 means absorbed prey count half as much, 2 means absorbed prey count double. (Range from 0.1 - 3)", "Absorbed Multiplier") as num|null + if(!isnull(absorbed_multiplier_input)) + host.vore_selected.absorbed_multiplier = CLAMP(absorbed_multiplier_input, 0.1, 3) + host.update_fullness() + . = TRUE + if("b_count_items_for_sprites") + host.vore_selected.count_items_for_sprite = !host.vore_selected.count_items_for_sprite + host.update_fullness() + . = TRUE + if("b_item_multiplier") + var/item_multiplier_input = input(user, "Set the impact items will have on your vore sprite. 1 means a belly with 8 normal-sized items will count as 1 normal sized prey-thing's worth, 0.5 means items count half as much, 2 means items count double. (Range from 0.1 - 10)", "Item Multiplier") as num|null + if(!isnull(item_multiplier_input)) + host.vore_selected.item_multiplier = CLAMP(item_multiplier_input, 0.1, 10) + host.update_fullness() + . = TRUE + if("b_health_impacts_size") + host.vore_selected.health_impacts_size = !host.vore_selected.health_impacts_size + host.update_fullness() + . = TRUE + if("b_resist_animation") + host.vore_selected.resist_triggers_animation = !host.vore_selected.resist_triggers_animation + . = TRUE + if("b_size_factor_sprites") + var/size_factor_input = input(user, "Set the impact all belly content's collective size has on your vore sprite. 1 means no scaling, 0.5 means content counts half as much, 2 means contents count double. (Range from 0.1 - 3)", "Size Factor") as num|null + if(!isnull(size_factor_input)) + host.vore_selected.size_factor_for_sprite = CLAMP(size_factor_input, 0.1, 3) + host.update_fullness() + . = TRUE + //CHOMPEdit End if("b_vore_sprite_flags") //CHOMP Addition var/list/menu_list = host.vore_selected.vore_sprite_flag_list.Copy() var/toggle_vs_flag = tgui_input_list(user, "Toggle Vore Sprite Modes", "Mode Choice", menu_list) //ChompEDIT - user, not usr @@ -3895,20 +3933,6 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", return FALSE host.vore_selected.vore_sprite_flags ^= host.vore_selected.vore_sprite_flag_list[toggle_vs_flag] . = TRUE - if("b_affects_vore_sprites") //CHOMP Addition - host.vore_selected.affects_vore_sprites = !host.vore_selected.affects_vore_sprites - host.update_fullness() - . = TRUE - if("b_count_absorbed_prey_for_sprites") //CHOMP Addition - host.vore_selected.count_absorbed_prey_for_sprite = !host.vore_selected.count_absorbed_prey_for_sprite - host.update_fullness() - . = TRUE - if("b_absorbed_multiplier") //CHOMP Addition - var/absorbed_multiplier_input = input(user, "Set the impact absorbed prey's size have on your vore sprite. 1 means no scaling, 0.5 means absorbed prey count half as much, 2 means absorbed prey count double. (Range from 0.1 - 3)", "Absorbed Multiplier") as num|null - if(!isnull(absorbed_multiplier_input)) - host.vore_selected.absorbed_multiplier = CLAMP(absorbed_multiplier_input, 0.1, 3) - host.update_fullness() - . = TRUE if("b_count_liquid_for_sprites") //CHOMP Addition host.vore_selected.count_liquid_for_sprite = !host.vore_selected.count_liquid_for_sprite host.update_fullness() @@ -3919,29 +3943,6 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.liquid_multiplier = CLAMP(liquid_multiplier_input, 0.1, 10) host.update_fullness() . = TRUE - if("b_count_items_for_sprites") //CHOMP Addition - host.vore_selected.count_items_for_sprite = !host.vore_selected.count_items_for_sprite - host.update_fullness() - . = TRUE - if("b_item_multiplier") //CHOMP Addition - var/item_multiplier_input = input(user, "Set the impact items will have on your vore sprite. 1 means a belly with 8 normal-sized items will count as 1 normal sized prey-thing's worth, 0.5 means items count half as much, 2 means items count double. (Range from 0.1 - 10)", "Item Multiplier") as num|null - if(!isnull(item_multiplier_input)) - host.vore_selected.item_multiplier = CLAMP(item_multiplier_input, 0.1, 10) - host.update_fullness() - . = TRUE - if("b_health_impacts_size") //CHOMP Addition - host.vore_selected.health_impacts_size = !host.vore_selected.health_impacts_size - host.update_fullness() - . = TRUE - if("b_resist_animation") //CHOMP Addition - host.vore_selected.resist_triggers_animation = !host.vore_selected.resist_triggers_animation - . = TRUE - if("b_size_factor_sprites") //CHOMP Addition - var/size_factor_input = input(user, "Set the impact all belly content's collective size has on your vore sprite. 1 means no scaling, 0.5 means content counts half as much, 2 means contents count double. (Range from 0.1 - 3)", "Size Factor") as num|null - if(!isnull(size_factor_input)) - host.vore_selected.size_factor_for_sprite = CLAMP(size_factor_input, 0.1, 3) - host.update_fullness() - . = TRUE if("b_undergarment_choice") //CHOMP Addition var/datum/category_group/underwear/undergarment_choice = tgui_input_list(user, "Which undergarment do you want to enable when your [lowertext(host.vore_selected.name)] is filled?","Select Undergarment Class", global_underwear.categories) //ChompEDIT - user, not usr if(!undergarment_choice) //They cancelled, no changes @@ -3965,24 +3966,24 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.undergarment_color = newcolor host.update_fullness() . = TRUE - if("b_tail_to_change_to") //CHOMP Addition + if("b_tail_to_change_to") var/tail_choice = tgui_input_list(user, "Which tail sprite do you want to use when your [lowertext(host.vore_selected.name)] is filled?","Select Sprite", global.tail_styles_list) //ChompEDIT - user, not usr if(!tail_choice) //They cancelled, no changes return FALSE else host.vore_selected.tail_to_change_to = tail_choice . = TRUE - if("b_tail_color") // CHOMP Addition + if("b_tail_color") var/newcolor = input(user, "Choose tail color.", "", host.vore_selected.tail_colouration) as color|null //ChompEDIT - user, not usr if(newcolor) host.vore_selected.tail_colouration = newcolor . = TRUE - if("b_tail_color2") // CHOMP Addition + if("b_tail_color2") var/newcolor = input(user, "Choose tail secondary color.", "", host.vore_selected.tail_extra_overlay) as color|null //ChompEDIT - user, not usr if(newcolor) host.vore_selected.tail_extra_overlay = newcolor . = TRUE - if("b_tail_color3") // CHOMP Addition + if("b_tail_color3") var/newcolor = input(user, "Choose tail tertiary color.", "", host.vore_selected.tail_extra_overlay2) as color|null //ChompEDIT - user, not usr if(newcolor) host.vore_selected.tail_extra_overlay2 = newcolor diff --git a/icons/mob/vore/Bellies.dmi b/icons/mob/vore/Bellies.dmi new file mode 100644 index 0000000000..4f0d94f008 Binary files /dev/null and b/icons/mob/vore/Bellies.dmi differ diff --git a/icons/mob/vore/Taur_Bellies.dmi b/icons/mob/vore/Taur_Bellies.dmi new file mode 100644 index 0000000000..e606c64d18 Binary files /dev/null and b/icons/mob/vore/Taur_Bellies.dmi differ diff --git a/modular_chomp/code/game/objects/items/weapons/cigs_lighters.dm b/modular_chomp/code/game/objects/items/weapons/cigs_lighters.dm index 91759b53ee..59521e52bb 100644 --- a/modular_chomp/code/game/objects/items/weapons/cigs_lighters.dm +++ b/modular_chomp/code/game/objects/items/weapons/cigs_lighters.dm @@ -182,7 +182,7 @@ var/i = rand(1, 100) switch(i) if(1 to 22) - to_chat("[user] safely reveals the supermatter shard within the [src]!") + to_chat(user, "[user] safely reveals the supermatter shard within the [src]!") user.visible_message("You safely revealed the supermatter shard within the [src]!") if (user.get_left_hand() == src) user.apply_damage(1, IRRADIATE, "l_hand") diff --git a/modular_chomp/code/game/objects/structures/gargoyle.dm b/modular_chomp/code/game/objects/structures/gargoyle.dm index 6e02facfff..e7c3fac400 100644 --- a/modular_chomp/code/game/objects/structures/gargoyle.dm +++ b/modular_chomp/code/game/objects/structures/gargoyle.dm @@ -246,7 +246,7 @@ return ..() playsound(src, W.usesound, 50, 1) if (do_after(user, (2 SECONDS) * W.toolspeed, target = src)) - to_chat("You [anchored ? "un" : ""]anchor the [src].") + to_chat(user, "You [anchored ? "un" : ""]anchor the [src].") anchored = !anchored else if(!isrobot(user) && gargoyle && gargoyle.vore_selected && gargoyle.trash_catching) if(istype(W,/obj/item/weapon/grab || /obj/item/weapon/holder)) diff --git a/modular_chomp/code/modules/admin/verbs/debug.dm b/modular_chomp/code/modules/admin/verbs/debug.dm index ace5a43e63..1717c65ac7 100644 --- a/modular_chomp/code/modules/admin/verbs/debug.dm +++ b/modular_chomp/code/modules/admin/verbs/debug.dm @@ -1,5 +1,5 @@ /client/proc/reload_configuration() - set category = "Debug" + set category = "Debug.Server" set name = "Reload Configuration" set desc = "Force config reload to world default" if(!check_rights(R_DEBUG)) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm b/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm index e0d27a9d25..22dd1b10e5 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm @@ -2,12 +2,6 @@ var/gender_change_cooldown = 0 // A cooldown for gender and gender indentify changing procs to make it easy to avoid spam of gender change var/loneliness_stage = 0 var/next_loneliness_time = 0 - vore_capacity = 3 - vore_capacity_ex = list("stomach" = 3, "taur belly" = 3) - vore_fullness_ex = list("stomach" = 0, "taur belly" = 0) - vore_icon_bellies = list("stomach", "taur belly") - var/struggle_anim_stomach = FALSE - var/struggle_anim_taur = FALSE var/hide_headset = FALSE var/hide_glasses = FALSE var/speech_sound_enabled = TRUE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm index 4d3ef81502..4df75e2900 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm @@ -1,6 +1,5 @@ /datum/species var/crit_mod = 1 - var/vore_belly_default_variant = "H" var/list/env_traits = list() var/dirtslip = FALSE var/photosynthesizing = FALSE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm index 30f7281735..d22c8e99ba 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm @@ -35,72 +35,6 @@ apply_layer(SHOES_LAYER) apply_layer(SHOES_LAYER_ALT) -/mob/living/carbon/human/proc/update_vore_belly_sprite() - if(QDESTROYING(src)) - return - - remove_layer(VORE_BELLY_LAYER) - - var/image/vore_belly_image = get_vore_belly_image() - if(vore_belly_image) - vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER - overlays_standing[VORE_BELLY_LAYER] = vore_belly_image - - apply_layer(VORE_BELLY_LAYER) - -/mob/living/carbon/human/proc/get_vore_belly_image() - if(!(wear_suit && wear_suit.flags_inv & HIDETAIL)) - var/vs_fullness = vore_fullness_ex["stomach"] - var/icon/vorebelly_s = new/icon(icon = 'modular_chomp/icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]") - vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD) - var/image/working = image(vorebelly_s) - working.overlays += em_block_image_generic(working) - return working - return null - -/mob/living/carbon/human/proc/vore_belly_animation() - if(!struggle_anim_stomach) - struggle_anim_stomach = TRUE - update_vore_belly_sprite() - spawn(12) - struggle_anim_stomach = FALSE - update_vore_belly_sprite() - -/mob/living/carbon/human/proc/update_vore_tail_sprite() - if(QDESTROYING(src)) - return - - remove_layer(VORE_TAIL_LAYER) - - var/image/vore_tail_image = get_vore_tail_image() - if(vore_tail_image) - vore_tail_image.layer = BODY_LAYER+VORE_TAIL_LAYER - overlays_standing[VORE_TAIL_LAYER] = vore_tail_image - - apply_layer(VORE_TAIL_LAYER) - -/mob/living/carbon/human/proc/get_vore_tail_image() - if(tail_style && istaurtail(tail_style) && tail_style:vore_tail_sprite_variant) - var/vs_fullness = vore_fullness_ex["taur belly"] - var/loaf_alt = lying && tail_style:belly_variant_when_loaf - var/fullness_icons = min(tail_style.fullness_icons, vs_fullness) - var/icon/vorebelly_s = new/icon(icon = tail_style.bellies_icon_path, icon_state = "Taur[tail_style:vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]") - vorebelly_s.Blend(vore_sprite_color["taur belly"], vore_sprite_multiply["taur belly"] ? ICON_MULTIPLY : ICON_ADD) - var/image/working = image(vorebelly_s) - working.pixel_x = -16 - if(tail_style.em_block) - working.overlays += em_block_image_generic(working) - return working - return null - -/mob/living/carbon/human/proc/vore_tail_animation() - if(tail_style.struggle_anim && !struggle_anim_taur) - struggle_anim_taur = TRUE - update_vore_tail_sprite() - spawn(12) - struggle_anim_taur = FALSE - update_vore_tail_sprite() - /mob/living/carbon/human/proc/GetAppearanceFromPrefs(var/flavourtext, var/oocnotes) /* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob. Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/ diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm index 1b6556070b..55f0e6672a 100644 --- a/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -1,63 +1,3 @@ -/datum/sprite_accessory/tail - var/vore_tail_sprite_variant = "" - var/belly_variant_when_loaf = FALSE - var/fullness_icons = 0 - var/struggle_anim = FALSE - var/bellies_icon_path = 'modular_chomp/icons/mob/vore/Taur_Bellies.dmi' - -/datum/sprite_accessory/tail/taur/wolf - vore_tail_sprite_variant = "N" - fullness_icons = 3 - -/datum/sprite_accessory/tail/taur/naga/naga_2c - vore_tail_sprite_variant = "Naga" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/horse - vore_tail_sprite_variant = "Horse" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/cow - vore_tail_sprite_variant = "Cow" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/lizard - vore_tail_sprite_variant = "Lizard" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/lizard/synthlizard - vore_tail_sprite_variant = "SynthLiz" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/feline - vore_tail_sprite_variant = "Feline" - belly_variant_when_loaf = TRUE - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/slug - vore_tail_sprite_variant = "Slug" - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/drake - vore_tail_sprite_variant = "Drake" - belly_variant_when_loaf = TRUE - fullness_icons = 3 - -/datum/sprite_accessory/tail/taur/otie - vore_tail_sprite_variant = "Otie" - belly_variant_when_loaf = TRUE - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/deer - vore_tail_sprite_variant = "Deer" - belly_variant_when_loaf = TRUE - fullness_icons = 1 - -/datum/sprite_accessory/tail/taur/skunk - vore_tail_sprite_variant = "Skunk" - belly_variant_when_loaf = TRUE - fullness_icons = 1 - /datum/sprite_accessory/tail/taur/ch icon = 'icons/mob/vore/taurs_ch.dmi'//Parent which allows us to not need to set icon every time. diff --git a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyTabs/VoreSelectedBellyDescriptions.tsx b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyTabs/VoreSelectedBellyDescriptions.tsx index 7168a8742c..bc348541ca 100644 --- a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyTabs/VoreSelectedBellyDescriptions.tsx +++ b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyTabs/VoreSelectedBellyDescriptions.tsx @@ -143,8 +143,9 @@ export const VoreSelectedBellyDescriptions = (props: { '' )} {message_mode || - !!interacts.transferlocation || - !!interacts.transferlocation_secondary || + (escapable && + (!!interacts.transferlocation || + !!interacts.transferlocation_secondary)) || (autotransfer_enabled && (!!autotransfer.autotransferlocation || !!autotransfer.autotransferlocation_secondary)) ? (