River65 Posted October 23, 2020 Share Posted October 23, 2020 I've made a simple quest that starts when the player reaches level 3 (story manager enabled). Courier runs up to the player and gives him/her a letter of inheritance (forced reference) and a key to a house. Next objective is for the Player to read the letter (uses stored text, player name and date). Last objective is to visit the house. Quest completes when player enters the trigger box surrounding the house. It all works well, except I can't drop the letter of inheritance from my inventory after the quest completes. Any help on what I can do to correct this would be appreciated. Link to comment Share on other sites More sharing options...
ReDragon2013 Posted October 24, 2020 Share Posted October 24, 2020 If a quest has been completed, it will not stop automatically.You have to stop it by script. https://www.creationkit.com/index.php?title=Stop_-_QuestAt a rough guess.. maybe as long as the quest is running the "the letter of inheritance" is marked as quest item, which cannot removed from players inventory. Link to comment Share on other sites More sharing options...
River65 Posted October 24, 2020 Author Share Posted October 24, 2020 If a quest has been completed, it will not stop automatically. You have to stop it by script. https://www.creationkit.com/index.php?title=Stop_-_Quest At a rough guess.. maybe as long as the quest is running the "the letter of inheritance" is marked as quest item, which cannot removed from players inventory. Thank you for responding. So, please forgive my ignorance, this is the first quest I've ever made and I'm terrible with scripting. Some questions I have are: 1. 'funquest' does that mean 'function quest'?2. Do I just add funquest.stop() in the papyrus fragment box under the quest stages tab? 3. What is the point or purpose of checking the complete quest box in the last stage? Link to comment Share on other sites More sharing options...
dylbill Posted October 24, 2020 Share Posted October 24, 2020 (edited) Hey I'm not too familiar with quests but I thought I'd share what I know. 1. Funquest does not mean function quest, it's the quest property. In your script you would change it to whatever ID name your quest has. So for example, if your quest is named MyCoolQuest you would do MyCoolQuest.Stop() 2. If you put it in a papyrus fragment in the quest stages tab, you can just put Stop() by itself to stop that quest. 3. I'm not sure about this one, but I think this tells the game the quest is completed so it no longer shows in active quests. Edited October 24, 2020 by dylbill Link to comment Share on other sites More sharing options...
River65 Posted October 24, 2020 Author Share Posted October 24, 2020 Hey I'm not too familiar with quests but I thought I'd share what I know. 1. Funquest does not mean function quest, it's the quest property. In your script you would change it to whatever ID name your quest has. So for example, if your quest is named MyCoolQuest you would do MyCoolQuest.Stop() 2. If you put it in a papyrus fragment in the quest stages tab, you can just put Stop() by itself to stop that quest. 3. I'm not sure about this one, but I think this tells the game the quest is completed so it no longer shows in active quests.Thanks for the response and explanation. I already had Stop() by itself in the quest stages tab papyrus fragment, the quest is marked as an increase level event in the data tab and the quest script is just a series of fragments. Do I need to attach a second script to the quest just to stop it? Or could this be an issue with the letter reference alias, which brings me back to the issue of not being able to drop the letter from my inventory..... Link to comment Share on other sites More sharing options...
dylbill Posted October 24, 2020 Share Posted October 24, 2020 Ah, you shouldn't need to attach another script to stop the quest. Try also putting in your fragment InheritanceAlias.Clear() Change the InhertanceAlias to whatever you named your alias. Also it must be marked optional for Clear() to work. Link to comment Share on other sites More sharing options...
maxarturo Posted October 24, 2020 Share Posted October 24, 2020 (edited) The "Quest.Stop()" is basically used for all circumstances where there are in the quest other things that will continue running despite the fact that the quest has finish. For example: - A quest may have some "Misc Random" dialogues running on some npcs., like 'Hello', 'Combat Taunt', 'Idle Dialogue' or script fragments and / or scripts living inside the quest that are not directly attach to the "Quest Stage" system. Even if those 'Misc" dialogues have a condition to get the 'Quest Stage' to run the dialogue, those 'Misc' dialogues will fire every time the player encounter those npcs. By "Stopping" the quest those "Misc" dialogues will never run again the "Check Condition" to run dialogue, as a result, no more background pulling system resources. A good practice is to "Stop" all quest even if they are simple or not, it will not do any harm, on the contrary. Have all a pleasant weekend. Edited October 24, 2020 by maxarturo Link to comment Share on other sites More sharing options...
River65 Posted October 24, 2020 Author Share Posted October 24, 2020 (edited) Ah, you shouldn't need to attach another script to stop the quest. Try also putting in your fragment InheritanceAlias.Clear() Change the InhertanceAlias to whatever you named your alias. Also it must be marked optional for Clear() to work. I went into the script and for some reason I had added completequest() , rather than stop(). So I changed that. Do I need to restart the game in order to test whether I can drop the note, or can I continue on (I'm at level 5 with the quest completed) and not worry about it being baked into my save? The only difference with this quest compared to the vanilla letter of inheritance, that I'm aware of, is that the vanilla quest starts on a kill event and ends with delivery of the letter. Mine starts on an increase level event and ends with entering a trigger box. Otherwise the set up is basically the same for the courier and the note. Edited October 24, 2020 by River65 Link to comment Share on other sites More sharing options...
dylbill Posted October 24, 2020 Share Posted October 24, 2020 You would have to go back to a save from before you completed the quest, and then complete it again to see if it works. Alternatively you can use the console command Stopquest <quest ID> in your current save to see if that makes it so you can drop the note. To find your quest ID you can type in Help <"Name of your quest"> Link to comment Share on other sites More sharing options...
River65 Posted October 24, 2020 Author Share Posted October 24, 2020 The "Quest.Stop()" is basically used for all circumstances where there are in the quest other things that will continue running despite the fact that the quest has finish. For example:- A quest may have some "Misc Random" dialogues running on some npcs., like 'Hello', 'Combat Taunt', 'Idle Dialogue' or script fragments and / or scripts living inside the quest that are not directly attach to the "Quest Stage" system. Even if those 'Misc" dialogues have a condition to get the 'Quest Stage' to run the dialogue, those 'Misc' dialogues will fire every time the player encounter those npcs. By "Stopping" the quest those "Misc" dialogues will never run again the "Check Condition" to run dialogue, as a result, no more background pulling system resources. A good practice is to "Stop" all quest even if they are simple or not, it will not do any harm, on the contrary. Have all a pleasant weekend. Thanks for the explanation. On a similar but different note, I have an actor alias set to the player in order to show the player's name in the letter, is the correct way to go about it? Link to comment Share on other sites More sharing options...
Recommended Posts