Jump to content

Mod Quest Problems... Scripting...?


xH4D3Sy

Recommended Posts

I'm new to these forums, so please forgive me if this thread is in the wrong place...

 

So I have been working on a mod of my own for a couple weeks now, and have gotten the basics laid out for it. Basically what it is in Skyrim, there is an NPC in Whiterun that gives you the choice to "work" at Warmaiden's, as a blacksmith. So, this NPC will give you various tasks, such as "Forge an Iron Dagger," or "Craft a pair of leather boots."

 

Here's my problem... What I'm trying to do is, along with basic crafting tasks, also make tasks where you have to improve said weapon or armor. I can't figure out what needs to be done though, I've messed around with differen scripting functions and junk, but nothing.

 

Essentially, what I want to do is exactly what you do for the Blacksmith Tutorial quest. It's the one where you meet Alvor, or Adrianne. They ask you to forge an iron dagger, and then improve it at the grindstone, etc. What I noticed though is, if you forge that iron dagger, then they tell you to sharpen it, and you DON'T sharpen it, the dialogue topic "Here's an Iron Dagger," or whatever doesn't appear.

 

How does the game check whether that weapon has been improved or not? Is it something in scripting, becuase I have looked at the script for the original blacksmith tutorial, and there isn't anything there other than:

.SetObjectiveCompleted(30)

.SetObjectiveDisplayed(40)

Can someone please help me, or at least tell me what I'm missing? I am seriously stuck... :wallbash:

Link to comment
Share on other sites

I can't start up my CK right now to confirm it, but most likely the script is attached to the given item inside the alias. In the Aliases tab, check the iron dagger reference and see if a script was added to it. The script would then have OnMagicEffectApply() Event function which would set the stage of the quest.

Link to comment
Share on other sites

I can't start up my CK right now to confirm it, but most likely the script is attached to the given item inside the alias. In the Aliases tab, check the iron dagger reference and see if a script was added to it. The script would then have OnMagicEffectApply() Event function which would set the stage of the quest.

 

Hmm... I just checked, and unless I'm looking in the wrong place... I don't see anything other than these in the Aliases tab, and none of them actually have anything about the item:

 

 

 

QuestGiver

AlvorForgerMarker

AlvorWheelMarker

AlvorTanning

Alvor

Adrianne

Lod

AlvorWorkbench

AdrianneForgerMarker

AdrianneWheelMarker

AdrianneTanningMarker

AdrianneWorkbench

LodForgerMarker

LodWheelMarker

LodTanningMarker

LodWorkbench

 

 

 

Nothing in that quest actually refers to the iron dagger that needs to be made, unless like I said, I'm not looking in the right place. That's what makes it so confusing, the quest asks you to make an iron dagger and temper it, but nowhere (not that I can see at least) does it show anything that has to do with the iron dagger or tempering it. None of the scripts have anything in them other than SetStage's and SetObjectives in them...

Edited by xH4D3Sy
Link to comment
Share on other sites

I had a look through the CK and found out the tutorial uses multiple quests for each part (craft, sharpen, temper). It uses the StoryManager Event Node 'Craft Item'. The Stacked Quest Node TutorialBlacksmithingNode will allow quests to run when the Quest TutorialBlacksmithing is running and at stage 10 or above. Below this node are 5 quests: Dagger, DaggerSharpen, Tanning, Armor and ArmorTemper. Each will start a new quest specific for the current step when a certain event occurs.

 

The quest for crafting the dagger triggers when TutorialBlacksmithingNode's conditions are met, and when the following conditions in the quest itself are met:

  • Event must have Keyword WICraftingSmithing
  • Created object must be an iron dagger

This will start up the quest TutorialBlacksmithingDagger, which will then start at stage 10 (the startup stage). In the code of the Quest Stages of the quest you'll see the TutorialBlackSmithing's stage is set to 20. This will then enable the dialogue to continue the rest.

This is also done for the rest, tempering and sharpening weapons uses the Keyword WICraftingSmithingTemper which is then picked up by the storymanager.

 

Hopefully this will make it clear enough for you, it's a rather roundabout way they used but I think this was the only way to get around the limitations of the CK and papyrus scripts.

Link to comment
Share on other sites

Thanks for the help. I pretty much just copied everything word for word from the tutorial quest into a test quest I created. The only problem I'm having now is that the NPC won't talk to me. He just says "Good afternoon."

 

Also, is it possible to skip some of the steps in that tutorial in my own quest? Like say if I want to combine crafting and tempering into one objective, is that possible? Wouldn't I only have to make one blank quest, and then use that quest in for the "WICraftingSmithingTemper" keyword node?

I think I understand what's going on with the story manager thing, but not 100% yet.

Link to comment
Share on other sites

I don't think you can use just one quest for this. Normally you can just use stages to set the multiple objectives, but there doesn't seem a way to track player's crafting actions besides the Story Manager. The story manager only allows you to start up quests when an event has occurred, you cannot set stages, thus it would be incredibly difficult to reach the objectives. I suggest just keeping to the multiple quests standard as this doesn't look like as much work as creating new scripts for this.

 

The quests not starting can have many reasons. These solutions can help if you aren't even seeing the dialogue screen.

- If the quest is start game enabled, make sure you generate the SEQ files using TES5EDIT.

- Else, if you use the story manager be sure to check the conditions.

- Check if all the stages and dialogue conditions are correct, does the npc that should say the dialogue equal the condition? if no conditions are set ALL npc's will be able to say it when the quest is running.

- ALWAYS use a clean game (Use coc <cell location>), save the new game, restart skyrim and load the game again. Especially Start Game Enabled quests have issues with this.

- Use things like ShowQuestAliases [QuestID], GetQuestRunning [QuestID] to see where it goes wrong.

- Aliases used for quests are being blocked by other running quests, sometimes they cancel eachother out.

 

In case you see the dialogue screen but aren't getting any dialogue besides the first player response:

- Create voice files or use an empty sound file for each dialogue, otherwise the dialogue will play with the speed of light.

- Connect the multiple topics within a branch with eachother, or link the topic with another topic from another branch.

Link to comment
Share on other sites

I was trying to figure out how the game was checking whether you had crafted/tempered the iron dagger in the TutorialBlacksmith quest. I thought at first it had something to do with the GetItemHealthPercent() and OnItemAdded() functions, but they weren't in the original quest.

So, it turns out that it all had to do with the Story Manager, and quest nodes and stuff. That's where it checks whether the iron dagger, for example, has been crafted and then if it has been tempered.

 

The quest that I'm crating has multiple objectives, and some of them were things such as "Craft and sharpen an iron dagger," so I needed to know how the game was checking that... And I knew it had to be possible somehow, since that's what the tutorial quest was doing.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...