From 818d6dcf2ee89513793cba612362bdaf42484a52 Mon Sep 17 00:00:00 2001
From: Alphas00 <154434082+Alphas00@users.noreply.github.com>
Date: Sun, 26 May 2024 01:31:56 +0200
Subject: [PATCH 1/4] Fatten mode vore
Added fatten vore belly mode. Adds 1% of predator's fatness to the preys, making them hungrier.
Fatten mode also uses fatness hiding to display the combined fatness of preys as the fatness of the predator while holding them in a fatten mode belly
---
code/__DEFINES/voreconstants.dm | 1 +
.../code/modules/vore/eating/belly_dat_vr.dm | 2 +-
.../code/modules/vore/eating/belly_obj_vr.dm | 18 +++++++++++++++++-
.../code/modules/vore/eating/bellymodes_vr.dm | 19 +++++++++++++++++++
.../code/modules/vore/eating/vorepanel_vr.dm | 4 +++-
5 files changed, 41 insertions(+), 3 deletions(-)
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
From c7ae2db240c77faa81dec1bf7ee4aaf7616fe8d9 Mon Sep 17 00:00:00 2001
From: Alphas00 <154434082+Alphas00@users.noreply.github.com>
Date: Sun, 26 May 2024 09:12:29 +0200
Subject: [PATCH 2/4] Voracious Trait fullness
Voracious trait now also modifies fullness added values to make the eater able to eat/drink twice as much. Also makes fullness decay twice as fast
---
GainStation13/code/mobs/chocoslime.dm | 2 ++
code/datums/traits/good.dm | 2 +-
code/modules/food_and_drinks/drinks/drinks.dm | 5 ++++-
code/modules/food_and_drinks/food/snacks.dm | 2 ++
code/modules/mob/living/carbon/human/species.dm | 2 ++
5 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/GainStation13/code/mobs/chocoslime.dm b/GainStation13/code/mobs/chocoslime.dm
index 8c83c1a8..c4e90e05 100644
--- a/GainStation13/code/mobs/chocoslime.dm
+++ b/GainStation13/code/mobs/chocoslime.dm
@@ -103,4 +103,6 @@
if(L.reagents)
if(!L.is_mouth_covered(head_only = 1))
L.reagents.add_reagent(food_fed, food_per_feeding)
+ if(HAS_TRAIT(L, TRAIT_VORACIOUS))
+ fullness_add = fullness_add * 0.67
L.fullness += (fullness_add)
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index 72a77af9..d55abb7b 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -231,7 +231,7 @@
/datum/quirk/voracious
name = "Voracious"
- desc = "Nothing gets between you and your food. You eat twice as fast as everyone else!"
+ desc = "Nothing gets between you and your food. You eat twice as fast, get half as full and recover from stuffing twice as fast!"
value = 1
category = CATEGORY_FOOD
mob_trait = TRAIT_VORACIOUS
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 762fef40..39ec4a80 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -53,7 +53,10 @@
checkLiked(fraction, M)
reagents.reaction(M, INGEST, fraction)
reagents.trans_to(M, gulp_size)
- M.fullness += min(gulp_size, reagents.total_volume) // GS13 drinks will fill your stomach
+ if(HAS_TRAIT(M, TRAIT_VORACIOUS))
+ M.fullness += min(gulp_size * 0.67, reagents.total_volume * 0.67)
+ else
+ M.fullness += min(gulp_size, reagents.total_volume) // GS13 drinks will fill your stomach
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
return 1
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 284b996a..f74a7f95 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -140,6 +140,8 @@ All foods are distributed among various categories. Use common sense.
if(M.satiety > -200)
M.satiety -= junkiness
playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
+ if(HAS_TRAIT(M, TRAIT_VORACIOUS))
+ bitevolume = bitevolume * 0.67
M.fullness += bitevolume;
if(reagents.total_volume)
SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index a3297521..08782217 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1502,6 +1502,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.adjust_fatness(nutritionThatBecomesFat, FATTENING_TYPE_FOOD)
if(H.fullness > FULLNESS_LEVEL_EMPTY)//GS13 stomach-emptying routine
var/ticksToEmptyStomach = 20 // GS13 how many ticks it takes to decrease the fullness by 1
+ if(HAS_TRAIT(H, TRAIT_VORACIOUS))
+ ticksToEmptyStomach = ticksToEmptyStomach * 0.5
H.fullness -= 1/ticksToEmptyStomach
if (H.fullness > FULLNESS_LEVEL_BLOATED) //GS13 overeating depends on fullness now
if(H.overeatduration < 5000) //capped so people don't take forever to unfat
From 5e42b2c42e152a4bf56f2011c914e222cbfa67c3 Mon Sep 17 00:00:00 2001
From: Alphas00 <154434082+Alphas00@users.noreply.github.com>
Date: Sun, 26 May 2024 09:35:30 +0200
Subject: [PATCH 3/4] Update good.dm
---
code/datums/traits/good.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index d55abb7b..9f298b54 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -231,7 +231,7 @@
/datum/quirk/voracious
name = "Voracious"
- desc = "Nothing gets between you and your food. You eat twice as fast, get half as full and recover from stuffing twice as fast!"
+ desc = "Nothing gets between you and your food. You eat and recover from stuffing twice as fast, while getting less full!"
value = 1
category = CATEGORY_FOOD
mob_trait = TRAIT_VORACIOUS
From 67b9d0e275f90b53db0026c759a86e2b4dd19322 Mon Sep 17 00:00:00 2001
From: Alphas00 <154434082+Alphas00@users.noreply.github.com>
Date: Sun, 26 May 2024 13:42:15 +0200
Subject: [PATCH 4/4] Fatten belly Tweak & Stuckage Pref
Tweaked fatten mode vore belly, transfer amount to 2%, needs some fatness to work, won't make predator starve, just keep them hungry
Added stuckage pref, it and XWG are now under "GS13 Gameplay Preferences"
---
.../code/modules/client/preferences/preferences.dm | 2 ++
code/game/machinery/doors/airlock_types.dm | 6 +++---
code/modules/client/preferences.dm | 5 +++++
code/modules/client/preferences_savefile.dm | 2 ++
modular_citadel/code/modules/vore/eating/bellymodes_vr.dm | 8 +++++---
5 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm
index f8166f8f..c104c18a 100644
--- a/GainStation13/code/modules/client/preferences/preferences.dm
+++ b/GainStation13/code/modules/client/preferences/preferences.dm
@@ -15,6 +15,8 @@
var/weight_gain_viruses = FALSE
///Extreme weight gain
var/weight_gain_extreme = FALSE
+ ///stuckage
+ var/stuckage = FALSE
///Does the person wish to be involved with non-con weight gain events?
var/noncon_weight_gain = FALSE
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 34107c32..c449eeed 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -12,7 +12,7 @@
if(!istype(L))
return ..()
- if(L.fatness > 5000)
+ if(L.fatness > 5000 && L.client?.prefs?.stuckage)
if(rand(1, 3) == 1)
L.doorstuck = 1
L.visible_message("[L] gets stuck in the doorway!")
@@ -22,7 +22,7 @@
L.Knockdown(1)
return ..()
- else if(L.fatness > 3000)
+ else if(L.fatness > 3000 && L.client?.prefs?.stuckage)
if(rand(1, 5) == 1)
L.doorstuck = 1
L.visible_message("[L] gets stuck in the doorway!")
@@ -35,7 +35,7 @@
to_chat(L, "With great effort, you manage to squeeze your massive form through \the [src]. It's a tight fit, but you successfully navigate the narrow opening, barely avoiding getting stuck.")
return ..()
- else if(L.fatness > 1890)
+ else if(L.fatness > 1890 && L.client?.prefs?.stuckage)
if(rand(1, 5) == 1)
L.visible_message("[L]'s hips brush against the doorway...")
to_chat(L, "As you pass through \the [src], you feel a slight brushing against your hips. The [src] frame accommodates your form, but it's a close fit..")
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 0fc618dd..a04265a6 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1059,6 +1059,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Weight Gain - Weapons:[weight_gain_weapons == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Magic:[weight_gain_magic == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Viruses:[weight_gain_viruses == TRUE ? "Enabled" : "Disabled"]
"
+
+ dat += "