I play the game since EA release last year and there are still quest bugs (blocking quests) in simple quests. These quests are in the game since the beginning and they are known for a long time. When I look at that I have a bad feeling about the state of the untested quests and dialogs when the game is officially released. It looks somehow as if Larian tries to fix it quest for quest and dialog for dialog instead of looking at the overall reason why these bugs occur.
I will try to structure them and illustrate with an example:
1. Hard coded stuff
Prior to Patch 5 Shadowheart could not be saved from the Nautiloid. She was always found at the entrance to the old ruins after the crash. That was hardcoded. Dialogs regarding that were hardcoded. And now comes the problem: They changed story but forgot dialogs. Speak with the dead fisher and he tell you that "a beautiful woman went West" (to the entrance of the old ruins) which is not the case if you saved her. It is just a minor thing but very likely one of the inconsistencies that will remain until the official release.
My advice: If you use hardcoded dialogs if it is about unchangeable lore or smalltalk it is ok. But whenever anything is referenced that happended recently enough to be subject of change in the near future or could be altered by player intervention put a condition there. In this case: Define an area around the entrance of the old ruins. If Shadowheart is there after the crash the condition is met. And assign the dialog to it. Do it for every similar case even if the condition is always met. You never know how the story might change in the future and how "inventive" players are.
2. Information related stuff
Example: "Find your Belongings" quest
I chose this quest because it is there since the beginning of EA, is still bugged and very simple in structure. In my case I was not able to talk to Mol about my belongings. The necessary dialog option did not appear. I also did not steal or take any items that might be related to the belongings (like stuff in the hideout)
As I said the structure is simple:
=> You were robbed
=> You get the information that Mol is the leader of the Tiefling kids / knows where are your belongings (although should not be necessary to progress quest in my opinion)
=> Talk to Mol (maybe some other Tiefling kid quest checks for relationship with Mol)
The only explanation for me that such a simple quest can be bugged is because Larian thinks all the ways of solving the quest as a whole instead of looking at all quest pieces individually. One thing similar in all these quests is that an "unexpected" event order leads to quests being blocked where quests should not be dependent on event order. Or that conditions seem to be checked that should be fulfilled anyway if you are able to get to a later quest stage (so there is no point in checking it)
My advice: Use an "information layer". "Information" is everything the character learns during the story and most importantly is independent of quests. In its simpliest form it is a list of boolean variables indicating whether you know something or not. And keep potentially required quest conditions to the absolute minimum.
In this case:
=> You can know that Mol is the boss of the Tieflings without having that quest.
=> You should only rarely make a quest dependent of an event order and then you should test this quest extremely well.
=> How or when you find or enter the hideout for example should have no impact on the quest (I don't know if it has since I could not find the cause for my bug yet). If you are talking to Mol you "must have found a way". There is no reason to check a condition that has to be fulfilled if you are abe to do something. This is just a possiblity for bugs.
It would now look like that:
=> You were robbed => start of quest
=> You get the information that Mol is the leader of the Tiefling kids / knows where are your belongings => "information layer" => you could know it already without breaking anything
=> You speak to Mol (maybe check that at least a few Tiefling kid quests are fulfilled the right way)
There might be other ways to fulfill that quest other than talking to Mol but there should not be any other requirements than the ones listed above to speak to her about it and it should especially not matter in which order you did certain requirements.
3. Item related stuff
A similar thing applies to dialogs and quests with physical items. Possible examples: Netties Wyvern poison or Volos Invisibility Potion. Every dialog that references an item that has an ingame instance should always be linked to that instance. Not to some boolean state that could be completely inconsistent to the real location of the item. Or worse being hardcoded. Like Volo talking about having an Invisibility Potion while it has been robbed.
Linking to the instance of the item and checking its location is the only safe way in my opinion to prevent unlogical dialogs or even blocking quests. Fixing just every dialog and quest individually does not fix the root cause and the problem could occur on every further dialog and quest in the future.
4. Camp dialogs
In the end it's a mix of the first 3 points but because these dialogs are so important for the companion and main quests I make an extra point. Personally for me the difficulty in EA is pretty low, so I have usually one short rest after every encounter. With a limit of two short rests every long rest that makes 3 encounters per long rest. On top of that I like to avoid unnecessary encounters (playing peacefully) So I am definetely resting fewer times than intended by Larian.
I would like it if Larian would look at the current state of quest progression to determine how much happens during a camp scene. I mean if I solved 3 or 4 medium sized quests between two long rests I expect more to be happening than one componion having a unique conversation or not even that. But that's not the problem I want to adress here.
It's more that because of the few rests I make Larian implicitely assumes I have made much more rests and have more camp interaction until a quest related camp scene like Raphael occurs. Here an example:
=> Raphaels scene
=> Talking to Astarion
=> He mentions his vampire master but at that point I didn't even know he is a vampire spawn.
This is a point again where the "information layer" I mentioned in point 2 would have solved the issue: Knowing that Astarion is a Vampire Spawn is an information. You can aquire it during a quest but having this information is something unrelated to quest stage. And this information has to be checked before that dialog occurs.
As a short summary:
=> Far too many quests and dialogs are hardcoded instead of being condition based. Don't assume. Make a condition and check it.
=> Far too many dialogs and quests are dependent on event order where there should be no dependence
=> My personal feeling: Quests and dialogs are fixed individually by Larian rather than trying to fix the root cause that cause these kind of bugs in many quests/dialogs
This is of course my personal opinion. I would be interested whether other players have a similar view on it.