[MIRROR] Attempts implementation of char setup vore panel (#7040)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: Raeschen <rycoop29@gmail.com>
Co-authored-by: Nadyr <41974248+Darlantanis@users.noreply.github.com>
Co-authored-by: Darlantan <forlirnglacignis@gmail.com>
This commit is contained in:
CHOMPStation2
2023-10-24 14:04:39 -07:00
committed by GitHub
parent 7bd8ecbe5b
commit e89ee8d9b0
13 changed files with 131 additions and 109 deletions

View File

@@ -132,17 +132,17 @@ var/global/list/global_vore_egg_types = list(
"Xenomorph", "Xenomorph",
"Chocolate", "Chocolate",
"Boney", "Boney",
"Slime glob", "Slime Glob",
"Chicken", "Chicken",
"Synthetic", "Synthetic",
"Bluespace Floppy", "Bluespace Floppy",
"Bluespace Compressed File", "Bluespace Compressed File",
"Bluespace CD", "Bluespace CD",
"Escape pod", "Escape Pod",
"Cooking error", "Cooking Error",
"Web cocoon", "Web Cocoon",
"Honeycomb", "Honeycomb",
"Bug cocoon", "Bug Cocoon",
"Rock", "Rock",
"Yellow", "Yellow",
"Blue", "Blue",
@@ -151,7 +151,7 @@ var/global/list/global_vore_egg_types = list(
"Purple", "Purple",
"Red", "Red",
"Rainbow", "Rainbow",
"Spotted pink") "Spotted Pink")
var/global/list/tf_vore_egg_types = list( var/global/list/tf_vore_egg_types = list(
"Unathi" = /obj/item/weapon/storage/vore_egg/unathi, "Unathi" = /obj/item/weapon/storage/vore_egg/unathi,
@@ -167,17 +167,17 @@ var/global/list/tf_vore_egg_types = list(
"Xenomorph" = /obj/item/weapon/storage/vore_egg/xenomorph, "Xenomorph" = /obj/item/weapon/storage/vore_egg/xenomorph,
"Chocolate" = /obj/item/weapon/storage/vore_egg/chocolate, "Chocolate" = /obj/item/weapon/storage/vore_egg/chocolate,
"Boney" = /obj/item/weapon/storage/vore_egg/owlpellet, "Boney" = /obj/item/weapon/storage/vore_egg/owlpellet,
"Slime glob" = /obj/item/weapon/storage/vore_egg/slimeglob, "Slime Glob" = /obj/item/weapon/storage/vore_egg/slimeglob,
"Chicken" = /obj/item/weapon/storage/vore_egg/chicken, "Chicken" = /obj/item/weapon/storage/vore_egg/chicken,
"Synthetic" = /obj/item/weapon/storage/vore_egg/synthetic, "Synthetic" = /obj/item/weapon/storage/vore_egg/synthetic,
"Bluespace Floppy" = /obj/item/weapon/storage/vore_egg/floppy, "Bluespace Floppy" = /obj/item/weapon/storage/vore_egg/floppy,
"Bluespace Compressed File" = /obj/item/weapon/storage/vore_egg/file, "Bluespace Compressed File" = /obj/item/weapon/storage/vore_egg/file,
"Bluespace CD" = /obj/item/weapon/storage/vore_egg/cd, "Bluespace CD" = /obj/item/weapon/storage/vore_egg/cd,
"Escape pod" = /obj/item/weapon/storage/vore_egg/escapepod, "Escape Pod" = /obj/item/weapon/storage/vore_egg/escapepod,
"Cooking error" = /obj/item/weapon/storage/vore_egg/badrecipe, "Cooking Error" = /obj/item/weapon/storage/vore_egg/badrecipe,
"Web cocoon" = /obj/item/weapon/storage/vore_egg/cocoon, "Web Cocoon" = /obj/item/weapon/storage/vore_egg/cocoon,
"Honeycomb" = /obj/item/weapon/storage/vore_egg/honeycomb, "Honeycomb" = /obj/item/weapon/storage/vore_egg/honeycomb,
"Bug cocoon" = /obj/item/weapon/storage/vore_egg/bugcocoon, "Bug Cocoon" = /obj/item/weapon/storage/vore_egg/bugcocoon,
"Rock" = /obj/item/weapon/storage/vore_egg/rock, "Rock" = /obj/item/weapon/storage/vore_egg/rock,
"Yellow" = /obj/item/weapon/storage/vore_egg/yellow, "Yellow" = /obj/item/weapon/storage/vore_egg/yellow,
"Blue" = /obj/item/weapon/storage/vore_egg/blue, "Blue" = /obj/item/weapon/storage/vore_egg/blue,
@@ -186,7 +186,7 @@ var/global/list/tf_vore_egg_types = list(
"Purple" = /obj/item/weapon/storage/vore_egg/purple, "Purple" = /obj/item/weapon/storage/vore_egg/purple,
"Red" = /obj/item/weapon/storage/vore_egg/red, "Red" = /obj/item/weapon/storage/vore_egg/red,
"Rainbow" = /obj/item/weapon/storage/vore_egg/rainbow, "Rainbow" = /obj/item/weapon/storage/vore_egg/rainbow,
"Spotted pink" = /obj/item/weapon/storage/vore_egg/pinkspots) "Spotted Pink" = /obj/item/weapon/storage/vore_egg/pinkspots)
var/global/list/edible_trash = list(/obj/item/broken_device, var/global/list/edible_trash = list(/obj/item/broken_device,
/obj/item/clothing/accessory/collar, /obj/item/clothing/accessory/collar,

View File

@@ -575,7 +575,7 @@
/mob/living/bot/Login() /mob/living/bot/Login()
no_vore = FALSE // ROBOT VORE no_vore = FALSE // ROBOT VORE
init_vore() // ROBOT VORE init_vore() // ROBOT VORE
verbs |= /mob/living/proc/insidePanel verbs |= /mob/proc/insidePanel
return ..() return ..()
@@ -583,7 +583,7 @@
no_vore = TRUE // ROBOT VORE no_vore = TRUE // ROBOT VORE
release_vore_contents() release_vore_contents()
init_vore() // ROBOT VORE init_vore() // ROBOT VORE
verbs -= /mob/living/proc/insidePanel verbs -= /mob/proc/insidePanel
no_vore = TRUE no_vore = TRUE
devourable = FALSE devourable = FALSE
feeding = FALSE feeding = FALSE

View File

@@ -22,6 +22,7 @@
/mob/new_player/New() /mob/new_player/New()
mob_list += src mob_list += src
verbs |= /mob/proc/insidePanel
initialized = TRUE // Explicitly don't use Initialize(). New players join super early and use New() initialized = TRUE // Explicitly don't use Initialize(). New players join super early and use New()
/mob/new_player/verb/new_player_panel() /mob/new_player/verb/new_player_panel()

View File

@@ -13,6 +13,6 @@ GLOBAL_DATUM_INIT(tgui_vorepanel_state, /datum/tgui_state/vorepanel_state, new)
return STATUS_CLOSE return STATUS_CLOSE
if(!user.client) if(!user.client)
return STATUS_CLOSE return STATUS_CLOSE
if(user.stat == DEAD) if(!isnewplayer(user) && user.stat == DEAD)
return STATUS_DISABLED return STATUS_DISABLED
return STATUS_INTERACTIVE return STATUS_INTERACTIVE

View File

@@ -175,7 +175,7 @@
///////////////////// NUTRITION REAGENT PRODUCTION ///////////////// ///////////////////// NUTRITION REAGENT PRODUCTION /////////////////
/obj/belly/proc/HandleBellyReagents() /obj/belly/proc/HandleBellyReagents()
if(reagentbellymode && reagent_mode_flags & DM_FLAG_REAGENTSNUTRI && reagents.total_volume < custom_max_volume) //Removed if(reagentbellymode == TRUE) since that's less optimized if(reagentbellymode && reagent_mode_flags & DM_FLAG_REAGENTSNUTRI && reagents.total_volume < custom_max_volume && !isnewplayer(owner)) //Removed if(reagentbellymode == TRUE) since that's less optimized
if(isrobot(owner)) if(isrobot(owner))
var/mob/living/silicon/robot/R = owner var/mob/living/silicon/robot/R = owner
if(R.cell.charge >= gen_cost*10 && gen_interval >= gen_time) if(R.cell.charge >= gen_cost*10 && gen_interval >= gen_time)
@@ -549,4 +549,4 @@
D.w_class = O.w_class D.w_class = O.w_class
return TRUE return TRUE
new /obj/item/debris_pack/digested(src, modified_mats) new /obj/item/debris_pack/digested(src, modified_mats)
return TRUE return TRUE

View File

@@ -351,13 +351,14 @@
/obj/belly/Initialize() /obj/belly/Initialize()
. = ..() . = ..()
//If not, we're probably just in a prefs list or something. //If not, we're probably just in a prefs list or something.
if(isliving(loc)) if(ismob(loc))
owner = loc owner = loc
owner.vore_organs |= src owner.vore_organs |= src
if(speedy_mob_processing) //CHOMPEdit Start if(isliving(loc))
START_PROCESSING(SSobj, src) if(speedy_mob_processing) //CHOMPEdit Start
else START_PROCESSING(SSobj, src)
START_PROCESSING(SSbellies, src) else
START_PROCESSING(SSbellies, src)
create_reagents(300) //CHOMP So we can have some liquids in bellies create_reagents(300) //CHOMP So we can have some liquids in bellies
flags |= NOREACT // We dont want bellies to start bubling nonstop due to people mixing when transfering and making different reagents flags |= NOREACT // We dont want bellies to start bubling nonstop due to people mixing when transfering and making different reagents

View File

@@ -1,8 +1,6 @@
///////////////////// Mob Living ///////////////////// ///////////////////// Mob Living /////////////////////
/mob/living /mob/living
var/list/vore_organs_reagents = list() //Reagent datums in vore bellies in a mob var/list/vore_organs_reagents = list() //Reagent datums in vore bellies in a mob
var/receive_reagents = FALSE //Pref for people to avoid others transfering reagents into them.
var/give_reagents = FALSE //Pref for people to avoid others taking reagents from them.
var/vore_footstep_volume = 0 //Variable volume for a mob, updated every 5 steps where a footstep hasnt occurred. var/vore_footstep_volume = 0 //Variable volume for a mob, updated every 5 steps where a footstep hasnt occurred.
var/vore_footstep_chance = 0 var/vore_footstep_chance = 0
var/vore_footstep_volume_cooldown = 0 //goes up each time a step isnt heard, and will proc update of list of viable bellies to determine the most filled and loudest one to base audio on. var/vore_footstep_volume_cooldown = 0 //goes up each time a step isnt heard, and will proc update of list of viable bellies to determine the most filled and loudest one to base audio on.
@@ -12,23 +10,11 @@
var/liquidbelly_visuals = TRUE //Toggle for liquidbelly level visuals. var/liquidbelly_visuals = TRUE //Toggle for liquidbelly level visuals.
// CHOMP vore icons refactor (Now on living) // CHOMP vore icons refactor (Now on living)
var/vore_capacity = 0 // Maximum capacity, -1 for unlimited
var/vore_capacity_ex = list("stomach" = 0) //expanded list of capacities
var/vore_fullness = 0 // How "full" the belly is (controls icons)
var/list/vore_fullness_ex = list("stomach" = 0) // Expanded list of fullness
var/vore_icons = 0 // Bitfield for which fields we have vore icons for. var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
var/vore_eyes = FALSE // For mobs with fullness specific eye overlays. var/vore_eyes = FALSE // For mobs with fullness specific eye overlays.
var/belly_size_multiplier = 1
var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000")
var/list/vore_icon_bellies = list("stomach")
var/updating_fullness = FALSE
var/obj/belly/previewing_belly
// Update fullness based on size & quantity of belly contents // Update fullness based on size & quantity of belly contents
/mob/living/proc/update_fullness(var/returning = FALSE) /mob/proc/update_fullness(var/returning = FALSE)
if(!returning) if(!returning)
if(updating_fullness) if(updating_fullness)
return return

View File

@@ -1,16 +1,6 @@
///////////////////// Mob Living ///////////////////// ///////////////////// Mob Living /////////////////////
/mob/living /mob/living
var/digestable = TRUE // Can the mob be digested inside a belly?
var/devourable = TRUE // Can the mob be devoured at all?
var/feeding = TRUE // Can the mob be vorishly force fed or fed to others?
var/absorbable = TRUE // Are you allowed to absorb this person?
var/resizable = TRUE // Can other people resize you? (Usually ignored for self-resizes)
var/digest_leave_remains = FALSE // Will this mob leave bones/skull/etc after the melty demise?
var/allowmobvore = TRUE // Will simplemobs attempt to eat the mob?
var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not. var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not.
var/obj/belly/vore_selected // Default to no vore capability.
var/list/vore_organs = list() // List of vore containers inside a mob
var/absorbed = FALSE // If a mob is absorbed into another
var/list/temp_language_sources = list() //VOREStation Addition - Absorbs add languages to the pred var/list/temp_language_sources = list() //VOREStation Addition - Absorbs add languages to the pred
var/list/temp_languages = list() //VOREStation Addition - Absorbs add languages to the pred var/list/temp_languages = list() //VOREStation Addition - Absorbs add languages to the pred
var/prey_controlled = FALSE //VOREStation Addition var/prey_controlled = FALSE //VOREStation Addition
@@ -22,38 +12,20 @@
var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far. var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far.
var/revive_finished = 0 // Only used for xenochimera regen, allows us to find out when the regen will finish. var/revive_finished = 0 // Only used for xenochimera regen, allows us to find out when the regen will finish.
var/metabolism = 0.0015 var/metabolism = 0.0015
var/vore_taste = null // What the character tastes like
var/vore_smell = null // What the character smells like
var/no_vore = FALSE // If the character/mob can vore. var/no_vore = FALSE // If the character/mob can vore.
var/restrict_vore_ventcrawl = FALSE // Self explanatory var/restrict_vore_ventcrawl = FALSE // Self explanatory
var/noisy = FALSE // Toggle audible hunger.
var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. 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/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time.
var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon. var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon.
// var/voice_freq = 0 // Preference for character voice frequency CHOMPEdit - Moved to modular_chomp/code/modules/mob/mob.dm // var/voice_freq = 0 // Preference for character voice frequency CHOMPEdit - Moved to modular_chomp/code/modules/mob/mob.dm
// var/list/voice_sounds_list = list() // The sound list containing our voice sounds! CHOMPEdit - Moved to modular_chomp/code/modules/mob/mob.dm // var/list/voice_sounds_list = list() // The sound list containing our voice sounds! CHOMPEdit - Moved to modular_chomp/code/modules/mob/mob.dm
var/permit_healbelly = TRUE
var/stumble_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/slip_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/drop_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/throw_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/food_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = FALSE
var/allow_spontaneous_tf = FALSE // Obviously.
var/next_preyloop // For Fancy sound internal loop var/next_preyloop // For Fancy sound internal loop
var/stuffing_feeder = FALSE // Can feed foods to others whole, like trash eater can eat them on their own. var/stuffing_feeder = FALSE // Can feed foods to others whole, like trash eater can eat them on their own.
var/adminbus_trash = FALSE // For abusing trash eater for event shenanigans. var/adminbus_trash = FALSE // For abusing trash eater for event shenanigans.
var/adminbus_eat_minerals = FALSE // This creature subsists on a diet of pure adminium. var/adminbus_eat_minerals = FALSE // This creature subsists on a diet of pure adminium.
var/vis_height = 32 // Sprite height used for resize features. var/vis_height = 32 // Sprite height used for resize features.
var/show_vore_fx = TRUE // Show belly fullscreens
var/latejoin_vore = FALSE //CHOMPedit: If enabled, latejoiners can spawn into this, assuming they have a client
var/latejoin_prey = FALSE //CHOMPedit: If enabled, latejoiners can spawn ontop of and instantly eat the victim
var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait. var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait.
var/appendage_alt_setting = FALSE // Dictates if 'long_vore' user pulls prey to them or not. 1 = user thrown towards target. var/appendage_alt_setting = FALSE // Dictates if 'long_vore' user pulls prey to them or not. 1 = user thrown towards target.
var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
var/digestion_in_progress = FALSE // CHOMPEdit: Gradual corpse gurgles var/digestion_in_progress = FALSE // CHOMPEdit: Gradual corpse gurgles
var/regen_sounds = list( var/regen_sounds = list(
'sound/effects/mob_effects/xenochimera/regen_1.ogg', 'sound/effects/mob_effects/xenochimera/regen_1.ogg',
@@ -63,31 +35,6 @@
'sound/effects/mob_effects/xenochimera/regen_5.ogg' 'sound/effects/mob_effects/xenochimera/regen_5.ogg'
) )
var/nutrition_message_visible = TRUE
var/list/nutrition_messages = list(
"They are starving! You can hear their stomach snarling from across the room!",
"They are extremely hungry. A deep growl occasionally rumbles from their empty stomach.",
"",
"They have a stuffed belly, bloated fat and round from eating too much.",
"They have a rotund, thick gut. It bulges from their body obscenely, close to sagging under its own weight.",
"They are sporting a large, round, sagging stomach. It contains at least their body weight worth of glorping slush.",
"They are engorged with a huge stomach that sags and wobbles as they move. They must have consumed at least twice their body weight. It looks incredibly soft.",
"Their stomach is firmly packed with digesting slop. They must have eaten at least a few times worth their body weight! It looks hard for them to stand, and their gut jiggles when they move.",
"They are so absolutely stuffed that you aren't sure how it's possible for them to move. They can't seem to swell any bigger. The surface of their belly looks sorely strained!",
"They are utterly filled to the point where it's hard to even imagine them moving, much less comprehend it when they do. Their gut is swollen to monumental sizes and amount of food they consumed must be insane.")
var/weight_message_visible = TRUE
var/list/weight_messages = list(
"They are terribly lithe and frail!",
"They have a very slender frame.",
"They have a lightweight, athletic build.",
"They have a healthy, average body.",
"They have a thick, curvy physique.",
"They have a plush, chubby figure.",
"They have an especially plump body with a round potbelly and large hips.",
"They have a very fat frame with a bulging potbelly, squishy rolls of pudge, very wide hips, and plump set of jiggling thighs.",
"They are incredibly obese. Their massive potbelly sags over their waistline while their fat ass would probably require two chairs to sit down comfortably!",
"They are so morbidly obese, you wonder how they can even stand, let alone waddle around the station. They can't get any fatter without being immobilized.")
// //
// Hook for generic creation of stuff on new creatures // Hook for generic creation of stuff on new creatures
// //
@@ -101,7 +48,7 @@
//return TRUE to hook-caller //return TRUE to hook-caller
return TRUE return TRUE
/mob/living/proc/init_vore() /mob/proc/init_vore()
//Something else made organs, meanwhile. //Something else made organs, meanwhile.
if(LAZYLEN(vore_organs)) if(LAZYLEN(vore_organs))
return TRUE return TRUE
@@ -116,7 +63,7 @@
return TRUE return TRUE
//Or, we can create a basic one for them //Or, we can create a basic one for them
if(!LAZYLEN(vore_organs)) if(!LAZYLEN(vore_organs) && isliving(src))
LAZYINITLIST(vore_organs) LAZYINITLIST(vore_organs)
var/obj/belly/B = new /obj/belly(src) var/obj/belly/B = new /obj/belly(src)
vore_selected = B vore_selected = B
@@ -240,7 +187,7 @@
// //
// Verb for saving vore preferences to save file // Verb for saving vore preferences to save file
// //
/mob/living/proc/save_vore_prefs() /mob/proc/save_vore_prefs()
if(!client || !client.prefs_vr) if(!client || !client.prefs_vr)
return FALSE return FALSE
if(!copy_to_prefs_vr()) if(!copy_to_prefs_vr())
@@ -250,7 +197,7 @@
return TRUE return TRUE
/mob/living/proc/apply_vore_prefs() /mob/proc/apply_vore_prefs()
if(!client || !client.prefs_vr) if(!client || !client.prefs_vr)
return FALSE return FALSE
if(!client.prefs_vr.load_vore()) if(!client.prefs_vr.load_vore())
@@ -260,7 +207,7 @@
return TRUE return TRUE
/mob/living/proc/copy_to_prefs_vr() /mob/proc/copy_to_prefs_vr()
if(!client || !client.prefs_vr) if(!client || !client.prefs_vr)
to_chat(src,"<span class='warning'>You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>") to_chat(src,"<span class='warning'>You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>")
return FALSE return FALSE
@@ -317,7 +264,7 @@
// //
// Proc for applying vore preferences, given bellies // Proc for applying vore preferences, given bellies
// //
/mob/living/proc/copy_from_prefs_vr(var/bellies = TRUE, var/full_vorgans = FALSE) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization. /mob/proc/copy_from_prefs_vr(var/bellies = TRUE, var/full_vorgans = FALSE) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization.
if(!client || !client.prefs_vr) if(!client || !client.prefs_vr)
to_chat(src,"<span class='warning'>You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>") to_chat(src,"<span class='warning'>You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>")
return FALSE return FALSE
@@ -365,8 +312,10 @@
vore_sprite_multiply = P.vore_sprite_multiply vore_sprite_multiply = P.vore_sprite_multiply
if(bellies) if(bellies)
release_vore_contents(silent = TRUE) if(isliving(src))
QDEL_LIST(vore_organs) var/mob/living/L = src
L.release_vore_contents(silent = TRUE)
QDEL_LIST(vore_organs) // CHOMPedit
for(var/entry in P.belly_prefs) for(var/entry in P.belly_prefs)
list_to_object(entry,src) list_to_object(entry,src)
@@ -1294,7 +1243,7 @@
var/mob/living/owner = parent var/mob/living/owner = parent
if(owner.client) if(owner.client)
create_mob_button(parent) create_mob_button(parent)
owner.verbs |= /mob/living/proc/insidePanel owner.verbs |= /mob/proc/insidePanel
if(!owner.vorePanel) //CHOMPEdit if(!owner.vorePanel) //CHOMPEdit
owner.vorePanel = new(owner) owner.vorePanel = new(owner)
@@ -1306,7 +1255,7 @@
owner?.client?.screen -= screen_icon owner?.client?.screen -= screen_icon
UnregisterSignal(screen_icon, COMSIG_CLICK) UnregisterSignal(screen_icon, COMSIG_CLICK)
qdel_null(screen_icon) qdel_null(screen_icon)
owner.verbs -= /mob/living/proc/insidePanel owner.verbs -= /mob/proc/insidePanel
qdel_null(owner.vorePanel) qdel_null(owner.vorePanel)
/datum/component/vore_panel/proc/create_mob_button(mob/user) /datum/component/vore_panel/proc/create_mob_button(mob/user)

View File

@@ -0,0 +1,16 @@
/mob
var/receive_reagents = FALSE //Pref for people to avoid others transfering reagents into them.
var/give_reagents = FALSE //Pref for people to avoid others taking reagents from them.
// CHOMP vore icons refactor (Now on mob)
var/vore_capacity = 0 // Maximum capacity, -1 for unlimited
var/vore_capacity_ex = list("stomach" = 0) //expanded list of capacities
var/vore_fullness = 0 // How "full" the belly is (controls icons)
var/list/vore_fullness_ex = list("stomach" = 0) // Expanded list of fullness
var/belly_size_multiplier = 1
var/vore_sprite_multiply = list("stomach" = FALSE, "taur belly" = FALSE)
var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000")
var/list/vore_icon_bellies = list("stomach")
var/updating_fullness = FALSE
var/obj/belly/previewing_belly

View File

@@ -0,0 +1,54 @@
/mob
var/digestable = TRUE // Can the mob be digested inside a belly?
var/devourable = TRUE // Can the mob be devoured at all?
var/feeding = TRUE // Can the mob be vorishly force fed or fed to others?
var/absorbable = TRUE // Are you allowed to absorb this person?
var/resizable = TRUE // Can other people resize you? (Usually ignored for self-resizes)
var/digest_leave_remains = FALSE // Will this mob leave bones/skull/etc after the melty demise?
var/allowmobvore = TRUE // Will simplemobs attempt to eat the mob?
//var/allow_inbelly_spawning = FALSE // Will we even bother with attempts of someone to spawn in in one of our bellies? // CHOMPedit: use our code instead of upstream's recoding of our code
var/obj/belly/vore_selected // Default to no vore capability.
var/list/vore_organs = list() // List of vore containers inside a mob
var/absorbed = FALSE // If a mob is absorbed into another
var/vore_taste = null // What the character tastes like
var/vore_smell = null // What the character smells like
var/noisy = FALSE // Toggle audible hunger.
var/permit_healbelly = TRUE
var/stumble_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/slip_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/drop_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/throw_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/food_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway
var/can_be_drop_prey = FALSE
var/can_be_drop_pred = FALSE
var/allow_spontaneous_tf = FALSE // Obviously.
var/show_vore_fx = TRUE // Show belly fullscreens
var/latejoin_vore = FALSE //CHOMPedit: If enabled, latejoiners can spawn into this, assuming they have a client
var/latejoin_prey = FALSE //CHOMPedit: If enabled, latejoiners can spawn ontop of and instantly eat the victim
var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
var/nutrition_message_visible = TRUE
var/list/nutrition_messages = list(
"They are starving! You can hear their stomach snarling from across the room!",
"They are extremely hungry. A deep growl occasionally rumbles from their empty stomach.",
"",
"They have a stuffed belly, bloated fat and round from eating too much.",
"They have a rotund, thick gut. It bulges from their body obscenely, close to sagging under its own weight.",
"They are sporting a large, round, sagging stomach. It contains at least their body weight worth of glorping slush.",
"They are engorged with a huge stomach that sags and wobbles as they move. They must have consumed at least twice their body weight. It looks incredibly soft.",
"Their stomach is firmly packed with digesting slop. They must have eaten at least a few times worth their body weight! It looks hard for them to stand, and their gut jiggles when they move.",
"They are so absolutely stuffed that you aren't sure how it's possible for them to move. They can't seem to swell any bigger. The surface of their belly looks sorely strained!",
"They are utterly filled to the point where it's hard to even imagine them moving, much less comprehend it when they do. Their gut is swollen to monumental sizes and amount of food they consumed must be insane.")
var/weight_message_visible = TRUE
var/list/weight_messages = list(
"They are terribly lithe and frail!",
"They have a very slender frame.",
"They have a lightweight, athletic build.",
"They have a healthy, average body.",
"They have a thick, curvy physique.",
"They have a plush, chubby figure.",
"They have an especially plump body with a round potbelly and large hips.",
"They have a very fat frame with a bulging potbelly, squishy rolls of pudge, very wide hips, and plump set of jiggling thighs.",
"They are incredibly obese. Their massive potbelly sags over their waistline while their fat ass would probably require two chairs to sit down comfortably!",
"They are so morbidly obese, you wonder how they can even stand, let alone waddle around the station. They can't get any fatter without being immobilized.")

View File

@@ -25,20 +25,27 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"could_it_be_a_tumby") "could_it_be_a_tumby")
*/ //Chomp REMOVE End */ //Chomp REMOVE End
/mob/living /mob
var/datum/vore_look/vorePanel var/datum/vore_look/vorePanel
/mob/living/proc/insidePanel() /mob/proc/insidePanel()
set name = "Vore Panel" set name = "Vore Panel"
set category = "IC" set category = "IC"
if(SSticker.current_state == GAME_STATE_INIT)
return
if(!isliving(src))
init_vore()
if(!vorePanel) if(!vorePanel)
log_debug("[src] ([type], \ref[src]) didn't have a vorePanel and tried to use the verb.") if(!isnewplayer(src))
log_debug("[src] ([type], \ref[src]) didn't have a vorePanel and tried to use the verb.")
vorePanel = new(src) vorePanel = new(src)
vorePanel.tgui_interact(src) vorePanel.tgui_interact(src)
/mob/living/proc/updateVRPanel() //Panel popup update call from belly events. /mob/proc/updateVRPanel() //Panel popup update call from belly events.
if(vorePanel) if(vorePanel)
SStgui.update_uis(vorePanel) SStgui.update_uis(vorePanel)
@@ -46,12 +53,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
// Callback Handler for the Inside form // Callback Handler for the Inside form
// //
/datum/vore_look /datum/vore_look
var/mob/living/host // Note, we do this in case we ever want to allow people to view others vore panels var/mob/host // Note, we do this in case we ever want to allow people to view others vore panels
var/unsaved_changes = FALSE var/unsaved_changes = FALSE
var/show_pictures = TRUE var/show_pictures = TRUE
var/max_icon_content = 21 //CHOMPedit: Contents above this disable icon mode. 21 for nice 3 rows to fill the default panel window. var/max_icon_content = 21 //CHOMPedit: Contents above this disable icon mode. 21 for nice 3 rows to fill the default panel window.
/datum/vore_look/New(mob/living/new_host) /datum/vore_look/New(mob/new_host)
if(istype(new_host)) if(istype(new_host))
host = new_host host = new_host
. = ..() . = ..()
@@ -1482,7 +1489,11 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
return set_attr(usr, params) return set_attr(usr, params)
if("saveprefs") if("saveprefs")
if(host.real_name != host.client.prefs.real_name || (!ishuman(host) && !issilicon(host))) if(isnewplayer(host))
var/choice = tgui_alert(usr, "Warning: Saving your vore panel while in the lobby will save it to the CURRENTLY LOADED character slot, and potentially overwrite it. Are you SURE you want to overwrite your current slot with these vore bellies?", "WARNING!", list("No, abort!", "Yes, save."))
if(choice != "Yes, save.")
return TRUE
else if(host.real_name != host.client.prefs.real_name || (!ishuman(host) && !issilicon(host)))
var/choice = tgui_alert(usr, "Warning: Saving your vore panel while playing what is very-likely not your normal character will overwrite whatever character you have loaded in character setup. Maybe this is your 'playing a simple mob' slot, though. Are you SURE you want to overwrite your current slot with these vore bellies?", "WARNING!", list("No, abort!", "Yes, save.")) var/choice = tgui_alert(usr, "Warning: Saving your vore panel while playing what is very-likely not your normal character will overwrite whatever character you have loaded in character setup. Maybe this is your 'playing a simple mob' slot, though. Are you SURE you want to overwrite your current slot with these vore bellies?", "WARNING!", list("No, abort!", "Yes, save."))
if(choice != "Yes, save.") if(choice != "Yes, save.")
return TRUE return TRUE

View File

@@ -1,9 +1,11 @@
// Adding needed defines to /mob/living // Adding needed defines to /mob/living
// Note: Polaris had this on /mob/living/carbon/human We need it higher up for animals and stuff. // Note: Polaris had this on /mob/living/carbon/human We need it higher up for animals and stuff.
/mob/living /mob
var/holder_default
var/step_mechanics_pref = TRUE // Allow participation in macro-micro step mechanics var/step_mechanics_pref = TRUE // Allow participation in macro-micro step mechanics
var/pickup_pref = TRUE // Allow participation in macro-micro pickup mechanics var/pickup_pref = TRUE // Allow participation in macro-micro pickup mechanics
/mob/living
var/holder_default
var/pickup_active = TRUE // Toggle whether your help intent picks up micros or pets them var/pickup_active = TRUE // Toggle whether your help intent picks up micros or pets them
var/center_offset = 0.5 // Center offset for uneven scaling symmetry. //CHOMPEdit var/center_offset = 0.5 // Center offset for uneven scaling symmetry. //CHOMPEdit
var/offset_override = FALSE // Pref toggle for center offset. //CHOMPEdit var/offset_override = FALSE // Pref toggle for center offset. //CHOMPEdit

View File

@@ -4396,6 +4396,8 @@
#include "code\modules\vore\eating\leave_remains_vr.dm" #include "code\modules\vore\eating\leave_remains_vr.dm"
#include "code\modules\vore\eating\living_ch.dm" #include "code\modules\vore\eating\living_ch.dm"
#include "code\modules\vore\eating\living_vr.dm" #include "code\modules\vore\eating\living_vr.dm"
#include "code\modules\vore\eating\mob_ch.dm"
#include "code\modules\vore\eating\mob_vr.dm"
#include "code\modules\vore\eating\silicon_vr.dm" #include "code\modules\vore\eating\silicon_vr.dm"
#include "code\modules\vore\eating\simple_animal_vr.dm" #include "code\modules\vore\eating\simple_animal_vr.dm"
#include "code\modules\vore\eating\slipvore_vr.dm" #include "code\modules\vore\eating\slipvore_vr.dm"