SeraphTC Posted September 10, 2012 Share Posted September 10, 2012 Hi, Once you have spoken to Eorland Gray-Man after completing the Compantions quest line, you are able to craft Ancient Nord Armor at the Skyforge. What I'd like to do is add a couple of custom items to this list of Ancient Nord Armor. I don't have any problem adding the items to the game - what I want to do is not have them appear in the crafting list outside of the Skyforge or before the Ancient Nord Armor is available. If anyone could offer any suggestions I'd very much appreciate it!! Cheers, SeraphTC Link to comment Share on other sites More sharing options...
SeraphTC Posted September 10, 2012 Author Share Posted September 10, 2012 In addition, I've been considering that by the time you are able to craft the Ancient Nordic Armor it's pretty useless (I'd moved on way past Iron armor by the time I'd finished the companions quest), so I'm considering adding a book to the tomb near Riverwood that gives you the ability to craft it when you'd still potentially want to wear it. I don't think that would be unbalanced as in stats it's basically just Iron armor anyway. One of the things I'm worried about is how this will affect the end of the Companions Quest - if you can already craft the armor, and then Eorlund gives you the ability to craft it again, will that double up the entries on the crafting menu??? Any hints, clues or suggestions as to how I'd go about this would be fantastic! Cheers, SeraphTC Link to comment Share on other sites More sharing options...
mightymuffin007 Posted September 11, 2012 Share Posted September 11, 2012 Hey there! Let me see if I understand you (its not that you were unclear, just making sure I read it correctly): You are wanting to add new armor pieces to the game that are to be included in the Ancient Nord Armor set. You are able to add the armors into the game just fine, but you want to add the crafting recipes for them. Instead of adding the recipes to the original armor set, you want them to be available earlier by having a book in their inventory. The problem you have is whether adding the book component would mess things up with the end of the Companion questline. If I understand that correctly, yes, if you made totally new recipes that required the book, you would indeed get multiple recipes. Here is what I can explain (even with 800 hours logged into CK, I'm still a newbie and learning...): 1.) Every item that can be crafted or tempered must have a recipe called a "Constructible Object." You'll find this under the "Items" Main headings in the Object Window. 2.) If you search for "RecipeArmorSkyforge," you should see the four recipes for creating the objects in game. Click any one. 3.) If you look at one of the IDs, you'll notice it says under Match Conditions "GetGlobalVariable...SkyforgeSmithing...==1.00" (the ... means there's separation). What this means is that when the Global Variable "SkyforgeSmithing" has been set to 1, you will be able to craft these items. 4.) The other thing to note here is the Workbench Keyword in the upper right hand corner, which should display "CraftingSmithingSkyforge." This means that this recipe only appears on crafting tables with that keyword on it (in this case, that only appears on the Skyforge). Summing up 3 and 4, you will only be able to craft these recipes at the Skyforge only when SkyforgeSmithing global variable is set to 1. Without going too indepth with the quest, the Companion questline will run a script which sets the global variable SkyforgeSmithing to 1. This will enable anything with these conditions to be crafted at the Skyforge. For your case, you are wanting to change the conditions so that the armor is available sooner - this will require editing the original Constructible Object IDs for the armors in vanilla. First, let's do your new armors: 1.) Duplicate however many recipes you need for your armors from one of the existing recipes there. 2.) With the first one, rename the ID to something that you remember and helps you navigate back to it quickly (following Bethesda's naming scheme is a good start). 3.) In the Created Object Drop-down menu, select one of your pieces of armor. You are only creating one, so don't mess with the next box. The final box should read "CraftingSmithingSkyforge" as before (if it doesn't, set it to that). 4.) The Required Item List is the next step. Either edit or remove the original ingredients to match your requirements. If you need to add them, right-click and select add - you will have to select that item and edit the item and the item count as you need. 5.) Finally, the most important step - the Match Conditions. You will want to remove the GetGlobalVariable condition, otherwise this recipe will not appear until the end of the quest. If you are wanting this to appear when the player has a book in their inventory, create a new entry and set the condition function to "GetItemCount." You will then click the box which reads "INVALID" and a new popup will appear. Search the drop-down box for your book (If you haven't created the book yet, go do that now - should be familiar, but if confusing I'll explain in another post). Click Okay on this new popup menu. Make sure you change the Comparison box to >=, just in case they are able to obtain more than one copy of your book. Then click okay, and it should give the new match condition. Now you have created the recipe for your new armor. Do the same steps for your other new armors. To go back and edit the original armors, you will need to follow Step 5 for all the original armors. This now makes all the armors available if the player has the book in their inventory. One last thing you may want to know - tempering recipes also require Constructible Object IDs. However, the tempering recipes for this particular set are listed as "TemperArmorDraugr." "TemperArmorSkyforge" doesn't exist. Unlike the crafting recipe, the tempering recipe does not require SkyforgeSmithing global variable. So as long as you duplicate these recipes and add your item and the necessary stuff to temper it, it will show up at Workbenches just like any other armor. If you wanted to prevent tempering unless you had the book, you'd do the same thing as Step 5 except for these IDs. However, most vanilla tempering recipes only check to see if the armor is enchanted or not (the Match Conditions that are listed on the tempering recipes). So you will need to keep this if you do decide to edit here, but my suggestion is not to do this until you are comfortable with adding crafting recipes. I know I typed a lot, but I try to be very detailed and go step by step. If I got too dense, I'll rewrite it for you in a PM that should hopefully clear it up. Hope this helps! Link to comment Share on other sites More sharing options...
SeraphTC Posted September 11, 2012 Author Share Posted September 11, 2012 Thanks for the excellent reply :) I actually know how to add crafting recipes, but what I wanted to know was, how are the draugr items restricted to only being available after the companions questline has completed - I couldn't find the variable, or the crafting recipes to check. But as you've given me that information, that's absolutely perfect :) It was an excellent response nonetheless, had I not known about recipes/tempering already, it would have been even better! The other thing I wanted to know was, if I add a book to the game to allow the crafting of these items early, would it cause a problem with the quest. Now that I know the quest just sets a global variable, I know that it won't cause a problem. I can just set the variable with a script on the book :) You provided pretty much all the information I needed - so thank you very much for that, and bonus Kudos! :) What I don't want to do is make the additional weapon smithing items available at the same time, as that would negate all of the bonuses from using the skyforge after the companions quest. What I've done is create a new global variable, and set that on each of the crafting recipes for the pieces of draugr armor with an OR clause (so they will appear if my new global is set, or if the skyforge global is set). This means I can allow the forging of the armor separately from the weapons. I've tested the variable in game, and it works. I've created a book, and for now it's on the floor by the forge for ease of testing. I've created a script with the following content: Scriptname STCAS_AncientNordSmithingSkillBook extends ObjectReference GlobalVariable Property STCAS_CraftAncientNord Auto Event OnEquipped(Actor reader) stcas_craftancientnord.setvalueint(1) EndEvent and assigned it to the book. The script compiles successfully. However, when I pick the book up in the game, the global variable does not get set. I assume I'm not doing something correctly here - any ideas what that might be? Link to comment Share on other sites More sharing options...
mightymuffin007 Posted September 11, 2012 Share Posted September 11, 2012 (edited) I haven't fully learned scripting yet (even after 800+ hours of staring at the CK, the CK wiki, and all other resources needed to learn and plan my mod, I'm still learning things every day it seems), but I do see a couple of problems with the script. You put the script on the book, correct? The event in the script says to run the script when "reader" equips the book. The problem with that, if I understand that event correctly, is that you never technically equip the book. Equipping an item only runs if it fits into one of the many equipment slots (hands, feet, head, body, right hand, shield, etc). Books don't fit in that category, therefore it never runs because it isn't equipped. The next problem with that particular script is how you set up the (Actor reader) part. "reader" is not recognize by the script, since there isn't a property or condition that explains who the actor is. So instead, it should read like this:Scriptname STCAS_AncientNordSmithingSkillBook extends ObjectReference GlobalVariable Property STCAS_CraftAncientNord Auto Event OnEquipped(Actor akActor) if akActor=Game.GetPlayer () stcas_craftancientnord.setvalueint(1) EndEvent In this case, the event would run whenever akActor is the player and has equipped the item this script is on. "Actor" I believe is simply saying that the target of this event is going to run on the Actor script, while akActor is the actual actor it is supposed to check for. However, while this would make things work on equippable objects, the event would not work on books. The event that should work in this scenario is "OnRead." The following link is to the Creation Kit's Wiki on the subject of OnRead. It may give you what you need for that script to work in game. OnRead - Object Reference Creation Kit Wiki Try that out and see what happens. Hoping this helps you out! Edited September 11, 2012 by mightymuffin007 Link to comment Share on other sites More sharing options...
SeraphTC Posted September 11, 2012 Author Share Posted September 11, 2012 Absolutely spot on! Nice one! :) Thank you! Link to comment Share on other sites More sharing options...
SeraphTC Posted September 11, 2012 Author Share Posted September 11, 2012 Okaaaaay......next problem!! I've got the book working - just not quite how I'd like. Basically, I refuse to duplicate content from an existing book from the game, but I also don't have the patience right now to write my own content. What I'd like to do is have the book 'magically impart knowledge' to the player before disintegrating. This way, the player sees a book pop up and open, then they get a message that they understand the content of the book, but that it's destroyed in the process, then when they click ok the book is gone and they are free to continue as normal. So effectively: Player reads book->set global variable->display message box with fluffy text explaining that the book disintegrated due to age->remove the book I can do everything but 'destroy' the book. Is this even possible on Read? (isn't this how spell tomes act?) Again, I'd really appreciate any help! Link to comment Share on other sites More sharing options...
SeraphTC Posted September 11, 2012 Author Share Posted September 11, 2012 Would I be better off using something like a spelltome rather than a book? How would I make that work? What defines the book as a spelltome? Is it simply the 'teaches spell' option? I was hoping each tome would have a script attached that I could work with, but unfortunately not :( Link to comment Share on other sites More sharing options...
assterixxx Posted September 12, 2012 Share Posted September 12, 2012 (edited) It could probably be done with a spell tome, but from what I read, you only need a RemoveItem script attached to the book. that will make it vanish. Edited September 12, 2012 by assterixxx Link to comment Share on other sites More sharing options...
IsharaMeradin Posted September 12, 2012 Share Posted September 12, 2012 Try something like Import Game ObjectReference Property BookBeGone auto Event OnRead() Actor Player = GetPlayer() {Do your other stuff here} Player.RemoveItem(BookBeGone,1,true,None) EndEvent That should work for making the book go away and doing whatever else you are having it do....Just be sure to assign the the book to the "bookbegone" property Link to comment Share on other sites More sharing options...
Recommended Posts