|“||‘If more of us valued food and cheer and song above hoarded gold, it would be a merrier world.’ – Thorin Oakenshield||”|
|“||‘All we have to decide is what to do with the time that is given to us.’ – Gandalf the Grey||”|
–The Fellowship of the Ring
This proposal replaces main parts related to food decay as proposed in this thread:
All foodstuffs, brews and draughts, new soused variants of meats and fish.
More realistic immersive gameplay and more hardship for the player by establishing a more meaningful economy relating to foodstuffs, salt and farmhands. Also see this motivation given below.
- All fresh food and other edible items decay.
- Decay can be reduced by either treatment through sousing or other further processing (including consumption).
- Salt and soused foodstuffs will become (more) valuable trade stuffs and replace raw meats and fish.
- Keep it as simple as possible.
- Features as complex as these, with a potentially high impact on gameplay, should be toggleable in the config.
When a drink or food item (incl. placeable ones like cakes, pies and pastries) is first picked up by a player and put in his inventory, the item is allocated to a unique identifier in a dedicated food items decay database. This would be the most player-friendly, and recommended, definition of the 'production event & time' for a food item subject to decay.
Alternatively, the 'production event & time' could also be defined as the moment an item in an oven or barrels is produced, but I feel that would cause too much inconvenience for both players and coder. Consequence of not doing this will be that players can keep cooked food and brews in ovens and barrels indefinitely unless they have put them in themselves.
So, upon 'production' the items unique ID (#), its food type name and the identification / production timestamp: Production Time (PT), are all stored. That PT timestamp is determined by the games internal ME calendar, and is registered in ME days. Upon any subsequent event when the food item is shown in a player GUI, the mod will check the difference between actual time and the items PT, and register the food items location (could be placed anywhere by player before it's consumed). The calculated, actual time difference is called the Shelf Life (SL) and that is then compared with the stored, game/server bound, value for the expiration time (ET) determined for the type of food item. When the set ET for the items food type is smaller than the SL of a food item upon showing up in a GUI ('player checks for use'), the item dissappears and is replaced by a new item called 'Rotten Food'.
The above description assumes a very simple ET versus SL comparison. Alternatively, a gradual increment of the chance of decay can be considered, as indicated below.
Expiration Time & Decay Period
A) Simplest form: An Expiration Time (ET) per food item type is defined. Upon reaching a SL equal to ET the item rots with 100% chance.
B) More realistic mechanism: Each food type has both an ET and a Decay Period. Upon reaching a SL equal to ET-DP/2, the chance that the item rots increases linearly from 0 to 100%. Upon reaching a shelf life of ET, the chance that an item will rot is 50%. Upon reaching a shelf life of ET+DP/2, the chance of an item to rot is 100%.
ET=Inf.;DP=0d;SL=Inf.: sugar, salt and lembas: these will not decay!
ET=576d;DP=288d;SL=432-720d: marchpane, wheat stored in hay bales and strong (> 12% alcohol) alcoholic brews. These products can remain edible for 4 ME years in Forodwaith!
ET=432d;DP=216d;SL=324-540d: roast chestnuts, (dried) Fangorn and Morgul herbs, athelas, maple sirup, corned red meats, pickled fish, pickled other meats, like Gammon, and light (<=12% alcohol) alcoholic brews.
ET=384d;DP=192d;SL=288-480d: raw grains (corn and wheat), dates, cane, almonds, raisins, mallorn nuts, draughts and non-alcoholic brews.
ET=288d;DP=144d;SL=216-360d: poison (bottled), chestnuts, pumpkins, olives and eggs.
ET=144d;DP=72d;SL=108-180d: pastries, pancakes, (dried) mushrooms, fermented spider eye, types of bread and fresh vegetables (carrot, potato, yam, leak, turnip).
ET=96d;DP=48d;SL=120-168d:cakes and pies.
ET=48d;DP=24d;SL=36-60d: cooked mammal meat and fresh temperate fruits, jungle remedy, citrus fruits and berries.
ET=24d;DP=12d;SL=18-30d: cooked chicken and fish, suspicious meat, torog stew, cooked corn, lettuce and fresh tropical fruits like banana, mango and melon.
ET=12d;DP=6d;SL=9-15d: raw meats, rotten flesh, fish, cooked potatoes, yam and turnip, spider eye, milk, fruit juices and soup.
Note that 1 ME month = 30 ME days! The ET's are very generous!
List of indicative values for the Expiration Times, Decay Periods and Shelf Lives of most food items, in irl time.
ET=Inf.;DP=0d;SL=Inf.: sugar, salt and lembas: these will not decay!
ET=384h;DP=192h;SL=12-20d: marchpane, wheat stored in hay bales and strong (> 12% alcohol) alcoholic brews.
ET=288h;DP=144h;SL=9-15d: roast chestnuts, (dried) Fangorn and Morgul herbs, athelas, maple sirup, corned red meats, pickled fish, pickled other meats, like Gammon, and light (<=12% alcohol) alcoholic brews.
ET=256h;DP=128h;SL=8-14d: raw grains (corn and wheat, including hay bales), dates, cane, almonds, raisins, mallorn nuts, draughts and non-alcoholic brews.
ET=192h;DP=96h;SL=6-10d: poison (bottled), chestnuts, pumpkins, olives and eggs.
ET=96h;DP=48h;SL=3-5d: pastries, pancakes, (dried) mushrooms, fermented spider eye, types of bread and fresh vegetables (carrot, potato, yam, leak, turnip).
ET=64h;DP=32h;SL=2-3d:cakes and pies.
ET=32h;DP=16h;SL=24-40h: cooked mammal meat and fresh temperate fruits, jungle remedy, citrus fruits and berries.
ET=16h;DP=8h;SL=12-20h: cooked chicken and fish, suspicious meat, torog stew, cooked corn, lettuce and fresh tropical fruits like banana, mango and melon.
ET=8h;DP=4h;SL=6-10h: raw meats, rotten flesh, fish, cooked potatoes, yam and turnip, spider eye, milk, fruit juices and soup. Note that 8h = 12 ME days!
Note that this system will greatly enhance the effective value (and use!) of food items like lemabs and brown ent draught.
These items are edible but only fill one hunger point, give no saturation, and give nausea and hunger effect for 30 seconds. Rotten Food can be put to meaningful use by making crops grow faster (in a recipe to create ‘fertilizer’, replacing nitre) and by feeding it to pigs, boars, crocs, scorpions, spiders and wargs. Rotten Food can be sold to some Orcish Traders and Half-troll Scavengers. Additionally, orcish and troll(-like) troops may also be fed with Rotten Food, in case the proposal 'Food for Troops' might ever be implemented.
Sousing of raw fish and bird and mammal meats: Adding one heap of salt to eight raw meat units produces eight soused product variants. These have significantly longer shelf life and increased saturation (value in between that of raw and cooked variants). Soused meats can be cooked to produce the regular cooked meats that have increased nutritional and saturation value but lower shelf life.
As this may be a feature that may be a burden in some server or single player gameplay settings, it is recommended to add a configurable option for the decay mechanism.
Additional features and gameplay considerations
- The actual remaining Shelf Life of an item (averaged for stacks) should be visualised when hovering over ones inventory, in the same way info on gear is shown.
- When consuming a food item from a stack, the item with the shortest remaining SL is consumed first.
- Achievement for sousing meat or fish: "Souse that!", "Pickle me Bert!", or similar.
- Achievement for eating Wasted Foodstuff: "Ye, ye, nurly ded.", or similar.
- Corned or pickled meats and fish have a nutritional value that is 1 hunger point and 1 saturation point lower than the cooked variants. These can be cooked in the same way as the raw variants, to produce the cooked, most nutricious variants.
- Instead of raw meats and fish, NPC traders should only buy soused variants ... at a slightly higher price level. With + 1 coin per item the price range changes from 2-4 to 3-5 coins/item, valueing the salt at 8 coins/heap.
- It may be useful to rename 'Rotten Flesh' to 'Tainted Flesh', to prevent confusion and honour its relatively high nutritional value.
- Containers in any form have no effect on ET and DP. This also holds for item frames, plates and placeable foods (and crates, if ever added). So, any food item placed for decorative purposes is not decaying ... until a player picks it up and the item appears to be rotten. If a player finds food items in a world generated chest, it will stay fresh, unless the player picks it up. So, to conserve food and drink loot, it better be left untouched until needed.
- The decay mechanics will lead to players planning their drink and food production, conservation, storage and conversion strategy. It will also lead to increased realism and immersion. Harvest and slaughter will be planned. The point of fishing and butchering animals may become dependent on the availability of salt. Livestock breeding and keeping will become more relevant. Brewing liquor will become an interesting alternative to conserve fruits.
Possible Fun Additions / Related Suggestions
- A lower biome temperature and humidity (rainfall) has a positive effect on TE. For biomes with a temperature lower than 0.5, the TE is increased with 50%. For biomes with a humidity lower than 0.5, the TE is increased with 50%. Both effects are cumulative. Players may decide to establish food storage facilities in cold, dry biomes.
- This mechanic supports the introduction of various new foodstuffs with longer shelf life based on already available ingredients like ... see some posts below. :)
- Eating raw potatoes and yam, raw meats, milk and fish gives a player a chance of being poisoned (food poisoning). Highest chance, ca. 40%, when eating raw chicken - lowest chance, ca. 10%, while eating red meats.
- Add a thirst mechanism to complete the added value of high moisture containing drinks and food. See this plugin for a simple and effective example: Hydrate.
- To reduce animal farm grinding efficieny: 1) add an animal disease mechanic that makes high concentrations of animals get an increased chance to catch contagious lethal diseases in animals cramped in too tight spaces, and 2) add an additional, dedicated lag fix mechanic that reduces cpu tps load caused by collisions by animals cramped in too tight spaces (like Spigot does).
- To increase difficulty to kill wild animals: consider the additions on passive animal behaviour as proposed in this thread: Nature bites!.
Credits and my thanks for the basic mechanics to Jon, owner of, and plugin developer and coder for Mythria, a hardcore realistic fantasy roleplay survival server.
Bring that feedback!
I know this may not be the most favoured feature as it makes gameplay harder than desirable for many, but the mod team or at least Mevans himself shows serious interest in mechanisms like this, in order to create more gameplay depth and provide more meaning to the richness of features of the mod.
Now bring on that feedback! Any feedback will be appreciated, including 'No, please, don't!'.
New insights may be used to improve this post.