diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm
index 710b11ae..55f27dac 100644
--- a/code/__DEFINES/voreconstants.dm
+++ b/code/__DEFINES/voreconstants.dm
@@ -6,6 +6,7 @@
#define DM_DRAGON "Dragon"
#define DM_ABSORB "Absorb"
#define DM_UNABSORB "Un-absorb"
+#define DM_FATTEN "Fatten"
#define isbelly(A) istype(A, /obj/belly)
diff --git a/modular_citadel/code/modules/vore/eating/belly_dat_vr.dm b/modular_citadel/code/modules/vore/eating/belly_dat_vr.dm
index 3886eb14..47bac4bf 100644
--- a/modular_citadel/code/modules/vore/eating/belly_dat_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/belly_dat_vr.dm
@@ -35,7 +35,7 @@
var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone.
var/tmp/digest_mode = DM_HOLD // Whether or not to digest. Default to not digest.
- var/tmp/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY) // Possible digest modes
+ var/tmp/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY, DM_FATTEN) // Possible digest modes
var/tmp/mob/living/owner // The mob whose belly this is.
var/tmp/list/internal_contents = list() // People/Things you've eaten into this belly!
var/tmp/is_full // Flag for if digested remeans are present. (for disposal messages)
diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
index 965d2ff3..2b46c376 100644
--- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
@@ -40,7 +40,7 @@
var/is_wet = TRUE // Is this belly inside slimy parts?
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
- var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY,DM_ABSORB,DM_UNABSORB) // Possible digest modes
+ var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY,DM_ABSORB,DM_UNABSORB, DM_FATTEN) // Possible digest modes
var/tmp/mob/living/owner // The mob whose belly this is.
var/tmp/digest_mode = DM_HOLD // Current mode the belly is set to from digest_modes (+transform_modes if human)
@@ -227,6 +227,11 @@
items_preserved.Cut()
owner.update_icons()
+ var/mob/living/carbon/predator = owner
+ if(iscarbon(predator))
+ if(digest_mode == DM_FATTEN && predator.fat_hider == src)
+ predator.fat_show()
+
return count
// Release a specific atom from the contents of this belly into the owning mob's location.
@@ -273,6 +278,17 @@
if(!silent)
owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
owner.update_icons()
+
+ var/mob/living/carbon/predator = owner
+ if(iscarbon(predator))
+ if(digest_mode == DM_FATTEN && predator.fat_hider == src)
+ var/preys_fatness = 0
+ for(var/mob/living/carbon/prey in contents)
+ preys_fatness += prey.fatness
+ if(preys_fatness > predator.fatness)
+ predator.fat_hide(preys_fatness, src)
+ else
+ predator.fat_show()
return TRUE
// Actually perform the mechanics of devouring the tasty prey.
diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
index 2d7dbaa2..f52c6073 100644
--- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
@@ -62,6 +62,25 @@
if(digest_mode == DM_HOLD)
return SSBELLIES_PROCESSED
+///////////////////////////// DM_FATTEN /////////////////////////////
+ if(digest_mode == DM_FATTEN)
+ var/preys_fatness = 0
+ var/mob/living/carbon/predator = owner
+ if(iscarbon(predator))
+ for(var/mob/living/M in contents)
+ var/mob/living/carbon/prey = M
+ if(iscarbon(prey) && predator.fatness_real)
+ prey.adjust_fatness(predator.fatness_real * 0.01, FATTENING_TYPE_FOOD)
+ predator.adjust_fatness(-predator.fatness_real * 0.01, FATTENING_TYPE_FOOD)
+ predator.nutrition -= 5
+ preys_fatness += prey.fatness
+
+ if(!predator.fat_hider || predator.fat_hider == src)
+ if(preys_fatness > predator.fatness)
+ predator.fat_hide(preys_fatness, src)
+ if(predator.fat_hider != src)
+ predator.fat_show()
+
//////////////////////////// DM_DIGEST ////////////////////////////
else if(digest_mode == DM_DIGEST)
if(HAS_TRAIT(owner, TRAIT_PACIFISM)) //obvious.
diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
index ae7da895..19ea3004 100644
--- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
@@ -119,6 +119,8 @@
spanstyle = "color:purple;"
if(DM_DRAGON)
spanstyle = "color:blue;"
+ if(DM_FATTEN)
+ spanstyle = "color:orange;"
dat += " ([B.contents.len])"
@@ -731,4 +733,4 @@
user.client.prefs_vr.feeding = user.feeding
//Refresh when interacted with, returning 1 makes vore_look.Topic update
- return 1
\ No newline at end of file
+ return 1