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)