Conversations

  1. An incentive for conversations
    First you should make and airbrush, a room around it and maybe add a torch too. Load the ConVict script and compute pathfinding and build room database. Just do all the stuff you usually do in the beginning.

    After making this environment, you can add two guards, but make sure, that Garrett won’t be visible to them. For example, you can put the torch so, that it’s too dark for them to see you.

    Edit the first ones properties and name him Tom. And of course the other one is Jerry. Change Tom’s properties and add Speech->Voice. The text should be ‘guards’, but we have to change it to ‘guard3’. Jerry’s voice must be changed too, but to ‘guard2’. It’s important that the voices are right. Otherwise the conversation won’t work. Tom is ‘guard3’ and Jerry ‘guard2’.

    Now we have two actors, but we need the actual conversation. Create a marker and name it ‘BearConv’ or ‘MyOwnConv’ or anything you like. I shall call it ‘BearConv’. It doesn’t matter where the marker is, but it would be wise to keep it somewhere near the actors.

    Then we need to change the markers properties. Add S->Scripts and put ‘TrapConverse’ in the first line. Add AI->Conversations->SaveConversation and check the box. Add AI->Conversations->Conversation and just click ‘OK’ twice. Don’t get confused by the big dialog box. It’s somewhat large, but you can manage with 1024×768 or even 800×600 screen. The ‘OK’ is in the lower left corner. And pushing enter usually means ‘OK’

    Now we have actors and the conversation. We just need to connect them, so link ‘BearConv’ to ‘Tom’ with ‘AIConversationActor’ and change the data to ‘1’. Link it to ‘Jerry’ as well but change the data to ‘2’. The numbers mean the number of the actor.

    The conversation is working, but there is one flaw. The actors don’t say anything yet, so we’ll now edit the lines. Open up the properties of the ‘BearConv’ and edit that AI->Conversations->Conversation. Now you should see a window with 11 steps. The steps are executed in order and the next step doesn’t start before the last one is finished. There are also these ‘Abort’ things, but we’ll see to them later.

    Double-click the ’00’ and the big dialog box appears on your screen. As you can see, there are 6 smaller steps, or actions, if you prefer. These are also for motions and pushing buttons, but as for now, we just use them for speech. Let’s just edit the upper part of this box. Change the ‘Actor’ to ‘ActorOne’, which means Tom and ‘Conversation:Action 0’ to ‘Play sound/motion’. In the first argument, enter ‘sg_c01’ and in the second argument, ‘LineNo 1’. That ‘sg_c01’ is the name of the conversation and ‘LineNo 1’ is obviously the line number. Don’t worry about these yet.

    When you press ‘OK’, you’re back at the properties. Open the conversation steps again and now choose ’01’. Change ‘Actor’ to ‘ActorTwo’, Tom, and use the same action and first argument, but the second argument should be ‘LineNo 2’. Just edit the ’02’ with ‘ActorOne’ and ‘LineNo 3’ and then we’ll try how it sounds in game.

    Before we are able to test it, we must make a ControlDevice. In this case, a switch or a button will do. Create a switch or a button and link it with‘ControlDevice’ to the ‘BearConv’. Locate it somewhere near Garrett, so there isn’t any trouble with the guards. Now just check portalizations and all those things one more time and test it.

    If everything went fine, you should now have a three line conversation which starts when you press the button. Not too great, eh? Well, this was just a demonstration. Now I have to explain all this (sigh).

  2. Advanced conversations
    Let’s start with the voices. As you remember, Tom’s voice was ‘guard3’ and Jerry’s ‘guard2’. You might think ‘Why on Earth can’t I use some other voices?’. This is because the conversations are made for specific actors. The conversation made in demonstration is the same you can hear in front of Bafford’s, and the voices of these actors are ‘guard3’ and ‘guard2′. The freedom of choice is limited to using built-in conversations. Of course, this doesn’t limit our creativity. You can take a part from here and a bit from there. If you like, you can finish that conversation by adding more lines starting from ’03’.

    Then there is this ‘sg_c01’ and ‘LineNo’. That ‘sg’ is for ‘sergeant’ or something like that. There are also ‘hm’ and ‘sv’ for hammers and servants. ‘c01’ is for ‘conversation 1’. I guess you could search the Snd.crf file for all the conversation, but I prefer studying the game levels. For example, another conversation ‘sg_c12’ has also two actors, ‘guard1’ and ‘guard2’‘LineNo’ is of course the line number, but you’ll have to be careful with this too.‘LineNo 1’ means guard 1 and for example ‘LineNo 4’ means guard 2.

    Next thing is this marker. It’s preferable to name it, so you can easily find it later. Those ‘AIConversationActor’ links are quite self-explanatory. You just have to be careful with those numbers in ‘Data’. If you forget them or they go wrong… Actor one should obviously be the one saying line one.

    Now let’s try something new. Open the conversation part ’01’ and change the second action, ‘Action 1’ to the following…
    Actor: ActorTwo

      Conversation: Action 1: Play sound/motion

        Argument 3: ‘Conversation 0, Baz 0’.
        Now try it out. Cool, eh? That ‘Baz 0’ might confuse you, but don’t worry, you’re not the only one confused. Here’s something else to try out…

        “Conversation 0, Quux 0” Cross arms behind back
        “Conversation 0, Baz 0” Jump and shake arms a littleas if agitated
        “Conversation 0, Baz 0, Quux 0” Raise arms as ifto say I don’t know
        “Conversation 0, Bar 0” Lean backward as if surprised
        “Conversation 0, Bar 0, Quux 0” Cross arms in front
        “Conversation 0, Bar 0, Baz 0” Move arms as if countingor conducting music
        “Conversation 0, Foo 0” Raise left hand and nod asif greeting
        “Conversation 0, Foo 0, Baz 0” Nod head as in agreementor acknowledgement
        “Conversation 0, Foo 0, Bar 0” Take a step forwardwith one foot, then back
        “Conversation 0, Foo 0, Bar 0, Baz 0” Look right
        “Conversation 0, Quux 0, Foo 0” Cross arms
        “Conversation 0, Quux 0, Bar 0” Keep arms crossed

        These motions make a little color for your otherwise so boring conversation. One thing to notice is that speech technically last for just a moment. This means, if you play motion before speech, the guard will move first and speak after his little show, so play sound first.

        In addition to this Play sound/motion action, there are a lot of other possibilities. I’ll now explain some of them. To tell the truth, I don’t actually know the meaning of them all.
        Goto object

          Arg. 1: Object number or nameThe actor walks to the object defined in argument 1.Face

            Arg. 1: –

              Arg. 2: Object number or nameThe actor turns towards the object defined in argument 2.Frob object

                Arg. 1: Object number or nameThe actor pushes a button or pulls a switch or anything that is appropriate for the object. Note that the actor doesn’t have to be anywhere near the object, and doesn’t actually ‘push’ the object.Wait

                  Arg. 1: AmountSimply makes the actor to stand still for the amount of time. 1000 is one second.Add link

                    Arg. 1: Type of link

                      Arg. 2: To

                        Arg. 3: FromWith this you can add links in-game. For example, you have a button, but you want it to be active after the player has heard some valuable information. Like where the button is.Remove link

                          Arg. 1: Type of link

                            Arg. 2: To

                              Arg. 3: FromThis is the opposite of the Add link, but should be used more often. When you have a conversation, you should destroy theControlDevice link to it as soon as possible, so it doesn’t start all over again if player goes taffing around.Add/Remove meta-property

                                Arg. 1: ‘Add’ or ‘Remove’

                                  Arg. 2: Name of meta-propertyThis is quite like the two last ones, but this adds or removes the actor’s meta-property. If you don’t know what a meta-property is, read the corresponding tutorial.
                                  That’s quite about it. There are some other actions that I didn’t mention, but they’re not so important and if you really need them, you can easily explore them yourself. One thing to remember is that every action needs an actor. Even if they don’t actually do anything with the actor.

                                  In our example, we used a button to trigger the event, but it would of course be much better to activate it with player entering a specific room. This is specified in another tutorial.

                                  And now as you should be able to do conversations on your own, why don’t you try it out. Make a two person conversation, which consist motions and another actor walking to a button and pushing it, and then coming back. And make sure that the conversation cannot be started twice. Don’t worry about the meaning of the speech, just make it work.

                                  If you do something wrong, just check it from the tutorial. When you succeed, you can move to the next part.

                                1. Garrett as an actor and recording sounds
                                  Everybody remembers the infamous Cutty and the conversation in Cragscleft. This was the only conversation, where Garrett actually spoke in-game and was done with some obscure method called OldConversation and is much related on script. It’s simple to do an identical conversation with the normal method.

                                  The problem is that player isn’t actually a creature, so he/she cannot be an actor. If you’re thinking about making the starting point an actor or an actor that is attached to Garrett or something like that… forget it. It’s so much simpler to do this with VOTraps. As you remember from the last part, you can make actors to frob objects, and they don’t move in any way. So we plainly make the actor to push a button which has a ControlDevice link to aVOTrap which makes the sound.

                                  Let’s start with the VOTrap. If you don’t remember how it’s done, let me refresh your memory. Create a button and a VOTrap. Make a ControlDevicelink from the button to the VOTrap and a SoundDescription link from the VOTrap to the sound you want to hear. For example ‘garm0201’ is fine. Move the button somewhere near the start and try it. If you hear ‘Hmm… a few too many to get by here.’ coming ‘inside your head’, your VOTrap is working.

                                  Now we have to hide the button. Put it somewhere underground or just anywhere, where there is no room, so you could hear the button being pressed. When the actor now frobs the button, it will seem like Garrett just made a comment. Let’s look at the conversation then.

                                  Make the ’00’ a normal conversation part with someone as Actor1. If you want you can use one of the previous ones. When the actor has done his part we’ll make our trick in ’01’. We need two actions for this. The actor on both these actions is Actor1. The same one as in ’00’, but this time he just frobs the button and waits. Action0 is Frob object and argument 1 is the button number or if you have named it, you can use the name. Action1 is Wait andargument 1 is… let’s say 3000.

                                  Test it and you should now have a conversation with Garrett involved. Of course, the conversation doesn’t make much sense, because their topics don’t quite match. You can fix this by finding the sounds that make at least some reason or if you’re feeling creative, you can record your own sounds.

                                  To record sounds, you need an external program. I use GoldWave, but I suppose almost anything will do. For playback rate 22050Hz is good and saving format… well I use 8 bit mono, but 16 bit mono works too. Note that when you open the original sounds, if they seem to be ‘Microsoft ADPCM; 4bit’or something weird like that, you should change it to something more usual. If you save them in wrong format, it will crash Thief.

                                  Then the directories. Easiest way to do this is to create a \snd directory under the Thief directory and the unzip the files from snd.crf to that directory. You should then have, for example, the file C:\Thief\Snd\Guard3\English\Sg3c0101.wav in right place. Then you just re-record them. And don’t bother trying to put them back in the snd.crf for Thief looks first in the directories and then the Crf-files.

                                  Yep. That’s quite about it. You should now be able to your own conversations and make the actors do all the funny things. If something doesn’t work, try to find the reason first by yourself and then refer to the tutorial.

                                  If you need an example for this, try downloading my ‘level’ called ‘Conversation at the Gate’ from the Circle, HTTP://WWW.THIEF-THECIRCLE.COM/.

                                2. What else to do with conversations
                                  Conversation can be used in very multiple ways. Mastering it can make you be able to do most stunning tricks and solve the most serious problems on your levels. Of course, I admire it almost as much as Totality admires sources and receptrons… Right, Totality?

                                  You may have seen Little Mouse’s the Mouse Certified Alarm System. Now we’re making something like that, but with a little modification. The alarm will go off if the guard doesn’t press the button every two minutes. This isn’t probably the only way to make this, but I’ll show you how I did it. You can modify it on your own.

                                  Create some area, where you have a button on the wall. On the other side of the wall (in the solid void), make a blueroom (a room which isn’t seen in-game) and another button in there. Name the first button ‘CountDownButton’ and the second one ‘AlarmButton’. Create one guard somewhere near the buttons and one ‘FrogBeast’ inside the blueroom. Name the guard ‘Mr Jacobson’ and the frog ‘TimerFrog’.

                                  Now create patrol points (TrolPt) for Mr J and spread them around the area. Make sure they’re on a hight, where guards could touch them. Link the patrol points with each other with AiPatrol (for example, from first to second, second to third, third to first). Now give Mr J the property; Ai->Ability->Patrol: Does patrol: True, and place him upon one of the patrol points.

                                  Now we need to make Mr Jacobson push the CountDownButton, so we create a marker named ‘ButtonSpot’ in front of the switch and add a AiWatchObjlink from Mr J to a patrol point near the button. I suggest that you name the patrol point first. After we have created the link, we must edit its properties. change the properties to following:

                                  Watch kind: Self Entry
                                  Trigger:
                                  Radius 5
                                  Hight 5
                                  Req. awareness (0) None
                                  Line req. None
                                  Min. alertness (0) None
                                  Max. alertness (1) Low
                                  Exit:
                                  Link kill option Don’t kill
                                  Kill like links ( )
                                  No tesh once triggered ( )
                                  Reuse delay 20000 (which is 20 seconds)
                                  Reset delay 0
                                  Step 1: Goto object
                                  Arg. 1 ButtonSpot
                                  Step 2: Face
                                  Arg. 1
                                  Arg. 2 CountDownButton
                                  Step 3: Play sound/motion
                                  Arg. 1
                                  Arg. 2
                                  Arg. 2 WorldFrob 0, AtWaist 0, BellPull 0
                                  Step 4: Frob object
                                  Arg. 1 CountDownButton

                                  When you test it, Mr Jacobson should be patrolling around and when he comes by he goes over to push the button. You may need to move theButtonSpot so he doesn’t stand too far or too near the button.

                                  Now we can make the actual conversation. Create a marker called ‘TimerConv’ in the blueroom, and make a ControlDevice link from the CountDownButton to it. Make the frog actor one with the AiConversationActor link. Give TimerConv the normal properties and copy following to the conversation’s properties in step ’00’:

                                  Actor: ActorOne
                                  Action 0 Wait
                                  Arg. 1 120 000 (120 seconds)
                                  Actor: ActorOne
                                  Action 1 Frob object
                                  Arg. 1 AlarmButton

                                  This means that the frog will wait two minutes and then set off the alarm. Every time the guard (or a sneaky thief) pushes the button, frog starts counting from the beginning.Now we just need the alarm, so find the ‘RamirezAlarm’ and place it on the wall (note that some of the alarm lights don’t work) and just add aControlDevice link from the AlarmButton to the alarm.

                                  Add two more guards to see how it works out, and don’t forget a blackjack, so the alarm actually does go off (after mugging of Mr Jacobson).

                                3. Tips and hints

                                  • If you don’t seem to hear sounds, try building room database. Also check that rooms are correctly placed.
                                  • If the sounds disappear completely after trying the level once, try re-launching DromEd.
                                  • If an action doesn’t seem to work, check that you have right arguments. If you’re not sure, try rearranging them. Also verify that you have an actor selected.
                                  • Try doing your own combinations on motions.
                                  • Research the levels. For example, the following useful combination is servant’s motion for putting down the tray in Ramirez’s: WorldFrob 0, WithTray 0, AtWaist 0, BellPull 0
                                  • Try fancy tricks. In Datoyminaytah’s level, Farkas turns towards player, which is a spectacular result, considering it’s done with DromEd.
                                  • When recording, get some friends to do the sounds instead of manipulating your own voice over and over again. The result is much more pleasant.
                                  • If you have trouble check other texts like Mucho Macho DromEd guide. They can be found from the Circle, HTTP://WWW.THIEF-THECIRCLE.COM/

                                If you need help, write me, TEEMU.SALMELA@KOLUMBUS.FI or go to the Forum, HTTP://WWW.TTLG.COM/.

                                And if you don’t want to be labeled as a newbie, use the Forum’s search function first!

                                Deep Qantas (Teemu Salmela)
                                TEEMU.SALMELA@KOLUMBUS.FI
                                or ICQ# 36112496
                                Thanks to:

                                Totality and THE THIEF for support
                                Digital Nightfall for not losing his nerves with my posts
                                Datoyminaytah for his cool level (I still can’t understand how Farkus turns to player)
                                and last but not least
                                Glen Sawyer for translating this thing on HTML

                                End of tutorial.


                                About this entry