Mods / Max's Simple Starvation
Author: MaxVZD
Side: Both
Created: Jan 9th at 10:54 AM
Last modified: Jan 13th at 9:56 AM
Downloads: 337
Follow Unfollow 62
Recommended download (for Vintage Story 1.21.0 - 1.21.6):
simplestarvation_1.0.2.zip
1-click install
BEFORE INSTALLING PLEASE READ THIS!!!
This mod has not yet been tested across a full playthrough and balancing may be needed. You can tweak many of the values in the config.
It should be safe to install or uninstall mid-playthrough.
I've done some testing with multiplayer and everything should be working as expected.
If you try the mod, please report any bugs you encounter using the issue tracker above.
If there's anything that you find is annoying or unbalanced throughout a larger playthough please let me know in the comments.
ty
Intro
This mod introduces a slightly more nuanced hunger system into the game without overcomplicating gameplay or slipping into simulation territory. The goal was to aim for compatibly with as many things as possible (stuff like ExpandedFoods etc) so it tries to work with the vanilla systems.
Instead of damage at 0 saturation:
- The saturation bar now acts as your stomach contents
- As saturation decreases food is digested and converted into body weight to act as a store of saturation.
- As your weight changes a configurable list of buffs and debuffs are applied to your character.
Don't eat too much in one go or you'll spew and empty your stomach contents all over the floor, losing your current saturation.
You can see the current bonuses and penalties can be seen in the character panel ('C' by default).
What This Mod Does
- Removes hunger damage when saturation reaches 0
- Removes saturation loss delay after eating
- Stops saturation being a factor in calculating health regen
- Allows eating past Max Saturation
- Forces full consumption of meals so no partial portions
- Tracks eaten saturation and converts it to body weight
- Adds buffs/debuffs depending on the current body weight
- Burns body weight over time, factoring in
- Sprinting
- Sleeping
- Standing still
- (Configurable) Inflicts lethal damage when the critical weight is reached
What This Mod Doesn't Do
- Touch anything to do with nutrition (still applies health bonuses with a varied diet)
- Change any saturation values
Bonuses and Penalties
Here are the default bonuses and penalties:
The value of the buff is linearly interpolated between points. If it's the first in the list then it'll assume a 0 at the critical weight and fade in from there but if it's the last weight in the list it'll stick at the max value unless you add buff with a value of 0 at the MaxWeight.
For example imagine you've created a custom list that has a value of 1 at 60kg and a value of 2 at 80kg the values would look like this:
When player weight is 40kg then the value would be 0
When player weight is 50kg then the value would be 0.5
When player weight is 60kg then the value would be 1
When player weight is 70kg then the value would be 1.5
When player weight is 80kg and above then the value would be 2
Commands
There are two debug commands you can use if things go awry or you want to do some testing:
/weight set <weight in kg>
/weight playerset <player name> <weight in kg>
Configuration
This mod is highly configurable and will need some tweaking initially - the intention is to find a sweetspot after a few people have tried it 😎
Here are the properties you can change along with their defaults and what they do:
- HealthyWeight (75) - Used to calculate how long a healthy person would take to starve using ExpectedSaturationPerDay and NumberOfMonthsToStarve.
- CriticalWeight (40) - The lowest weight you can be before you suffer organ failure and damage starts being applied.
- MaxWeight (100) - The maximum weight you can be.
- ExpectedSaturationPerDay (4000) - Roughly how much saturation per day you'd expect to eat to maintain your weight.
- NumberOfMonthsToStarve (1.5) - Roughly how long it would take to starve from HealthyWeight to CriticalWeight. This is then used to calculate how much saturation that would be like this:
ExpectedSaturationPerDay * World.Calendar.DaysPerMonth (world gen days per month setting) * NumberOfMonthsToStarve;​ - ThrowUpThreshold (250) - How much saturation you can eat over the max saturation before you vomit.
- ApplyWeightBonuses (true) - Whether or not the mod will apply weight bonuses.
- WeightLossOnDeath (50) - What percentage of your current weight that you'll lose on death (100kg -> 70kg etc).
- LowestPossibleWeightOnRespawn (45) - A cap on how low you can go when you die and lose bodyweight.
- PlayerStartingWeight (60) - The weight that the player spawns in with.
- WeightBonuses - The bonuses applied to the player. This one is a little more complicated and I'll explain in the next section.
- StoodStillModifier (0.25) - How much less energy the player burns when standing still. By default 4 times less.
- SleepModifier (0.25) - How much less energy the player burns when sleeping. By default 4 times less.
- SprintModifier (0.1) - How much more energy the player burns when sprinting. By default 10% more.
- AlwaysConsumeFullMeal (true) - Whether or not the player will always eat the full meal or leave portions.
- ApplyFatalDamageOnCriticalWeight (true) - Whether the player can die from hunger.
Updating the Bonuses
The bonuses that are applied are also configurable and the GUI should automatically update to accomodate them. The bonus types past 14 are not properly supported but I may add them if there's interest. Here are the values for each bonus that can be applied:
- WalkSpeed = 0
- MiningSpeed = 1
- MaxHealth = 2
- MeleeDamage = 3
- RangedDamage = 4
- HealingEffectiveness = 5
- HungerRate = 6
- RangeWeaponAccuracy = 7
- RangedWeaponsSpeed = 8
- RustyGearDropRate = 9
- AnimalSeekingRange = 10
- BowDrawStrength = 11
- GliderLiftMax = 12
- GliderSpeedMax = 13
- JumpHeightMul = 14
--Not supported but might still work--
- WholeVesselLootChance = 15
- TemporalGearRepairCost = 16
- AnimalHarvestTime = 17
- MechanicalsDamage = 18
- AnimalLootDropRate = 19
- ForageDropRate = 20
- WildCropDropRate = 21
- VesselContentsDropRate = 22
- OreDropRate = 23
- ArmorWalkSpeed = 24
- ArmorDurabilityLoss = 25
You then choose the bonus type, value and weight to be applied at and add it to WeightBonuses. Check the default config if you're not used to JSON
e.g A 30% boost to melee damage at 65kg
{
"Weight": 65.0,
"Type": 3,
"Value": 0.3
},
Incompatibilities
Currently soft incompatbility with Hydrate or Diedrate as it overwrites OnEntityReceiveSaturation which means that you're unable to eat past max sat and vomit. Currently working on it though as I'd quite like to use them together personally :)
Please let me know if you find anything else 🕺
| Mod Version | Mod Identifier | For Game version | Downloads | Released | Changelog | Download | 1-click mod install* |
|---|---|---|---|---|---|---|---|
| 1.0.2 | simplestarvation | 163 | Jan 13th at 9:56 AM | simplestarvation_1.0.2.zip | 1-click install | ||
|
Added units to translation and made fatal damage at critical weight toggleable | |||||||
| 1.0.1 | simplestarvation | 58 | Jan 11th at 6:43 PM | simplestarvation_1.0.1.zip | 1-click install | ||
|
Added full consumption of meals as an optional part of the mod | |||||||
| 1.0.0 | simplestarvation | 70 | Jan 10th at 3:03 PM | simplestarvation_1.0.0.zip | 1-click install | ||
|
improved client/server relations | |||||||
| 0.0.1 | simplestarvation | 46 | Jan 9th at 4:36 PM | simplestarvation_0.0.1.zip | 1-click install | ||
|
init | |||||||
MaxVZD Thanks! Yeah, I'm pretty picky about my nutrients and in my modpack that's focused on hardcore survival, I figured I would need some more realistic macronutrient representation to really sell the whole thing. I plan on making more in the future, just haven't had any time since the holidays!
And yeah, those sound like the most elegant solution. It's definitely different to die of overabundance than it is to die for want of calories and nutrients. The image of a 120kg seraph fleeing a bear (or a wolf, or a lion, or even a shiver) is REALLY funny, so that's good enough for me!
Darcy Cheers! Have already reached out to them and they ended up re-writing the transpiler that was intefering so hopefully there'll be a release in the next day or two.
As for death by beetus it's definitely something to think about but I think it'd mostly be through changing the default status effects. For instance a 120kg seraph who's incredibly heavy and slow (--walkspeed), incredibly tasty (++AnimalSeekingRange) and is very unhealthy (--max health) isn't gonna last long against a bear. How's that for comorbid conditions ;)
Also great mods, those two things have always bugged me
Might look into using this instead of Expanded Stomach on my hardcore survival modded world. I like what you have going on. Probably need to wait until the compat with HoD is fixed though, hope you find a solution soon! Def talk to Chrono and the HoD team if you haven't already, they're super cool and very active and helpful when it comes to troubleshooting and compatibility with other mods.
Also, my own suggestion sight-unseen having not played with the mod and its configs - it would be cool to see maximum weight also incur health penalties at some point, so you can't just be the bad guy from Dune. Knock knock, it's diabetes. I'm not sure how feasible this would be though, since death from obesity is usually more about comorbid conditions than it is direct organ failure/malnutrition, but that's also me being a nerd and overthinking it probably.
festivneer Thanks for the suggestion, unfortunately that's where the design philosophy differs a little with expanded stomach and I want to try keep starvation as simple as possible. Expanded stomach looks like a great mod though if that's what you're after
if i may suggest, how about a system for stomach capacity growth/shrinkage?
expanded stomach has a system where if you constantly overeat, you'll gain more capacity (and not overeating shrinks it back to normal)
could see something similar in this mod, staying near full stomach capacity gives you more space as time goes on while leaving your stomach empty for days on end will slowly shrink it
MaxVZD Glad you like it! The more I can prevent the harmonica alarm from going off, the better 😂
Krevro That's a really good idea, currently the penalties/bonuses are flat numbers so you'd have to tweak it to set a max health penalty to whatever the world gen settings are (maybe taking into account nutrient boosts as well) but that could be annoying. It's a cool idea though and I'll have a think about how it could be implemented (percentage bonuses/penalties maybe so it remains configurable through WeightBonuses 🤔). I like it more than flat damage over time.
Hey, cool idea! I'll use this on my next playthrough!
MaxVZD Thanks for the response! Im glad it doesnt prevent starvation. I wonder if instead of damage it could reduce max HP until youre <1hp and eventually 0. Maybe this would make it so you have the "delirious" low HP effect without the constant damage ticks, until you just collapse. I dont know if that effect is based on percent of max hp or an hp threshold, so might not work. Thanks for the great mod!
Ok i love this mod, this is such a cool idea and great implementation, good work!
MiraLeaps Number of months to starve is used in the calculation to workout how much saturation you'd have to eat to drop from healthy weight to critical weight. It takes the ExpectedSaturationPerDay * world.Calendar.DaysPerMonth * NumberOfMonthsToStarve.
This is then later used to workout how much saturation = a kilo (or whatever unit you choose) but I digress - yeah, it takes a look at the worldgen settings and takes that into account. I'll update the description to give a little more info. Also I'd be interested in seeing what config values you end up settling on if that's cool?
Oh cool, tysvm!
Question: Number of months to starve....what figure is that based on, the default days per month or will it take into account custom settings? We use a "lunar month" for ours (28 days) and I just wanted to make sure I'm tuning this right so our weight loss stuff is accurate.
I've been tweaking our systems a bit for that perfect hunger-rate to weight sustain ratio
Krevro When you reach critical weight it does start applying damage but that's easily put behind a config option which I should have done now that I'm thinking about it. I'd like to maybe expand this section of the mod with semi-permanent debuffs for reaching critical weights but applying some damage was the simplest option for now.
MiraLeaps Thanks so much for the kind words, made my day! I can add the units to the language file so that they are easily updatable. They probably should have been in there in the first place.
This is such a great mod (we played with it today for a few hours and I gotta say, I love it far more than default and other stuff I've tried.
An idea did come to mind: For people playing with non-seraph stuff like Elves and Goblins and Kobols, it might be a cool feature to have a config switch for just the language of the mod (and maybe the units?). I did this with the language by just editng the language file and changing weight to "Body Mass Scale" (though I couldn't get rid of the kg) so that it would be something equal but relevant...and we could hand-wave our Kobold Blackguard weighing 90kg lol. Just as a thought for expanded community RP compatibility if something like that could be added into the config or whatever.
like I said, this mod has deffo found a home with us. After a bit of fine tuning to get the right 'feel' of hungry for lunch, hunger for dinner.....it is -perfection-.
Edit: Also: amazing job on the customization that's already there....it was so super easy to adjust the weight bonus/negs and add even more nuanced transitions to the whole thing. Bravo!
Does this mod prevent death by starvation? If you go to the lowest weight do you start dying?
Slikkelas Nice! I always appreciate a mod with a good configuration x)
Protobean I don't see anything uncompatible other than the harmony patch preventing damage when satiety hits 0. Turn it off in SleepNeed with the "OnlyDieFromNoEnergy" config setting and it should all be good :)
I'm gonna try test this mod alongside, because it seems awesome! :D
Protobean It's certainly on the cards, my main goal atm is putting together a modlist with stuff like this and a sleep need mod included. However I need to do some testing of different mods to see how they interact with each other.
Right off the bat I can see that SleepNeed does some stuff with saturation to stop hunger damage which is a little hacky so I'd have to get in contact and perhaps we can work something out. No promises but it's definitely on my mind!
As the mod consolidates itself and balances, are you thinking of adding compatibility with others mods such as SleepNeed?
Pdawg That had definitely crossed my mind, I was thinking of something similar to Project Zomboid that tracks your overall direction. I'll take a look at implementing soon™ hopefully
I have a feeling the default settings might be a little brutal at the minute if I'm being honest and they'll definitely need tweaking. The amount of weight you lose per hour is calculated as var lossPerHour = Config.ExpectedSaturationPerDay / hoursPerDay * hungerRate * GlobalConstants.HungerSpeedModifier; so lowering the ExpectedSaturationPerDay in the config should help your seraph fatten up a bit. One more thing I should mention is that this will slightly change the way the body weight is calculated so it might jump a little when you change it but that's expected.
Hi, great mod, thanks for making it!
Just one request, would it be possible to see the daily requirement for the needed food as to not lose weight? My Seraph keeps loosing weight and I'm not sure why (as I keep eating two meals in the morning and evening).
I'm imagining and additional info on the weight stats which would show the number of needed saturation to keep weight, or just a "+" or "-" for indicating enough or not enough intake.
altug pushed v1.0.1 :)
Thanks for the update, working great so far, is it possible to make "Forces full consumption of meals so no partial portions" optional by the config file?
Finally, not-annoying way to play with hunger in this game. Blackguard is more enjoyable, huzzah!
altug After doing some testing on a server locally I have spotted the issue and updted. I'm happy with how it's working in multiplayer so have decided to release it as 1.0.0. Please let me know if you find anything else
altug Thanks for trying it! I'll take a look at testing multiplayer (I'm guessing that's what you mean by side) this weekend as I have a quiet one.
As for the buffs interpolation: That's something I should definitely mention in the mod description thanks for asking. Buffs are linearly interpolated between points. If it's the first in the list then it'll assume a 0 at the critical weight and fade in from there but if it's the last weight it'll stick.
So imagine a list of buffs where 60kg=1 and at 80kg=2 with the default max/critical weights
when player weight is 40kg then buff = 0
when player weight is 50kg then buff = 0.5
when player weight is 60kg then buff = 1
when player weight is 70kg then buff = 1.5
when player weight is 80kg and above then buff = 2
On my side, weight is not calculating during gameticks, it only updates once on game load.
In your buffs/debuffs table, there’s no data for a weight of 50. Does this mean values between listed weights are automatically interpolated? For instance, would walk speed be -0.15 at 50? Also what about weights that are not specified, like 55?
going to be watching this for a mature version in the future, keep it up
Cool idea :D