So, this guide is not for complete beginners. It will require some basic knowledge about the use of the CS and Wrye Bash. If you've never modded before - better not start with this.
In this tutorial, we want to insert a nice custom alchemy shelf as placeable furniture into MOO.
When I say MOO I mean Maskar's Oblivion Overhaul.esp, but I am way too lazy to type that every time.
First, open Wrye Bash. Right click on MOO and select "esmify self". This will change a flag in MOO's header, making it behave like an esm.
Next, open the CS. Double click MOO, click ok, wait. Wait. Wait. Wait. When errors pop up, select "yes to all" or whatever the (probably) rightmost selection in the prompt is.
Go to the Items > MiscItem section and scroll until you find a deed. Open one and rename it, for example "MyLowerClassAlchemyShelfDeed". I would suggest including the "Deed" part, because we will end up with a lot of items, all with similar IDs, you really want to have them clearly named.
You can change the value, but don't change anything else.
Once you press ok, the CS will ask you if you want to create a new form. YES.
Now is a good time to save your plugin for the first time. You might want to save often. Often. Often. The CS is unstable at best. I named my Mod "NewFurniture.esp". Moving on:
Expand the FormID Column and note down the FormID for your newly created Deed. Only the last 6 digits are important, the first 2 are the mod index and will be different ingame. Mine is, for example:
So I write down 000ED4.
Next, you need to create a new, empty cell. I find this cleaner than using any existing ones, possibly causing conflicts. Go to the world > cells menu, this is at the top
Right click somewhere and select New. I named my cell MyFurnitureCell. Very creative
Next, we're gonna need an activator. Go to WorldObjects > Activator. Right click, select new, browse to your new mesh. Give it the ID MyLowerClassAlchemyShelfActivator and the name "Place Shelf". Give it the script "MOOObjectMarkerScript". The script is empty, but needed for the placement to work!
Did you remember to save? Yes? Awesome. No? Do so.
Next, we need a container.
(Because I want the shelf to work as container, if you want to make a static item like a table, this will be a static item, if you want to place a light, this will be a light etc.)
Go to WorldObjects > Container and find one with a sound that matches what you want to copy it. I will copy DrawerClutterLower01 and change the ID to MyLowerClassAlchemyShelfContainer and the name to "Alchemical Ingredients".Make sure to remove the respawns flag and the contents, then change the model path to your new shelf. DON'T touch the sounds. Click ok, confirm that you want a new form.
Write down this FormID, too.
Now, we have to enter our (empty) cell. Place the activator in the cell by dragging it into the window. Easiest is setting all the positions to 0. Set it initially disabled and persistent reference, then give it a unique ID, MyLowerClassAlchemyShelfActivatorRef.
Write down this FormID, too.
Now the problem is, if you place that shelf at your feet, it will stick half in the ground, as the I-don't-know-how-to-call-it-point is in the middle of it. There might be a better way to do this, but I need visuals, so what I did was placing some flat surface static into the cell, like ANCastleCourtArc02.
Grab some object where the 0 point cross is easy to see, for example WorldObjects > Flora > AloeVera. Set its positions to 0 0 0. Now move the flat surface until the plant sits perfectly on top of it.
Now you can drop your furniture on the flat surface with "F" (this key, when used while an object is active, will drop it to the next surface) and read the number you need directly in the Z-Position. I suggest rounding it down a bit, to make sure the newly placed furniture will never float. In my case, I get 72.8285, so I use 72.
You could delete the plant again, or just leave it in there. Makes it easier to set things back if you ever accidentally move the platform.
I hope you saved.
Now, we open the Maskar's Oblivion Overhaul for craft deeds.ini.
Go to the end. Copy an entry and edit it. If you want to know what any of the settings mean, have a look at the top of the ini, they are explained there. For example, location 1 is only indoors, 2 is only outdoors, but 3 is possible, allowing it indoors AND outdoors.
; Shelf Ingredients
set MOO.ini_object_deed to GetFormFromMod "NewFurniture.esp" "000ED4" ; MyLowerClassAlchemyShelfDeed
set MOO.ini_object_type to 0
set MOO.ini_object_location to 1 ; indoors
set MOO.ini_object_marker to GetFormFromMod "NewFurniture.esp" "000ED8" ; MyLowerClassAlchemyShelfActivatorRef
set MOO.ini_object_container to GetFormFromMod "NewFurniture.esp" "000ED7" ; MyLowerClassAlchemyShelfContainer
set MOO.ini_object_activator to 0
set MOO.ini_object_distance to 80
set MOO.ini_object_height to 72
set MOO.ini_object_rotation to 180
SetStage MOO 140
First, you need to add the name of your new esp to all 3 locations where esps are mentioned.
Then, you need to fill in the formIDs you noted for the three objects, the deed, the container and the placed ref in the cell. It makes things easier if you note at the end of the line (behind a ; so it doesn't get compiled) what the clear name of the object in the CS is.
deed: The FormID of your deed.
type: Should be 0.
location: 1 indoors, 2 outdoors, 3 both.
object marker: The FormID of your Ref in the cell.
object_container: The FormID of your container.
activator: Should be 0.
distance: How far away from you the marker will be placed.
height: This is the value we got from subtracting both Z-Positions.
rotation: Some meshes are rotated, for example many cupboards by 180 degrees. If you would place them like this, you'd see a nice backside. Enter a value in degrees here to see the pretty front.
You will probably have to open the game and play around a bit to find which values work for distance and rotation.
Don't forget to leave SetStage MOO 140 where it is!
Now if you want to make it craftable, you open the Maskar's Oblivion Overhaul for craft recipes.ini.
Please note: At this point (version 4.93), it is not possible to add new ingredients to crafting! You'll have to use what is already there.
Create a new recipe for your shelf.
Recipes can have up to 4 ingredients and are measured in weight units.
You need to enter the FormID of your deed in the object target line. It's probably easiest to copy from existing recipes that have similar requirements, for example I go ahead and copy the recipe for MOODeedCraftLCBookcase, but set the requirements a bit higher.
set MOO.ini_object_type to MOO.type_Workbench
set MOO.ini_object_filename to sv_Construct "NewFurniture.esp"
set MOO.ini_object_target_id to sv_Construct "000ED4"
set MOO.ini_object_source1_id to MOO.id_Board
set MOO.ini_object_source1_weight to 50
SetStage MOO 60
Please note: You only have to enter the first 2 lines (the ones in italics) once. They will be valid until you enter something else, so if you place it at the end of your ini, you can drop all your new shiny recipes below.
Now before you launch the game, I'd suggest going into Wrye Bash and "espifying" the MOO esp again (Don't forget to move it to the end of your list, after your Bashed Patch, afterwards). For testing, you can leave your MOO esp esmified, most things will work (placing houses, for example, doesn't). But don't play or save like this.
Caution! MOO esp must always be esmified when you make changes to your esp or bad things™ will happen. You cannot load an esp that depends on another esp with the construction set. I suggest regularly backing up your Furniture esp, so you can go back if you broke something.
Caution! I advise to be double careful to not put any edits to vanilla things into your esp. It has to load after MOO and therefore load after the Bashed Patch, so if you change anything, even accidentally, it will conflict heavily with everything. I also would suggest not changing anything from MOO, either, unless you know exactly what you are doing.
Caution! It is not certain that mods made this way will always be compatible with new MOO versions. If MOO gets an update, you need to check if there are any changes, to both the inis and to how furniture is implemented in the esp.
Edit 19.03.2019: Put in a few more warnings and removed the old unnecessary complicated method of calculating the object height.
Edit 13.09.2019: Clarified that not every object needs to be a container.