I am working on random fetch quests as you know. Now one inparticular I'm making actually chooses the NPC to collect stuff for at random, based on their faction. If my calcs are right, it could choose one of 18 npcs in the world. Now given the scope of the game, you may have done wrong by any of those people, which can cause an obvious issue; when you return the items to them, they may start a fight, causing the quest to not be completable.
A solution I have working (as far as technically) is to set the relationship rank of the npc for the player to ally. Now obviously this may be far different from before the quest began, so what I've done is store the current relationship rank as a global, then set the rank to ally, then when the quest is completed, return the rank to what it originally was.
As far as I can see this is the best possible solution. But could this cause other possible issues, if the player gets to the stage where they need to visit the npc (which is when I set it ally) but then wanders off and does other things... things that could change the rank to something else, even enemy? Am I trying to account for too much that I can't control, in terms of how the player plays the game?
Thanks for your valued input as always
