Demomission of how to fool guards with a magic whistle or spell scrolls for Thief II ==================================================================================== (c) by MadBull#34 (Special thanks to Sledge and Bumbleson. You both helped a lot!) I don't want the mission to be edited. It just shall show up an idea and how to make it. Distribution of this demo mission is allowed as long as it is free and the package is kept intact with my name on it. Please don't get me wrong but this is my very first release and I'm a bit proud to show something to pros like the most at the TTLG are (shows me that I'm not a complete newbie). I hope some of you will understand that. First of all this demomission is NOT Darkloader compatible. You'll have to use it in DromEd. You start with a magic whistle, 20 broadhead arrows and 40 spell scrolls, which disapear after usage. If a guard starts investigating, simply use a spell or the whistle, he should return to his origin place immediately like nothing happened. It works on AIs standing arround as well as on patrolling AIs. Remember the mission is complete dark (When they see you, the items won't work). They are just created for avoiding alertness caused by noise. In this final version (well, at least I hope it's final and bug free) the AIs needn't to be set up on each single one. The only thing to do is to type their object number in a single alert response (see below). AIs only react to the whistle and the scrolls on alert states from [None] up to [Moderate]. Once their alert state was [High], the whistle and the scrolls never will function again on them. It wouldn't be realistic. When the AIs are absolute sure, that someone's there (alert state [High]), the items surely would be too mighty, if you could still fool him/her. So here's, what I did: Needed: a button (say object number 1) another button (say object number 2) an animal (say object number 3, I've chosen a rat) a whistle (say object number 4) an emitter trap (say object number 5) A human AI (say object number 6) at least 2 seperate rooms For those who hadn't read a tutorial from the first both versions, I'll explain the problem from the beginning: What happens, when the guard gets alerted? To find that out, simply create a small mission place a guard in a room and do everything to the mission, like you do in every mission (load scripts, add starting point, build room brush,etc...). Ok if we go onto game mode and sneak behind the guard and jump up and down, he starts searching. Now go back and save your mission because we want to take a look at the guard, when he's alerted. Now type in the command window "set game_mode_backup 0" without quotes. This will prevent DromEd reloading your level when you exit the game mode. You will see your mission, like you left it with all changes you made in there. Note that you shouldn't save your mission from now on. or you will save the changes you made, too. Ok, now go into game mode, sneak to the guard, jump up and down and exit the game mode after he starts searching. Now take a look at the guard. Click on the guard and then on properties. If he just noticed "something" and he didn't start searching, you will see the his AI>State>Current alertness changed from [None] to [low]. He also got a new link AIAwareness from Guard to Player. But that's ok for us because he didn't start searching. So we don't care about that. If he started searching, something more happens: His current alertness changed from [None] to [Moderate] and he got 2 links. AIAwareness from Guard to Player and AIInvest from Guard to Player. Now double click on AllLinks. In the new window select the links and delete them. Go back into game mode and see, what happens. The guard turns arround like nothing happened and goes back to his origin place. So that's what we have to do in game: Delete these links! Now create some arrows and add them to your inventory by selecting the starting point and adding the link "Contains" from StartingPoint to Arrow. Go into game mode and shoot an arrow at a wall. Exit the game again and take a look again on the guard's properties. Now he has some other links: AIAwareness from Guard to Guard (himself), ~AIInvest from Guard to Guard, AIAwareness from Guard to Guard and ~AIAwareness from Guard to Guard. That's because you haven't made the sound, the arrow was it. If you delete the links, the guard gets normal again. With this knowledge we start the real demo. Close and reopen DromEd (you can delete this test mission now. We have no further use for it.). The only ways to remove a link is via a conversation or a response. I used a combination of both in the earlier mission, but there is a bug on that (the conversation actor has to be inside a specific radius, so you would need to use more than one conversation for a big mission.). So we have to use the responses. Here we go: Ok, make some rooms and a "blue room" (it's a room, the player can't get in on a nowmal way) where you place the emitter trap, both buttons and the rat. Make sure the blue room's texture is something like tiles, metal or at least stone. The arrows from the emitter trap shall be destroyed because I don't know how much the game will slow down if you use this trap a few hundred times. We want the AIs remove the links by getting a response. Because they only remove a link by a conversation or a response we want them to remove their links by a signal response (For our doings an alert response doesn't work). Unfortunately a signal can only be sent by a conversation or a response, too. So now we choose an alert response for the rat (3). It has to be an animal (or an undead creature or something like this) because we don't want this "actor" to be influenced by our whistle or scroll since make a setup for every human. We have to frighten the rat a bit (hehehe). Place the emitter trap (5) next to the rat (3) so it's arrow will be shot right into the ground next to the rat. select the button (2) and add the link: Flavor: ControlDevice From: A button (2) To: An emitter trap (5) When you go into game mode and frob the button (2), and arrow will be shot into the ground and the rat gets alerted. Good now most you propably know, that an emitter trap only works one time. To change that, select the trap click on properties and add S>Scripts. Leave the first argument line as it is and type in the second one "ReloadTweqEmit" (without quotes). Now we can use it as often as we want. We want the rat (3) do some certain things when it's alerted. Open the rat's properties and add AI>Responses>AlertResponse: Alert Level: (2) Moderate Priority: Absolute Response Step 1: Remove link Argument 1: AIAwareness Leave the rest blank because if you leave "Destination" and "Source" blank, it always means the owner of this response. We'll continue editing that response later. If we now use that button (2) the arrow will scare the rat, the rat (3) gets alerted and removes it's link AIAwareness (We don't need to remove the link AIInvest because rats don't get them (Have you ever seen an investigating rat?!?)). But how can we be sure that the rat exactly gets the alert state [Moderate]? It can be done be adding a maximum alertness level on the rat. I've chosen [Moderate] because the rat surely gets at least a moderate alertnes level when the emitter trap is used. add to the rat AI>AI Core>Alertness cap: Max Level: (2) Moderate Min Level: (0) None Min relax after peak: (0) None So if the rat relaxes again, it will be again on alert state [None]. But that doesn't change the alertnes back to [None] immediately after frobbing the button (2). What we need is a fresh "current alertness" with the state [none] copied to the rat to overwrite the old "current state". Now we have to work a bit with Sources & Receptrons (Again, thanks Sledge for that great S&R tutorial!). The basic idea is that the rat frobs the button (1) on alert state [Moderate], receives a stim from the button and the receptron of the rat copies the fresh "current alertness" on the rat. At first we need the rat to frob the button. Open again it's Alert Response and add: Response Step 2: Frob object Argument 1: 7 Leave the rest like it is. Now open the object hierarchy and select show tree: Act/React Stimuli. Click on "add" and type in a name for a new custom stim (mine was FoolStim). Ok, now we changed the usual gamesys (dark.gam). In order to get these changes loaded by loading the mission again, we have to set a new gamesys to our mission. In the command window type in "set_gamesys Fool.gam" (without quotes). If everything went fine you'll see "fool.gam" in the lower white line of DromEd. Of course you can use other names. Now save the gamesys and use the same name we set before. Save your mission and reload it. Now we can use our new stim. Open the properties of the other button (1) and add Act/React>Sources: Object: A Button (1) Stimulus: FoolStim Propagator: Contact Intensity: 1 Click on "Edit Shape" and set it up like this: Contact Types: Frob in World (nothing else) Velocity Coeff: 0.00 Frob Time Coeff: 0.00 Make sure that the line "Object" is the last one you edit (after edit shape, too). I don't know why but sometimes DromEd changes it back to "None (0)". Type in the object number of our button (here it's "1") and hit "OK". Now everyone who frobs this button gets this FoolStim. Now we set up how the rat should react to this FoolStim. Add Act/React>Receptrons to the rat. In the new window click on "add": Object: 3 (the rat's number) Stimulus: FoolStim Check no min and no max intensity Effect: Set Property Target Object: (check "me") Agent Object: (check "source") At "Edit Effect" type in "AI_Alertness". When the rat gets that stim, it copies the alertness of the button 1 (source) to itself. Agent Object has to be because the rat could set the property on it's own but it doesn't know how the property is set up. Add to the button (1) AI>CurrentAlertness: Level: (0) None Peak: (0) None This is the new alertness the rat will have after using the alert response. Go into game mode and make sure to be near to the button 1. You'll notice, after frobbing the button 2 several times, the rat stops reacting like we set it up in the alert response. the reason is, when you frob button 2 fast enough the "current mode" of the rat changed from [normal] over [efficient] to [Super efficient]. To avoid this, add to the rat AI>AICore>EfficiencySettings. Just uncheck "Enabled" and leave the rat as it is, so the rat can't change it's efficiency anymore. We now have a situation, where at least nothing happens after froobing button 2. But it wasn't work for nothing. We have an alert response, we can work with. And with this alert response we can send the signal which lets the AIs delete their links when they are alerted! To make the rat send signals after it's alerted edit again its alert response: Response Step 3: Signal Argument 1: CalmDown (or whatever you choose. Remember the name.) Argument 2: 6 (obj number of the human AI. If there are more than one type the obj numbers like this: 6,8,11,13,144,etc... . This is the only thing you'll have to edit after we have finished. Here the obj number of every human AI has to be, you want to be affected) Argument 3: 9999 (This is the radius where it shall work. Nearly 10.000 feet should be enough for sending the signal through the hole level. If not, how about "100000"?) Leave the rest, like it is. Now we frob button 2, every human AI gets a signal. Go to object hierarchy, select Human(-14) and hit "edit". We want every human to be affected, so we set it up on Human(-14). Add AI>Responses>SignalResponse: Signal: CalmDown (or whatever you named it) Priority: Absolute Response Step 1: Remove Link Argument 1: AIAwareness Argument 2: (leave blank!) Argument 3: (leave blank!) Response Step 2: Remove Link Argument 1: AIInvest Argument 2: (leave blank!) Argument 3: (leave blank!) Response Step 3: Remove Link Argument 1: AIAwareness Argument 2: Player Argument 3: (leave blank!) Response Step 4: Remove Link Argument 1: AIInvest Argument 2: Player Argument 3: (leave blank!) Like I told before leaving the source or destination blank means the AI shall take his own object number for it. In game mode make the guard search for you. Run to the button 2 and frob it. And guess what: the guard turns non-alerted like nothing happened. So far on part one. Now we want to make the button 2 being frobbed by using our whistle (4). Select the starting point, click on "links" and then on "add": Flavor: Contains Source: (object number of the StartingPoint) Destination: 4 (our whistle) As we want to frob the button (2) frobbed every time when we use the whistle, we need to add to the whistle Act/React>Sources: Object: 4 Stimulus: FoolStim (Don't care that this stim is beeing used before. It won't overlap.) Propagator: Contact Intensity: 1 Now "edit shape": Contact Types: Frob in Inv (nothing else) Velocity Coeff: 0.00 Frob Time Coeff: 0.00 Again, make sure "object" is the last thing, you edit. Hit "ok". When we frob the whistle in our inventory, we hear the whistle sound and we get the FoolStim. Now we want, when we get this stim, to frob the button 2 in order to frighten the rat. Go to object hierarchy, select "Avatar" and add Act/React>Receptrons: Object: Avatar Stimulus: FoolStim check no min and no max intensity Effect: Frob Object Target Object: 2 (our button) All right, now we have a magic whistle. Save gamesys & mission, reload, go into gamemode and make fun of the guards like you want:-). To do this on spell scrolls it is a bit more complicated: Go to Object Hierarchy and select Physical>Household>Scroll>Schematics click on "Add" and type in the name of your new scroll. Hit "OK" select your new scroll and click on "Edit". Now add S>Scripts and type in the first argument "EatFood"(Nothing else). The main reason for this is that I want the scroll to disapear when frobbed in inventory. Then add EngineFeatures>Frobinfo: World Action: Move Inv Action: Script, Use Ammo Tool Action: [None] Then add EngineFeatures>StackCount and type in "1". After that add EngineFeatures>CombineType and type "schematics" Finally add Act/React>Sources and do the same like the whistle. Good, it should work now. But what's when the AI gets the alert state [High]? Right now our whistle and scroll still works on that alert state. We want to change it. The idea is that the AI shouldn't delete their links when receiving the signal. So we need a new signal response for the CalmDown-signal. Go to object hierarchy, select Human(-14) and hit "edit" Add AI>Responses>AlertResponse: Alert Level: (3) High Priority: Absolute Response Step 1: Frob object Argument 1: 1 (our button with the FoolStim-source on it) Leave the rest blank. Now, when the AI gets high-alerted, he frobs the button 1 and gets the stim. Ok, add Act/React>Receptrons: Object: -14 (all humans) Stimulus: FoolStim check no min and no max intensity Effect: set Property Target Object: (check "me") Agent Object: (check "source") Click on "Edit Shape" and type in "AI_SigRsp" (without quotes). Like we did before for the "current alertness" for the rat, we now add a new signal response on the button 1. Select our button (1), hit "properties" and add AI>Responses>SignalResponse: Signal: CalmDown Priority: Absolute Leave the rest blank. Now everyone, who gets high-alerted once, he will get this new signal response and his response to the signal will be: ignorance. The deleting-link-thing will not work on this guy anymore but it will still work for other ones. Voilá! That's all. (Do yourself a favour and link the whistle directly in your inventory. It's as big as a trumpet. Looks just ugly when placed in the world.) -------------------------------------------------------------------------------------------- Known bugs: - !Maybe because I have the german version of Thief II you'll propably have ! !to compute pathfinding database before it works. I think some day I'll go! !out and buy the english version. Sorry for that, guys, I can't fix that. ! -------------------------------------------------------------------------------------------- Criticism and opinions how to optimize this are welcome (of course corrections about my spelling, too!) at any time. Mail to: MadBull#34 (Samael7011@aol.com) This level was not made and is not supported by Looking Glass Studios or Eidos Interactive. Have fun!