The problem is, quest3_complete is not even relevant yet at that point. Those if statements that display "Ask about Morgan." should all check for quest2_complete instead.
Also if you look at
quests.rpy:
Python:
label quest2_event2:
show image("ui/screens/background.png")
...
$ quest3_complete = 0
...
######### QUEST 3 #########
define quest3_complete = 2
Right below the point where 0 is assigned to quest3_complete, it gets redefined with the value of 2, which defeats the point of assigning 0 to it and then the author checks if it's 0 while it'll NEVER be anything but 2 until you complete the quest 3, which you won't be able to. If you enable console and check the value of quest3_complete when the "ask about Morgan" quest is given, you'll see that the value is already 2 due to the default value given in "define" statement, which is what breaks the game.