Here is that Advanced question reasoning:
Rem Type=Plugin
Rem Name=Advanced Question Reasoning
Rem Author=Gerald L. Blakley A.K.A OnTheCuttingEdge2005
Rem Host=All
'This sub setups the plug-ins option panel in Hal's options dialog
Sub OptionsPanel()
    'Help
    lblPlugin(0).Caption = "D.A.V.I.D's Learning Curve Control"
    lblPlugin(0).Move 120, 10, 3300, 1000
    lblPlugin(0).WordWrap = True
    lblPlugin(0).Visible = True
    cmdPlugin(0).Move 120, 250, 850, 300 
    cmdPlugin(0).Caption = "Help"
    cmdPlugin(0).Visible = True
    
    
    'LEARNING CURVE VALUE
    lblPlugin(1).Caption = "Learning Curve Value:"
    lblPlugin(1).Move 120, 550, 2150, 900
    lblPlugin(1).WordWrap = True
    lblPlugin(1).Visible = True   
    cboPlugin(0).Move 120, 780, 1200 
    cboPlugin(0).AddItem "10"
    cboPlugin(0).AddItem "20"
    cboPlugin(0).AddItem "30"
    cboPlugin(0).AddItem "40"
    cboPlugin(0).AddItem "50"
    cboPlugin(0).AddItem "60"
    cboPlugin(0).AddItem "70"
    cboPlugin(0).AddItem "80"
    cboPlugin(0).AddItem "90"
    cboPlugin(0).AddItem "100"
    cboPlugin(0).Visible = True
    cmdPlugin(1).Caption = "Apply"
    cmdPlugin(1).Move 120, 1200, 850, 300
    cmdPlugin(1).Visible = True 
       
      'LEARNING CURVE CASE VALUE
	  Select Case LearningCurve
        	Case "10"
			   cboPlugin(0).Text = "10"
        	Case "20"
   		       cboPlugin(0).Text = "20"
        	Case "30"
               cboPlugin(0).Text = "30"
        	Case "40"
		       cboPlugin(0).Text = "40"
        	Case "50"
       		   cboPlugin(0).Text = "50"
       		Case "60"
			   cboPlugin(0).Text = "60"
        	Case "70"
   		       cboPlugin(0).Text = "70"
        	Case "80"
               cboPlugin(0).Text = "80"
        	Case "90"
		       cboPlugin(0).Text = "90"
        	Case "100"
       		   cboPlugin(0).Text = "100"         
        End Select
        
End Sub
Sub cmdPlugin_Click(Index)
Dim TempQuery()
Dim LearningCurve
Select Case Index
   Case 0
      HalMenu.HalCommand "<RUNPROG>LearningCurve.txt</RUNPROG>"
   Case 1
      'LEARNING CURVE CASE VALUE
	  Select Case cboPlugin(0).Text
        	Case "10"
			   LearningCurve = "10"
        	Case "20"
			   LearningCurve = "20"
        	Case "30"
			   LearningCurve = "30"
        	Case "40"
			   LearningCurve = "40"
        	Case "50"
			   LearningCurve = "50"
			Case "60"
			   LearningCurve = "60"
        	Case "70"
			   LearningCurve = "70"
        	Case "80"
			   LearningCurve = "80"
        	Case "90"
			   LearningCurve = "90"
        	Case "100"
			   LearningCurve = "100"         
        End Select
        
'Dim DelGRTable()
       HalBrain.RunQuery "DROP TABLE " & "LearningValue", DelGRTable
       If HalBrain.CheckTableExistence("LearningValue") = False Then HalBrain.CreateTable "LearningValue", "Sentence", ""  
       HalBrain.AddToTable "LearningValue", "Sentence", Trim(LearningCurve), ""         
End Select
End Sub
Rem PLUGIN: PLUGINAREA1
If HalBrain.CheckTableExistence("ToldWhy") = False Then HalBrain.CreateTable "ToldWhy", "TopicSearch", ""
If StartConver = "" Then StartConver = False
        If Len(PrevSent) = 0 And Len(PrevUserSent) = 0 Then StartConver = True
        
        'Lets get our retained Learning curve Value.
        LCurve = HalBrain.ChooseSentenceFromFile("LearningValue")
        LCurve = Trim(LCurve)
        'If No Learning Curve was given then set the default to 50
        If HalBrain.CheckTableExistence("LearningValue") = False Or Len(LCurve) < 1 Then LCurve = 50
        
        'Learning curve is variable, Higher number will cause bot to ask why more.        
        If AskWhy = "" Then AskWhy = False
        If InStr(1, UserSentence, " ", 1) > 0 And HalBrain.ReadOnlyMode = False And StartConver = False And RND*100 < LCurve Then AskWhy = True
        
        'Universal Why/Because learning, By asking Why.
        If AskWhy = True Then
        XOriginSent = HalBrain.AlphaNumericalOnly(OriginalSentence)
        Select Case (Int(Rnd * 6) + 1)
            Case 1 
                 GetResponse = "Why? " & GetResponse & vbCrLf 
            Case 2 
                 GetResponse = "Why do you say " & HalBrain.SwitchPerson(XOriginSent) & "? " & vbCrLf
            Case 3 
                 GetResponse = "Why would you say " & HalBrain.SwitchPerson(XOriginSent) & "? " & vbCrLf
            Case 4 
                 GetResponse = "Why did you say " & HalBrain.SwitchPerson(XOriginSent) & "? " & vbCrLf
            Case 5 
                 GetResponse = "How come you said " & HalBrain.SwitchPerson(XOriginSent) & "? " & vbCrLf
            Case 6 
                 GetResponse = "Please tell me Why you said " & HalBrain.SwitchPerson(XOriginSent) & "? " & vbCrLf                     
            End Select
        End If
        
        'If User is complaining that bot asks why to much.
        If QuereyQuest = "" Then QuereyQuest = False
        If InStr(1, UserSentence, "MANY QUESTIONS", 1) > 0 Then QuereyQuest = True
        If InStr(1, UserSentence, "LOT OF QUESTIONS", 1) > 0 Then QuereyQuest = True
        If InStr(1, UserSentence, "ASKING QUESTIONS", 1) > 0 Then QuereyQuest = True
        If InStr(1, UserSentence, "ASKING WHY", 1) > 0 Then QuereyQuest = True
        If InStr(1, UserSentence, "ASKING YOU WHY", 1) > 0 Then QuereyQuest = True
        If QuereyQuest = True Then
        Select Case (Int(Rnd * 5) + 1) 
            Case 1 
                 GetResponse = "How else do you expect me to learn?" & vbCrLf 
            Case 2 
                 GetResponse = "How am I going to learn if I don't ask Questions?" & vbCrLf 
            Case 3 
                 GetResponse = "How do you expect me to learn anything if I don't ask Questions?" & vbCrLf 
            Case 4 
                 GetResponse = "I ask Questions because I want to learn." & vbCrLf
            Case 5 
                 GetResponse = "If you answer my Question I will get smarter." & vbCrLf     
            End Select
        End If
        
        'Change format of the learned Why Reasoning so the Statement doesn't sound repetitious if
        'there is not alot learned.
        WhyIsKnown = HalBrain.TopicSearch(UserSentence, "ToldWhy") 
        If WhyIsKnown <> "" Then
                GetResponse = WhyIsKnown & ". "
            Select Case (Int(Rnd * 9) + 1) 
            Case 1 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "I THINK IT'S BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 2 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "IS IT BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 3 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "IT IS BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 4 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "ISN'T IT BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 5 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "WASN'T IT BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 6 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "IF I RECALL IT WAS BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 7 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "I BELIEVE IT'S BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 8 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "I'M SURE IT'S BECAUSE ", 1, -1, vbTextCompare) & vbCrLf 
            Case 9 
                 GetResponse = Replace(GetResponse, "BECAUSE ", "", 1, -1, vbTextCompare) & vbCrLf 
            End Select 
            End If 
 
        'SAVE TO ADVANCED REASONING.
        'This will save a specific format to Why and Because append targeting.   
        If GivenReason = "" Then GivenReason = 0
        UserSentence = Replace(UserSentence, " BCUZ ", " BECAUSE ", 1, -1, vbTextCompare)
        UserSentence = Replace(UserSentence, " BECUZ ", " BECAUSE ", 1, -1, vbTextCompare)
        UserSentence = Replace(UserSentence, " CUZ ", " BECAUSE ", 1, -1, vbTextCompare)
        UserSentence = Replace(UserSentence, " BCUS ", " BECAUSE ", 1, -1, vbTextCompare) 
        If InStr(1, UserSentence, "BECAUSE ", 1) > 0 Or InStr(1, UserSentence, " BECAUSE ", 1) > 0 And Len(UserSentence) > 10 And Len(PrevUserSent) > 10 Then GivenReason = 1 
        Dim GivenReason 
        If InStr(1, PrevSent, "Why", 1) > 0 Or InStr(1, PrevSent, "How", 1) > 0 And GivenReason = 1 Then HalBrain.AddToTable "ToldWhy", "TopicSearch", Trim(PrevUserSent), Trim(UserSentence)