This was a set of notes that I kept as I wrote the Heart of the Dead mod. These tips and hints might be helpful to anyone who is crazy enough to try and make a big Quest mod. Like me. :) 1) Try not to use Quest Scripts that much. Try to use as many objects to trigger stages. For example: If you want to have a script trigger when a creature dies, you could do it two ways: Quest Script: Use GetDead for creature. Object Script on Creature: OnDeath Since Quest scripts are updating constantly, it's better to use the Object script. ------------------------------------------------------------------------------------ 2) Okay, there's a nasty bug that has haunted throughout the entire development of HOD. It gave me headaches, and no one on the forums could figure out what was happening. Basically the bug went like this: I liked using the result scripts in the dialog boxes. That way things could happen as soon as a character was done talking. But then I noticed that result scripts would suddenly be gone. Completely random. It got so bad that I kept a document with all the result scripts listed as backup. Then, after the mod was shipped and I was working on a massive update (5.0) I noticed it happening again. After much pulling hair, something caught my eye. After a bit of investigation, I finnaly, FINALLY found the bug that had been haunted me for almost two years. And here it is: - Once you click on a topic, you cannot click "off" of it. Right clicking on that topic will give you the choices to "Add" or "Remove". I was using the "Add" command to add new topics all the time. But, I learned that when you click on an existing dialog to "ADD" a new one, it will delete the scripting in that existing box. Everything is gone, even any "Goodbye" flags you set. So you have to make sure the box you are clicking on has nothing in its scripting box. This explains how it was always "random", because I would randomly click on existing ones to make new ones. I'm glad I found it, but a little frustrated that the knowledge came so late. ------------------------------------------------------------------------------------ 3) Variables should take the place of certain common numbers, so you don't have to hunt all instances down. For example, if you have a bunch of events that happen when a certain variable equals 1000, you want this 1000 set as a variable in a single place. So in the quest script you would set the short variable Day to 1000, and then throughout the scripts you would say "If CurrentDay == Day" instead of "If CurrentDay == 1000". This way you don't have to hunt down every instance where CurrentDay == 1000. ------------------------------------------------------------------------------------ 4) This next quirk is one I still haven't been able to figure out a solution yet, but I felt you should know about it. Putting down NPCs and creatures in the editor sets down an instance of that character. Thus, all of its inventory and options are set perminantly in that instance. You can add items to the Base NPC, but you cannot take things away. A good example is Kat, from my mod. I set her down in a dungeon with leather armor but then later I decided to change it to glass. So I went into the Base Kat and deleted her leather and gave her glass. In game she wore glass, but when that glass armor broke suddenly she was wearing leather again, even though she shouldn't have it! Finally I added a special "armor" just for her, and just swapped meshes when I wanted her to change. That way I didn't have to take out her armor to change the mesh. I still have no clue how to change the NPC's inventory in the instances that are already there. If anyone knows, please send me an email. I'd love to hear it. ------------------------------------------------------------------------------------ 5) Good naming conventions are key to good organization. I know this because I didn't really think about naming my objects, dialog, etc, clearly and precisely, and I paid the price during bug fixing. Some general rules of thumb when it comes to naming conventions: a) Use the same prefix for everything of a certain type. For example, later on I started labeling all my objects HODObjectName. This helped group them together so I didn't have to hunt all over the place for the different ones. Same goes for locations, quests, etc. b) I liked using a Zero in front of the names so that I could see them as soon as I looked in the list. But be careful with this. If your quest name starts with a number (like 0HOD01) you won't be able to reference it in any scripts unless you use quotes. So if a script wants to access a variable in 0HOD01 then it would have to say Set "0HOD01".Variable to 1 c) Keep it something you'll remember and keep it similar. You don't want to have to go to your naming document when all you to do is delete a simple ring. ------------------------------------------------------------------------------------ 6) Try not to touch any vanilla Oblivion items unless you really have to. If you want a different texture for an imperial in the game, make a brand new race with the new textures. And make sure to use different unique folders as well. Which also leads into... ------------------------------------------------------------------------------------ 7) If you use an existing mod as a base (like Ren's Mystic Elves in HOD) then make sure to use the meshes and textures... but that's it. If you can, redo EVERYTHING in the editor. Race name and attributes, armor, everything. It might be a pain in the butt to redo everything that someone else has already done, so why do it? Because if someone plays your mod and uses the old mod yours was base on, there are massive conflicts. This is because Oblivion sees two records with the same ID that do the same thing, and doesn't know which one to use. This is especially important if you decide to delete a record from yours. You might think it's just affecting your MOD, but it will actually delete that record in the base mod as well when you run the game. ------------------------------------------------------------------------------------ TO BE CONTINUED...