home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / compre1a / msagent.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1999-08-29  |  22.5 KB  |  506 lines

  1. VERSION 5.00
  2. Object = "{F5BE8BC2-7DE6-11D0-91FE-00C04FD701A5}#2.0#0"; "AGENTCTL.DLL"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  4. Begin VB.Form Form1 
  5.    Caption         =   "Form1"
  6.    ClientHeight    =   3195
  7.    ClientLeft      =   60
  8.    ClientTop       =   345
  9.    ClientWidth     =   4680
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   3195
  12.    ScaleWidth      =   4680
  13.    StartUpPosition =   3  'Windows Default
  14.    Begin MSComctlLib.StatusBar StatusBar1 
  15.       Align           =   2  'Align Bottom
  16.       Height          =   315
  17.       Left            =   0
  18.       TabIndex        =   1
  19.       Top             =   2880
  20.       Width           =   4680
  21.       _ExtentX        =   8255
  22.       _ExtentY        =   556
  23.       Style           =   1
  24.       _Version        =   393216
  25.       BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
  26.          NumPanels       =   1
  27.          BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
  28.          EndProperty
  29.       EndProperty
  30.    End
  31.    Begin VB.CommandButton Command1 
  32.       Caption         =   "Command1"
  33.       Height          =   615
  34.       Left            =   1260
  35.       TabIndex        =   0
  36.       Top             =   1080
  37.       Width           =   1455
  38.    End
  39.    Begin AgentObjectsCtl.Agent Agent 
  40.       Left            =   360
  41.       Top             =   300
  42.       _cx             =   847
  43.       _cy             =   847
  44.    End
  45. Attribute VB_Name = "Form1"
  46. Attribute VB_GlobalNameSpace = False
  47. Attribute VB_Creatable = False
  48. Attribute VB_PredeclaredId = True
  49. Attribute VB_Exposed = False
  50. Option Explicit
  51. Dim Genie As IAgentCtlCharacter
  52. Dim Robby As IAgentCtlCharacter
  53. Dim Merlin As IAgentCtlCharacter
  54. Dim LoadRequest(3)
  55. Dim GetRequest(8)
  56. Dim GenieRequest As IAgentCtlRequest
  57. Dim RobbyRequest As IAgentCtlRequest
  58. Dim MerlinRequest As IAgentCtlRequest
  59. Dim DatapathType As String
  60. Dim CenterX As Integer, CenterY As Integer
  61. Dim RobbyDelayed As Boolean
  62. Dim RobbyLoaded As Boolean
  63. Dim MerlinLoaded As Boolean
  64. Dim RobbyShowFailed As Boolean
  65. Dim MerlinShowFailed As Boolean
  66. Private Sub Agent_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Integer, ByVal Y As Integer)
  67.     If Button = 1 Then
  68.         'If we have already loaded Robby, but his Showing state animation failed
  69.             If RobbyLoaded = True And RobbyShowFailed = True Then
  70.                 ' Apologize
  71.                 Genie.Play "Greet"
  72.                 Genie.Speak "Yes, O Great One. I will attempt to summon Robby again.|As you wish, my master."
  73.             
  74.                 ' Try again
  75.                 Set GetRequest(6) = Robby.Get("state", "showing, speaking")
  76.         ' Otherwise, if we have already loaded Merlin, but his Showing state animation failed
  77.         ElseIf MerlinLoaded = True And MerlinShowFailed = True Then
  78.                 ' Apologize
  79.                 Genie.Speak "Yes, O Noble One. I will attempt to summon Merlin again.|Yes, Master. I will see if I can rouse the wizened one."
  80.                 
  81.                 ' Try again
  82.                 Set GetRequest(7) = Merlin.Get("state", "showing, speaking")
  83.                             
  84.         Else ' We haven't loaded either character yet, so just ignore the click.
  85.             Exit Sub
  86.         End If
  87.     End If
  88. End Sub
  89. Private Sub Agent_RequestComplete(ByVal Request As Object)
  90.     Select Case Request
  91.         Case LoadRequest(1)
  92.             
  93.             If Request.Status <> 0 Then
  94.                 ' If genie's character data fails to load post a message
  95.                 StatusBar1.SimpleText = "Genie character failed to load."
  96.                 MsgBox "Unable to load the Genie character. Please try refreshing this page."
  97.             Else
  98.                 StatusBar1.SimpleText = "Genie character successfully loaded."
  99.                 ' Create a reference to the character
  100.                 Set Genie = Agent.Characters("genie")
  101.                 ' Load the character's Showing and Speaking state animations
  102.                 Set GetRequest(1) = Genie.Get("state", "showing,speaking")
  103.                 
  104.                 StatusBar1.SimpleText = "Now loading Genie's Showing and Speaking state animations."
  105.                 
  106.             End If
  107.         Case LoadRequest(2)
  108.             If Request.Status <> 0 Then
  109.                 StatusBar1.SimpleText = "Robby character failed to load."
  110.                 RobbyLoaded = False
  111.                 Genie.Speak "Uh oh, Robby failed to load."
  112.                 Genie.Speak "Try refreshing this page."
  113.                 
  114.             Else
  115.                 StatusBar1.SimpleText = "Robby character successfully loaded."
  116.                 RobbyLoaded = True
  117.                 Set Robby = Agent.Characters("robby")
  118.                 Set GetRequest(6) = Robby.Get("state", "showing,speaking")
  119.                 
  120.                 StatusBar1.SimpleText = "Loading Robby's Showing and Speaking state animations."
  121.                 
  122.             End If
  123.         Case LoadRequest(3)
  124.             
  125.             If Request.Status <> 0 Then
  126.                 StatusBar1.SimpleText = "Merlin character failed to load."
  127.                 MerlinLoaded = False
  128.                 Genie.Play "Greet"
  129.                 Genie.Speak "Ten thousand pardons, O Merciful One. Merlin was not available."
  130.                 Genie.Speak "When we're done, you can try refreshing this page and maybe he'll show up next time."
  131.                 
  132.                 If RobbyLoaded = True And RobbyShowFailed = False Then
  133.                     Robby.Hide
  134.                 End If
  135.                 SayGoodbye
  136.                 
  137.             Else
  138.                 StatusBar1.SimpleText = "Merlin character successfully loaded."
  139.                 MerlinLoaded = True
  140.                 Set Merlin = Agent.Characters("merlin")
  141.                 Set GetRequest(7) = Merlin.Get("state", "showing,speaking", False)
  142.                 Merlin.Get "animation", "blink", False
  143.                 StatusBar1.SimpleText = "Loading Merlin's Showing and Speaking state animations."
  144.             
  145.             End If
  146.         Case GetRequest(1) 'Request to load Genie's Showing and Speaking state animations
  147.             If Request.Status = 0 Or DatapathType = "UNC" Then
  148.                 StatusBar1.SimpleText = "Genie's Showing and Speaking state animations loaded."
  149.                 
  150.                 Genie.Get "animation", "greet", False
  151.                 ' If the animation loaded, start the intro
  152.                 StartIntro
  153.                 
  154.             Else
  155.                 StatusBar1.SimpleText = "Genie's Showing and Speaking state animations failed to load."
  156.                 
  157.                 MsgBox "Unable to load Genie's Showing and Speaking animations. Try refreshing the page."
  158.                 
  159.             End If
  160.         Case GetRequest(2) 'Request to load Genie's LookLeft, GreetReturn, Blink animations
  161.             
  162.             If Request.Status = 0 Or DatapathType = "UNC" Then
  163.                 StatusBar1.SimpleText = "Genie's LookLeft, GreetReturn, and Blink animations loaded."
  164.                 Genie.Play "RestPose"
  165.             Else
  166.                 StatusBar1.SimpleText = "Genie's LookLeft, GreetReturn, and Blink animations failed to load."
  167.             End If
  168.             ' Now process Genie's intro of Robby
  169.             GenieIntro
  170.         Case GetRequest(3) 'Request to load Robby's Wave animation
  171.             
  172.             If Request = 0 Or DatapathType = "UNC" Then
  173.                 StatusBar1.SimpleText = "Robby's Wave animation loaded."
  174.             Else
  175.                 StatusBar1.SimpleText = "Robby's Wave animaton failed to load."
  176.             End If
  177.             RobbyIntro
  178.         Case GetRequest(4) 'Request to load Robby's LookRight animations
  179.             If Request.Status = 0 Or DatapathType = "UNC" Then
  180.                 StatusBar1.SimpleText = "Robby's LookRight animations loaded"
  181.             Else
  182.                 StatusBar1.SimpleText = "Robby's LookRight animation failed to load."
  183.             End If
  184.             RobbyExplainsFeatureOne
  185.         Case GetRequest(5) 'Request to load Robby's Read animation
  186.             If Request.Status = 0 Or DatapathType = "UNC" Then
  187.                 StatusBar1.SimpleText = "Robby's Read animations loaded."
  188.                 
  189.             Else
  190.                 StatusBar1.SimpleText = "Robby's Read animations failed to load."
  191.             
  192.             End If
  193.             GenieExplainsFeatureTwo
  194.         Case GetRequest(6) 'Request to load Robby's Showing and Speaking state animations
  195.         
  196.             If Request.Status = 0 Or DatapathType = "UNC" Then
  197.                 RobbyShowFailed = False
  198.                 StatusBar1.SimpleText = "Robby's Showing and Speaking state animations loaded."
  199.                 ShowRobby
  200.             Else
  201.                 RobbyShowFailed = True
  202.                 StatusBar1.SimpleText = "Robby's Showing and Speaking state animations failed to load."
  203.                 Genie.Speak "Ten thousand pardons, O Merciful One."
  204.                 Genie.Speak "I regret to tell you that I am unable to summon the metallic one."
  205.                 Genie.Speak "Left-click me if you'd like me to try again."
  206.             End If
  207.         Case GetRequest(7) 'Request to load Merlin's Showing and Speaking state animations
  208.             If Request.Status = 0 Or DatapathType = "UNC" Then
  209.                 StatusBar1.SimpleText = "Merlin's Showing and Speaking state animations loaded."
  210.                 MerlinShowFailed = False
  211.                 
  212.                 ' Get Merlin's GlanceRight animation
  213.                 Merlin.Get "animation", "glanceright", False
  214.                 StatusBar1.SimpleText = "Loading Merlin's GlanceRight animation."
  215.                 ' Get the character's hiding animation states
  216.                 Merlin.Get "state", "hiding", False
  217.                 Robby.Get "state", "hiding", False
  218.                 Genie.Get "state", "hiding", False
  219.                 StatusBar1.SimpleText = "Loading the character's Hiding state animations."
  220.                 
  221.                 MerlinIntro
  222.             Else
  223.                 StatusBar1.SimpleText = "Merlin's Showing and Speaking state animations failed to load."
  224.                 MerlinShowFailed = True
  225.                 Genie.Speak "A thousand pardons, O Masterful One,"
  226.                 Genie.Speak "but I was unable to summon the wizard."
  227.                 Genie.Speak "Left-click me if you want me to try again."
  228.             End If
  229.         Case GetRequest(8) ' Request to load Genie's Explain animation
  230.             
  231.             StatusBar1.SimpleText = "All animation requests completed."
  232.     End Select
  233. End Sub
  234. Private Sub Command1_Click()
  235.     DatapathType = "UNC" ' set to UNC or URL depending on where character data resides
  236.     CenterX = 320
  237.     CenterY = 240
  238.     Agent.Connected = True  ' May be needed in some contexts
  239.     LoadGenie
  240. End Sub
  241. Private Sub LoadGenie()
  242.     Select Case DatapathType
  243.         Case "UNC"
  244.             Set LoadRequest(1) = Agent.Characters.Load("genie", "genie.acs")
  245.         Case "URL"
  246.             Set LoadRequest(1) = Agent.Characters.Load("genie", "http://agent.microsoft.com/characters/genie/genie.acf")
  247.     End Select
  248.     StatusBar1.SimpleText = "Loading Genie character."
  249. End Sub
  250. Private Sub LoadRobby()
  251.     Select Case DatapathType
  252.         Case "UNC"
  253.             Set LoadRequest(2) = Agent.Characters.Load("robby", "robby.acs")
  254.         
  255.         Case "URL"
  256.             Set LoadRequest(2) = Agent.Characters.Load("robby", "http://agent.microsoft.com/characters/robby/robby.acf")
  257.     End Select
  258.     StatusBar1.SimpleText = "Loading Robby character."
  259. End Sub
  260. Private Sub LoadMerlin()
  261.     Select Case DatapathType
  262.         Case "UNC"
  263.             Set LoadRequest(3) = Agent.Characters.Load("merlin", "merlin.acs")
  264.         Case "URL"
  265.             Set LoadRequest(3) = Agent.Characters.Load("merlin", "http://agent.microsoft.com/characters/merlin/merlin.acf")
  266.     End Select
  267.     StatusBar1.SimpleText = "Loading Merlin character."
  268. End Sub
  269. Private Sub StartIntro()
  270.     RobbyDelayed = True
  271.     Genie.MoveTo CenterX - 150, CenterY
  272.     Genie.Show
  273.     Set GetRequest(2) = Genie.Get("animation", "LookLeft, LookLeftBlink, LookLeftReturn, GreetReturn, Blink")
  274.     StatusBar1.SimpleText = "Loading Genie's LookLeft, GreetReturn, and Blink animations."
  275.     Genie.Speak "Welcome to the release of Microsoft Agent, the new ActiveX technology that supports interactive characters"
  276.     Genie.Speak "and enables the creation of highly interactive Web pages or stand-alone desktop applications"
  277.     Genie.Speak "that can leverage the natural aspects of social interaction."
  278.     Genie.Play "Greet"
  279.     Genie.Speak "I am Genie, your most humble and loyal servant."
  280.     Genie.Play "RestPose"
  281.     Genie.Speak "And one of the animated Microsoft Agent actors."
  282.     Genie.Play "Blink"
  283.     Genie.Speak "I bring you great news of the wondrous things that you can do with this marvelous technology,"
  284.     Genie.Speak "feats that even the greatest magicians in all of Baghdad have been unable to equal."
  285.     Genie.Play "Blink"
  286. End Sub
  287. Private Sub GenieIntro()
  288.     LoadRobby
  289.     Genie.Speak "To help me explain the features included in Microsoft Agent,"
  290.     Genie.Speak "let me introduce a member of the cast and my personal friend,"
  291.     Genie.Speak "Robby the robot."
  292.     Genie.Play "LookLeft"
  293.     Genie.Play "LookLeftBlink"
  294. End Sub
  295. Private Sub OverTime()
  296.     If LoadRequest(2).StatusBar1.SimpleText = 2 Or LoadRequest(2).StatusBar1.SimpleText = 4 Then
  297.         Genie.Play "LookLeftBlink"
  298.         Genie.Play "LookLeftBlink"
  299.         Genie.Play "LookLeftReturn"
  300.         Genie.Speak "Sorry about the delay.|Traffic must be heavy on the Internet today.|Thank you for your patience.|It should only be another moment.|A thousand pardons, O Patient One. Another moment..."
  301.         Genie.Speak "\pau=2500\|\pau=1000\|\pau=2000\"
  302.         Genie.Play "LookLeft"
  303.         Genie.Play "LookLeftBlink"
  304.         RobbyDelayed = True
  305.         
  306.     Else
  307.         Exit Sub
  308.     End If
  309. End Sub
  310. Private Sub ShowRobby()
  311.     Set GetRequest(3) = Robby.Get("animation", "Wave, WaveReturn", False)
  312.     StatusBar1.SimpleText = "Loading Robby's Wave animation."
  313.     Robby.MoveTo CenterX, CenterY
  314.     Genie.Play "LookLeftReturn"
  315.     Set GenieRequest = Genie.Speak("And here he is!")
  316.     Genie.Play "LookLeft"
  317.     Genie.Play "LookLeftBlink"
  318.     Robby.Wait GenieRequest
  319.     Robby.Show
  320.     Set RobbyRequest = Robby.Speak("Thanks for the great introduction, Genie.")
  321.     Genie.Wait RobbyRequest
  322.     Genie.Play "LookLeftBlink"
  323.     If RobbyDelayed = True Then
  324.         Robby.Speak "Sorry for the delay."
  325.         Robby.Speak "Traffic is really busy today on the Information Superhighway."
  326.         Set RobbyRequest = Robby.Speak("All those people downloading this new Microsoft Agent technology.")
  327.         Robby.Speak "It's incredible!"
  328.         Genie.Wait RobbyRequest
  329.         Genie.Play "LookLeftBlink"
  330.         Robby.Speak "But here I am."
  331.     End If
  332. End Sub
  333. Private Sub RobbyIntro()
  334.     Set GetRequest(4) = Robby.Get("animation", "LookRight,LookRightReturn", False)
  335.     StatusBar1.SimpleText = "Loading Robby's LookRight animations."
  336.     Robby.Get "animation", "acknowledge", False
  337.     StatusBar1.SimpleText = "Loading Robby's acknowledge animation."
  338.     Robby.Play "Wave"
  339.     Set RobbyRequest = Robby.Speak("Hello. I am Robby the robot.")
  340.     Genie.Wait RobbyRequest
  341.     Genie.Play "LookLeftBlink"
  342.     Robby.Play "restpose"
  343.     Set RobbyRequest = Robby.Speak("Like Genie said, I am one of the sample animated characters available for Microsoft Agent.")
  344.     Robby.Play "LookRight"
  345.     Genie.Wait RobbyRequest
  346.     Genie.Play "LookLeftBlink"
  347.     Genie.Play "LookLeftReturn"
  348.     Set GenieRequest = Genie.Speak("My Metallic Friend, let's expound about the awesome features of Microsoft Agent.")
  349.     Genie.Play "LookLeft"
  350. End Sub
  351. Private Sub RobbyExplainsFeatureOne()
  352.     Set GetRequest(5) = Robby.Get("animation", "Read,ReadReturn", False)
  353.     StatusBar1.SimpleText = "Loading Robby's Read animations."
  354.     Robby.Wait GenieRequest
  355.     Set RobbyRequest = Robby.Play("LookRightReturn")
  356.     Robby.Play "acknowledge"
  357.     Set RobbyRequest = Robby.Speak("OK, Genie.")
  358.     Genie.Wait RobbyRequest
  359.     Genie.Play "LookLeftBlink"
  360.     Robby.Play "Explain"
  361.     Set RobbyRequest = Robby.Speak("First, Microsoft Agent gives developers several options.")
  362.     Robby.Play "LookRight"
  363.     Genie.Wait RobbyRequest
  364.     Genie.Play "LookLeftBlink"
  365.     Genie.Play "LookLeftReturn"
  366.     Genie.Play "Explain"
  367.     Genie.Speak "That's correct, my digital friend."
  368.     Genie.Speak "For example, a developer can use just our animation services,"
  369.     Genie.Play "RestPose"
  370.     Genie.Speak "programming us to respond to mouse or keyboard input."
  371.     Set GenieRequest = Genie.Speak("Or also include optional support for speech recognition and speech synthesis.")
  372.     Genie.Play "LookLeft"
  373.     Robby.Wait GenieRequest
  374.     Robby.Play "LookRightReturn"
  375.     Robby.Speak "Character animation data can be installed and loaded from the user's disk,"
  376.     Set RobbyRequest = Robby.Play("Explain")
  377.     Genie.Wait RobbyRequest
  378.     Genie.Play "LookLeftBlink"
  379.     Robby.Speak "or downloaded from the server as needed and stored in the browser's cache,"
  380.     Set RobbyRequest = Robby.Play("RestPose")
  381.     Genie.Wait RobbyRequest
  382.     Genie.Play "LookLeftBlink"
  383.     Set RobbyRequest = Robby.Speak("making it faster to access an animation if it's already been used.")
  384.     Robby.Play "LookRight"
  385. End Sub
  386. Private Sub GenieExplainsFeatureTwo()
  387.     Robby.Get "animation", "Explain, ExplainReturn", False
  388.     StatusBar1.SimpleText = "Loading Robby's Explain animation."
  389.     LoadMerlin
  390.     Genie.Wait RobbyRequest
  391.     Genie.Play "LookLeftBlink"
  392.     Genie.Play "LookLeftReturn"
  393.     Genie.Speak "Our simple but powerful programming interface enables us to animate and talk from anywhere on the screen."
  394.     Set GenieRequest = Genie.Play("LookLeft")
  395.     Genie.Play "LookLeftBlink"
  396.     Robby.Wait GenieRequest
  397.     Robby.Play "LookRightReturn"
  398.     Robby.Play "Read"
  399.     Set RobbyRequest = Robby.Speak("Yes, developers can access events, such as when the user clicks or drags us.")
  400.     Robby.Play "ReadReturn"
  401.     Genie.Wait RobbyRequest
  402.     Genie.Play "LookLeftBlink"
  403.     Set RobbyRequest = Robby.Speak("And also detect when animation requests begin and end.")
  404.     Robby.Play "LookRight"
  405.         
  406.     Genie.Wait RobbyRequest
  407.     Genie.Play "LookLeftReturn"
  408.     Set GenieRequest = Genie.Speak("There's also lots of support for customizing character interaction.")
  409.     Robby.Wait GenieRequest
  410.     Robby.Play "LookRightReturn"
  411.     Robby.Play "Acknowledge"
  412.     Robby.Play "LookRight"
  413.     Set GenieRequest = Genie.Speak("Characters can be used as guides, coaches, entertainers, or other types of assistants or specialists.")
  414.     Genie.Play "LookLeft"
  415.     Genie.Play "LookLeftBlink"
  416.     Robby.Get "animation", "LookLeft,LookLeftReturn", False
  417.     StatusBar1.SimpleText = "Loading Robby's LookLeft animations."
  418.     Robby.Wait GenieRequest
  419.     Robby.Play "LookRightReturn"
  420.     Robby.Play "Explain"
  421.     Set RobbyRequest = Robby.Speak("As you can see, Microsoft Agent even supports multiple characters.")
  422.     Robby.Play "RestPose"
  423.     Genie.Wait RobbyRequest
  424.     Genie.Play "LookLeftBlink"
  425.     Set RobbyRequest = Robby.Speak("Characters can be programmed to animate independently or synchronized to each other's animations.")
  426.     Robby.Play "LookRight"
  427.     Genie.Wait RobbyRequest
  428.     Genie.Play "LookLeftBlink"
  429.     Genie.Play "LookLeftReturn"
  430.     Genie.Speak "And Microsoft also provides a special tool that developers can use to compile their own characters."
  431.     Genie.Speak "Like my other friend, Merlin the wizard."
  432.     Set GenieRequest = Genie.Play("LookLeft")
  433.     Genie.Play "LookLeftBlink"
  434.     Robby.Wait GenieRequest
  435.     Robby.Play "LookLeft"
  436. End Sub
  437. Private Sub MerlinIntro()
  438.     Set GetRequest(8) = Genie.Get("animation", "explain, explainreturn", False)
  439.     Merlin.Get "animation", "acknowledge", False
  440.     Merlin.MoveTo CenterX + 150, CenterY
  441.     Merlin.Wait GenieRequest
  442.     Merlin.Show
  443.     Merlin.Speak "Hello everyone!"
  444.     Merlin.Play "Blink"
  445.     Set MerlinRequest = Merlin.Speak("Microsoft Agent includes touches of my special magic that automatically keeps our mouths in sync with our voices.")
  446.     Merlin.Play "Blink"
  447.     Genie.Wait MerlinRequest
  448.     Genie.Play "LookLeftBlink"
  449.     Set MerlinRequest = Merlin.Speak("It also works with recorded voices!")
  450.     Merlin.Play "LookRight"
  451.     Genie.Wait MerlinRequest
  452.     Robby.Wait MerlinRequest
  453.     Genie.Play "LookLeftReturn"
  454.     Robby.Play "LookLeftReturn"
  455.     Set GenieRequest = Genie.Speak("Thanks, Merlin.")
  456.     Genie.Play "LookLeft"
  457.     Genie.Play "LookLeftBlink"
  458.     Merlin.Wait GenieRequest
  459.     Merlin.Play "Acknowledge"
  460.     Set MerlinRequest = Merlin.Speak("My pleasure.")
  461.     Genie.Wait MerlinRequest
  462.     Genie.Play "LookLeftReturn"
  463.     Set GenieRequest = Genie.Speak("And thanks also to you, Robby,")
  464.     Genie.Play "LookLeft"
  465.     Robby.Wait GenieRequest
  466.     Robby.Play "LookRight"
  467.     Genie.Play "LookLeftBlink"
  468.     Genie.Play "LookLeftReturn"
  469.     Set GenieRequest = Genie.Speak("for helping me point out all these great features.")
  470.     Genie.Play "LookLeft"
  471.     Genie.Play "LookLeftBlink"
  472.     Robby.Wait GenieRequest
  473.     Robby.Play "LookRightReturn"
  474.     Robby.Play "Acknowledge"
  475.     Set RobbyRequest = Robby.Speak("Anything for you, my blue friend.")
  476.     Robby.Play "LookRight"
  477.     Genie.Wait RobbyRequest
  478.     Genie.Play "LookLeftReturn"
  479.     Genie.Play "Explain"
  480.     Genie.Speak "That's just a short summary of what's included in Microsoft Agent."
  481.     Set GenieRequest = Genie.Speak("We hope you enjoy this new technology as much as we do.")
  482.     Genie.Play "Blink"
  483.     If MerlinLoaded = True Then
  484.         Merlin.Wait GenieRequest
  485.         Merlin.Hide
  486.     End If
  487.     If RobbyLoaded = True Then
  488.         Robby.Wait GenieRequest
  489.         Robby.Play "LookRightReturn"
  490.         Robby.Play "LookLeft"
  491.         Robby.Play "LookLeftReturn"
  492.         Robby.Play "Wave"
  493.         Robby.Hide
  494.     End If
  495.     Genie.Speak "It's been my humble pleasure to relay this information, O Great One."
  496.     Genie.Play "Explain"
  497.     Genie.Speak "The power is now in your hands."
  498.     Genie.Play "Greet"
  499.     Genie.Play "RestPose"
  500.     SayGoodbye
  501. End Sub
  502. Private Sub SayGoodbye()
  503.     Genie.Speak "See you around the Web."
  504.     Genie.Hide
  505. End Sub
  506.