Howdy all! I was going to wait a bit before posting here but have decided to share a bit of what I’ve been working on earlier so that it’s not swept under the rug.
As the title suggests, I’m working on a Rimworld mod that adds a weight gain mechanic. However I intend for this mod to be rather large and comprehensive. The original thread where it was discussed is here:
To summarize the thread I’ll list what I’ve done and what I plan to implement.
- Weight is measured and it's effects administered to pawn's through a Hediff that is applied at pawn generation.
- The hediff currently affects movement speed, need for rest, need for food and manipulation (only at rather high stages)
- When a pawn eats, a factor of the nutrition value of the food is applied as severity toward the hediff. (weight gain!) In the future, the plan is to rework this around the fullness and digestion system I'm working on (explained below)
- Pawn appearance is changed dynamically depending on Hediff severity.
- Custom bodytypes and weight levels is likewise not an issue.
- To get around one of Rimworld's rendering limitations, I'm using the Humanoid Alien Races framework to adjust render settings. This allows for any size of pawn!
- One of the benefits of using this framework is that it allows for many custom features as well as alien race support (with a simple patch). Custom heads, thought filters, apparel and trait restrictions as well as custom backstory assignments are all made easily with this framework. One more thing, which I know one person here is dying for is custom beds! Yes, this means blob colonists can become beds!
- A complex system for managing pawn's diets allows for fine tuning and adjustment allowing for both weight gain AND weight loss. This is done through a new GUI element with dual sliders. It is currently in development, but mostly just in need of polishing.
- Hunger Thresholds – These are when the pawn seeks food. One and only one of these will determine this, but you must have one or the other. You can toggle between the two, as they serve different purposes. The targets are where pawns eat up to. Valid Threshold/Target combinations are Nutrition/Fullness, Fullness/Fullness and Nutrition/Nutrition.
- NutritionHungerThreshold - This is similar to Vanilla. You pick a level that the pawn will seek nutrition. Vanilla Rimworld has this value set at 45% for humans. Setting this lower means that the pawn will only eat when they are more urgently hungry, and will eat until either the FullnessTarget or NutritionTarget.
- FullnessHungerThreshold - This method is very different from vanilla. Pawns will seek food when their stomach reaches a certain capacity. This means a pawn’s nutrition should never be below full. If you choose this method you must use the FullnessTarget.
- NutritionTarget - A pawn using the nutrition target will try to eat no more than this point. They will seek the appropriate amount of food to eat to reach this as closely as possible in one meal. In vanilla rimworld, this is 100%. By setting the nutrition target low, a pawn can lose weight.
- FullnessTarget - A pawn will try to eat up to a certain fullness.
- DigestionRate - When a pawn digests food, it adds to the nutrition stat as well as their weight. This rate determines that speed.
- HungerRate - The pawn will always lose food at this rate.
- Custom recipes for four larger meal types have been added to the appropriate workbenches.
- The current weight limit goes up to 3000lbs. I know that's rather high, but think of it more as the hard ceiling that you can go toward but are unlikely to reach, and even then only with appropriate research and augments. Right now many of the debuffs around being large are centered on mobility. The movement debuff hits -100% at 840, but doesn't pass 120% until 1200lbs. This means that basic bionic implants to the legs could keep you mobile for a while beyond normal immobility.
- Weight is expressed both in appearance and in the health tab. In addition, I've developed the ability to use the Mote system to display floating text in-game for future use with a scale.
- The internal tracking of a pawn's mass is updated as well. This is what you see in the pod launchers and caravans as well as sometimes in their info tabs.
- I've been researching how Rimworld's work code actually functions and it's quite elaborate but I finally understand it enough to add new work types.
- Custom furniture including a feeding tube are in the works. I've made (albeit simple) custom graphics for it and learned how Rimworld's texture masking works.
- A tentatively named feeding and feeder Jobs have been added and their functionality is currently under development.
This system uses the following features and terminology:
The stuffing mechanic is as follows:
- Hunger Threshold (Minimum allowable fullness)
- When pawns reach this level they will try to eat until they reach target fullness.
- The Hunger Threshold must always be less than Target Fullness.
- Target Fullness
- This is the amount that pawns will try to eat until, when they do. Once they fall below the Hunger Threshold, They will eat until they reach this point (or close to it).
- Target Fullness can be above the Soft Limit, but never above the Hard Limit unless you want to kill them .
- Soft Limit
- The Soft Limit is when a pawn reaches what most would consider “full”. This can also be thought of as stomach capacity.
- After this point, pawns earn varying levels of the stuffing hediff.
- When above the Current Fullness is above the Soft Limit, the Soft Limit slowly will rise. This represents stomach stretching.
- When Current Fullness is above the Soft Limit, pawns will get mood penalties or buffs depending on their attitude toward stuffing.
- Hard Limit
- Hard Limit is always x% more than Soft Limit. Naturally, then, the Hard Limit must always be above the Soft Limit.
- Hard Limit is when the pawn dies or their stomach is ruptured due to overfilling.
- Target Fullness should only ever be above Hard Limit if the goal is to kill the pawn.
- Current Fullness
- This represents the amount of fullness a pawn has. Generally, this should not be above the target fullness.
- This value dictates what level of the stuffing hediff the pawn gets.
Features I Plan on adding:
- Traits will be dynamically added as in the mod "Bad People". At the moment traits that make pawns sloppier when they eat, enjoy it more or tend to overeat come to mind.
- Restricting when pawns can overeat based on colony abundance/scarcity of food.
- Prisoner force feeding! Once the base feeder work types are finished this will be very easy.
- New tech to assist in mobility and health for larger pawns.
- I'd like to add overeating as a recreation activity certain pawns are allowed. The feeding tubes could be used for this.
- Right now the only indication of a pawn's status is their health tab and (potentially) their appearance. Are there any other ways you'd like to see their weight expressed?
Features I would like to add eventually
These are things I do want to add, but will come after the initial release and are of relatively low priority.
- Ideologies surrounding fat and weight gain + interactions with existing memes surrounding diet.
I wasn’t going to post outside of the thread, but I want to maintain awareness of my mod as well. I intend for this to be an ambitious and long term project but I am aware of the dangers of over ambition. With this in mind I intend to release it in parts/modules once the core-est features are done. Right now I need sprites, so if anyone is willing that’d be greatly appreciated. Otherwise I will eventually draw my own. I’m better at coding than I am at drawing however so it would take quite a bit of my time to do so.
Shortly I plan on launching a discord so that I can get more direct and swift feedback on ideas. Let me know what you guys think!
Here’s the link to the Discord!