File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use

About this mod

An upgrade for the dairy goods side of the Hearthfire DLC.

Permissions and credits
  • German
Berts Hearthfire Dairy Goods Upgrade
Polish Add-on by Hegemont
(Requires this mod be installed first! )

Other Mods By Me!

Berts Breezehome Cellar
Adds an open (no loadscreen) cellar to Breezehome with a full set of crafting and smithing tools plus displays for armour, weapons, dragon masks and dragon claws!

Berts Breezehome Remodeled
A full remodel of Breezehome including interior, exterior and cellar & so much more!

Berts Breezehome Garden
A new garden grotto added to Whiterun available as a standalone or connected to the vanilla Breezehome & is also pre-packed with my Cellar & Remodeled mods.

Remo's Display Spells
A collection of spells aimed specifically at making your house a home.


This mod uprades the dairy goods side of the Hearthfire DLC.
It makes all standard cows and domesticated goats milkable (fully animated).
Domesticated goats give 1 jug of goat milk when milked and all dead goats (domesticated & wild) can be looted for a jug of goat milk as well (the chance of you catching a wild goat and milking it is slim so I didn't bother!).
Dead cows can now be looted for Rennet which is used in cheese making.

The milk churns in the Hearthfire houses have been changed to crafting milk churns (semi animated) at which you can make:
Butter: 1 jug of milk + 1 salt pile
Raw Eidar Cheese Wheel: 1 Rennet + 1 Salt Pile + 2 Jugs of Milk
Raw Goat Cheese Wheel: 1 Rennet + 1 Salt Pile + 4 Jugs of Goat Milk

Raw cheese wheels are then placed on a maturing shelf for 3 game-days untill ready.

Rennet & Goats milk can also be bought from inns, if they have any in stock.

The goats and cows do not tell you they can be milked, just activate them and you'll either begin milking or be told they have already been milked, come back tomorrow.

I have slightly altered the properties of the cheeses to make them worth getting/carrying/making/eating for lower level characters:


Restore Health-----5-----------5
Restore Stamina---0-----------5

Sliced Wheel
Restore Health-----15-----15
Restore Stamina----0------15

Full Wheel
Restore Health-------20-----20
Restore Stamina-----0------20

If you use any other mods that change the attributes of the cheeses ensure that the version you wish to use is lower in your load order in the section of your Skyrim launcher!

Many thanks to IsharaMeradin for her easy-to-follow guide for 1st/3rd person checking!
And for jiggling the OnLoad/OnActivate part of the milking script!

Note: Any other mod that changes cows, goats, the milk churns or cheeses may conflict, be sure to check each thoroughly!

berticus0001 ;-)

Resources & Settings

For modders who want to use the scripts etc this resources pack includes a more extensive version of the cheese maturing scripts, or use the ones from the full mod above's .bsa.

This version does not require Hearthfire to be installed!

Mods that use these scripts:
Bridge Farm by gentester
Winner of the SKYRE farm contest and main instigator for creation of the scripts!
Uses the cow milking script only!

Heres a list of the included scripts and a quick description of how to set them up and what they do!

Cow Milking:


Place the script on a custom cow actor, set the settings and populate your mod with your cows.

My Settings:
Bucket: - Bucket01 (The bucket that appears under the cow)
BYOHFoodMilk - If your using this on a mod with Hearthfire as a master you can just hit Auto-Fill, else point this to your Milk potion (The food item you get for milking: Jug of Milk)
DaysToWait - 1.00 (=24hrs 'till you can milk this cow again)
FailureMessage - This cow has already been milked today, try again tomorrow! (what you're told if you haven't waited long enough)
HowManyMilkPer - 1 (How many jugs of milk you get per milking)
IdleStop_Loose - Auto-Fill (Stops the animation playing)
MilkingSound - AMBWaterChurnLP (A nice water/squirty sound)
WhatYouGot -1 Jug of Milk Added (The notification that pops up in the corner of the screen after milking)
XMarker - Auto-Fill (An XMarker to aim the player)



As the churn is furniture it doesn't need any scripts, just duplicate any piece of furniture (eg, chair, any crafting bench etc.) and replace the .nif with the enclosed churn .nif (churnfrn.nif) then create a new <keyword> to link to your new cheese recipes and apply that along the other furniture keywords to the churn.<br>Next select the churn in the render window and create a new trigger called churnhandle or something you can recognize and assign it the churn handle .nif (handle01.nif), give it the same name as the churn and attach the script zz01defaultactivatelinkedref to it. This is a customized script that will activate it's linked reference whenever the handle is activated, the ones that come with the game are a bit of a pain sometimes and will often either only work once, or not at all!!<br>Click OK to finish the new trigger then once back on the render window double-click the new trigger and in it's <primitive> tab select <player activate> and set the <primitive> drop-down box to <none>, hit OK and then middle-mouse click the render window to make it active and press F5, wait a moment while the render screen refresh's itself and you'll now have the churn handle in place. Double click the handle once more and in the <linked ref> tab connect it to the churn, this is so activating the handle will automatically activate the churn, else you have to look down to find the churn!<br>Now you need to drag an XMarker into the window and using the x, y, z coordinates from the handle place the XMarker at it's base (you want to move the handle down to the lowest point in it's animation first!), this Xmarker will designate the lowest point of the handle as it's movement is animated. Now duplicate the XMarker and move it up till there is a small gap between the two, this will be the top of the handles movement!<br>Now go back to the churn and add the script zz01scrptchurnrun and in it's setting link it to the handle and both XMarkers and set the audio. Included in here is the option to get two things from one crafting, eg butter &amp; buttermilk from one milk, to use this you will need to create a new food that has a double object .nif, then create a Formlist that has this double object in and attach the formlist and the two separate objects (butter and buttermilk) in the appropriate slots. Now when you create the double object in the churn, when you exit the churn the script will automatically check you for the double object(s) and switch them for the separates!<br>I think that covers everything for that, check the example mod to see how it all connects together, the example uses ale instead of milk and the Eidar cheese wheel is the example double object, so when you make them you'll have them switched for two of my custom cheeses to show how that works!<br><br>The settings for this are mostly just pointing to each part of the whole, handle, XmarkerUp, XMarkerDown etc.<br>The player animation for this is a bit naff, there's just nothing that exists in-game that works for it except the first part of the smithing animation where you pull the bellows rope, unfortunately I can't separate that animation from the rest of the smithing (working the anvil, quenching the ingot etc.) so I've gone for a generic leaning on the counter animation. Check the example for the list of furniture keywords.<br><br>;--------------------------------------------------------------------<br>Maturing/Ageing:<br><br>Scripts:<br>zz01scrptmaturing01startx<br>zz01scrptmaturing02phantommenu<br>zz01scrptmaturing03maturing<br>zz01scrptmaturing04final<br><br>Setup:<br>The maturing scripts are built expecting 3 custom/maturable cheeses with 4 strengths per cheese type, though they can be used for ageing wine or anything else you want to have change over time.<br>To start with you'll need to create your 12 .nifs (3 types x 4 strengths) as clutter objects for use as in-game cheeses (or wines), next you'll have to create 12 duplicate versions set as static for display during the maturing process.<br>Lastly you'll need a "Phantom" .nif for the initial activator (see mine in the example).<br>Create the food versions of your objects using the standard clutter versions then create triggers of each using the static nifs and also a trigger for the static "Phantom". Next put the food version into Formlists, each type must have it's own, then do the same for the static trigger versions but in this case add the "Phantom! at the start of each list.<br>Here's an example of what the lists should look like:<br><br>Food_RedCheeseList<br>---RedCheese01<br>---RedCheese02<br>---RedCheese03<br>---RedCheese04<br><br>TRGR_RedCheeseList<br>---STC_Phantom01<br>---STC_RedCheese01<br>---STC_RedCheese02<br>---STC_RedCheese03<br>---STC_RedCheese04<br><br>Once your lists are done drag an XMarker to the position you want you maturing points to be and add the maturing01startx script to it. Now add the maturing02phantommenu script to the static trigger "Phantom" base object, add the script maturing03maturing to the static "cheeses" 01, 02 &amp; 03 base objects and finally add the final script maturing04final to static "cheese" 04 base object.<br><br>Settings:<br>zz01scrptmaturing01startx<br>This script only has one setting that needs any of the static trigger formlists<br><br>zz01scrptmaturing02phantommenu<br>This script needs each of the formlists to be inserted in the settings along with 2 message boxes, 1 for what type of cheese (wine) to place and 1 for what strength. It also has a setting where you need to put the text of what is shown when you don't have the cheese/strength you selected.<br><br>zz01scrptmaturing03maturing<br>This scripts settings include, what potion/food this cheese (wine) is, how many days to wait before this strength matures to the next strength, the formlist for the current cheese(wine) static trigger type and the number of the NEXT strength in the formlist.<br><br>zz01scrptmaturing04final<br>This final script just needs to know what the food/potion it is and what static trigger formlist it comes from.<br><br>;--------------------------------------------------------------------<br><br>A few notes<br><br>As stated at the top, the example mod does not require Hearthfire so there is no milk! Anything that should point to milk (cow milking/the churn) will give/require ale!<br>Do NOT place the first of the maturing scripts on the base object of the XMarker, it should only be placed on the marker in the render window, or you could duplicate the xmarker!<br><br>The maturing process is an OnCellLoad event as it needs the event to trigger the swapping of the cheeses (including the first time it's run to place the phantom, so you must be out of the cell/worldspace when installing), but thanks to IsharaMeradin the cowmilking is no longer OnCellLoad so if your just pottering around the farm for a whole day you don't have to travel away and back just for the cows to be re-milkable!<br>Many thanks for that!!!<br><br>Mooo!!!<br>bert;-)<br><br></linked></none></primitive></player></primitive></keyword>