Creating Your Own World For Arcanum
The Arcanum Modmaking Tutorial - AMTUT v1.1

Tutorial Version 1.1
Written By: DarkUnderlord
darkunderlord@hotmail.com


TABLE OF CONTENTS
 
STRANGLING YOURSELF WITH THE ROPES
Chapter 22    --    Planning and Designing a Module
Chapter 23    --    Innkeeper and Expert/Master Training



CHAPTER 22
PLANNING AND DESIGNING A MODULE

Before you even start a module, it is a good idea to plan it out first. Why? Well, by developing a plan for your module, you can stay true to the story line when creating dialog for NPC’s. You can devise quests that fit in with the story line you are trying to create and if you have a plan then making your module is a whole lot easier.

So, what kind of plan do you need? Well, you need to know the general overall direction that the module you create will be heading in. For example, are you creating a hack and slash dungeon adventure or a more involved story? If you are creating a hack and slash, will it be set in caves or will it be outside? Will it be a mixture of both? (Generally speaking, hack and slash modules don’t need that much planning.) It is a good idea to write down your thoughts on a piece of paper or to type them up in a text file or word document. What do you need to write? Well, you need a main plot. That is, what is the ‘big thing’ the player is playing your module to do? Is it to save a local village from an evil monster? Or is it to find a missing person? Perhaps it is to solve a murder! Whatever your main plot is, write it down and develop it. What’s the story behind the plot? Is the monster attacking the village for some reason? A reason that might be mentioned in a book the player might find? Whatever you think of, write it down, write it all down. When you are developing an involved story line it is important to have thought out as much as possible before starting.

For the AMTUT module that I am creating as I write this tutorial, I have been thinking of ideas for what to do ever since I started. Now seeing as you’re probably going to create this module as well (from following the tutorial) it will be a good idea to share those ideas with you. So, here goes:

AMTUT Module Notes
Created by DarkUnderlord

Main Plot Story

An ancient king by the name of Amtut was turned into a mummy many years ago and is hiding in some caves near a town. The mummy used to live in the dark depths of the caves until a while ago, he decided to venture out and see how the world had changed since hiding himself away many years ago. Upon venturing out of the caves, he found a nearby town which he has been observing at night from a farm on the edge of town. However, the farms’ sheep bleated constantly whenever they saw or smelt Amtut and this disturbed the farmer. The farmer, upon investigating one night, saw the mummy Amtut and attacked him. Amtut fled back into the depths of the caves.

After Amtut was seen by the local farmer, the farmer told everyone in town of what he had seen. The villagers had a meeting about it but were undecided on what to do. Some hoped that the mummy had been scared off and would not return, others were concerned that the mummy would come back and attack them. Eventually, the villagers decided to accept the offer of help from an adventurer who was currently in town. The adventurer went to help out but after two weeks in the caves, returned and was called away on an urgent matter. The villagers held another meeting which ended in argument and as such, nothing was done for over two months.

Since then, the local population have been living in fear of the mummy that’s hiding up in the caves. However, they are all too frightened to do something about it. Eventually, the villagers decided to look for another adventurer who would go up into the caves deal with Amtut. Word reached the PLAYER who arrives by ship at the local docks.

The player must remove the threat posed by Amtut.

That’s the main plot. It’s a basic outline of the story, why the player is there and what the player is there to ultimately achieve (of course, there will be side quests along the way). Now it is by no means finished. What we need to know now is, how will the player accomplish this task? In what ways will the player be able to finish this quest? What threat is posed by Amtut? Better yet, what is the actual quest? Is it to kill Amtut or do something else to him? To answer this, it’s helpful to finish the main plot by asking the question, “Who is Amtut?”

Main Plot Story - Continued
Amtut is ultimately a good mummy who doesn’t want to harm anyone. He just wants to live peacefully and if possible have his old human body back. After he was spotted by the farmer, Amtut is now deep within the caves and too afraid to come out. When he was turned into a mummy all those years ago, he was promised it was part of a process to make him young again. However, he was tricked and now lives with a curse over his head. If he is killed by someone with a heartstone then he will die peacefully. However, if he is killed by someone who does not have a heartstone in their posession, then Amtut will be cursed forever to be stuck in limbo between this world and the next. (He’ll be a spirit floating above his corpse for all eternity)

Okay, so we have an idea of who Amtut is and why he is there. That’s pretty much all we need for the main plot. All it is there for is to help you when it comes to writing dialog for NPC’s. There is nothing worse than starting dialog and having no idea of what the NPC should say. By having a main plot outline you can give the NPC things to say that fit in with the story line. The only thing worse than not having any idea of what an NPC should say is creating an NPC with dialog that doesn’t fit your story.

Now, we need to work out possible alternate endings. How will the player be able to finish this quest and remove the threat posed by Amtut? What will a player with persuasion skills be able to do? Can we talk Amtut in to leaving the area? Can we persuade the villagers that Amtut poses no threat? Perhaps we can heal Amtut and give him his body back? Or kill him while we’re in possession of a heartstone? They all sound good to me, so let’s write them down.

Alternate Endings
How to remove the threat posed by Amtut.
1. Good Expert of Persuasion: Persuade Amtut to leave the caves and travel somewhere else so that he doesn’t disturb the local villagers.
2. Good Master of Persuasion: Persuade the Villagers that Amtut poses no threat and that he will not harm anybody in the village. Perhaps even persuade them to visit him from time to time.
3. Evil Expert of Persuasion: Convince Amtut that the villagers are out to kill him and so he must kill them all first. The player can join with him on a crusade to wipe out the town.
4. Evil Combat: Kill Amtut and leave his soul trapped forever in his body. The villagers will never return to the now ‘haunted’ caves after that.
5. Evil Combat: Kill all the villagers and then tell Amtut that he is free to go. Amtut is horrified by what the player has done and attacks them unless they are an Expert of Persuasion.
6. Good Combat: Kill Amtut while the player has a heartstone in their inventory, thus releasing him from his curse by releasing his soul.
7. Good Magickal: Find a Magick spell to return Amtut to his original human body.
8. Good Technological: Find a Tech device to return Amtut to his original human body.

As you can see, that’s 8 different endings. Now, whether you end up making them all or whether you decide to leave some out really doesn’t matter. All that matters now is that you have some ideas for endings in place so you can start planning on how you might accomplish them. If you decide certain endings are too hard to do, or not worth it, or perhaps they don’t fit the story line, then you can drop them later on. Notice also how there is a different ending depending on the style of play that the player might have? An evil player will probably enjoy making Amtut suffer for all eternity with ending number 4. A good player might persuade the villagers to accept Amtut or even help him by finding a way to get his body back. Notice how I’ve also decided to put in two different ways to give Amtut his body back? One way for a Magical player and another way for a technological player. All of these are valid endings because it’s your module and whatever you decide to be an ending, can be an ending. There are no rules. (Just as long as it fits the story line, otherwise the people who play your mod won’t be happy.)

So we have a main plot and we have some ideas on how to finish that main plot. What we need now is a bit more detail. What we need to do is to put in everything between the player arriving at the docks, right up to the endings. Will the player just arrive and head for the caves? Or will the player have to do something else first? Maybe the player has to find out a little about Amtut before they can face him? Or maybe, the player needs to do some quests in town so that they can gain some experience points and go up a few levels before tackling the difficult monsters in the caves. Okay, so we know the player is going to be at the docks, maybe even still on the ship when they start this module. So what happens next? This is where I usually use short sentences to figure out what I want to happen next. Incidentally, what you’re about to read may take you five minutes to finish but it took me about three days to think up.

Main Plot Outline
1. Player starts on deck of ship after sailing from Tarant. Captain announces arrival at village by initiating dialog with player.
2. Player gets off ship and walks down docks to shore.
3. Villager runs up asking if he is adventurer and gets into dialog with player, fills player in on story
4. Quest 1000: Deal with the mummy that is threatening the town
5. Player is told by villager to go to the local inn to find out more about the mummy
6. At local inn, player meets talkative local villager
7. Local villager says that the last adventurer who tried ‘DarkUnderlord’ (Ha! That’s me!) wrote a story of his adventure and left it at the local library. Book was called ‘Story of Amtut’.
8. Player given Quest 1001: Read Book ‘Story of Amtut’
9. Player runs to Library, talks to Librarian about ‘Story of Amtut’
10. Librarian says she would give player book but needs player to help her first. Player must find and return overdue book ‘All Guns Blazing’ for Librarian.
11. Quest 1002: Return Overdue book ‘All Guns Blazing’
12. Overdue book borrowed out to bartender at local bar. Player runs there and meets bartender
13. Bartender says he would return book but it is in the safe in his cellar and cellar has been over-run by rats. If player clears cellar, player can have book and a free drink.
14. Quest 1003: Exterminate the Rats in the Bartenders Cellar
15. Player is given key to cellar and a key to the safe and runs down to kill all rats. Book is found in safe in cellar
16. Player talks to bartender after killing all rats.
17. Completed Quest 1003: Exterminate the Rats in the Bartenders Cellar
18. Bartender says thanks and gives player free drink and a few coins for the late fee on the book
19. Player runs to library and returns book ‘All Guns Blazing’ and pays late fee for bartender.
20. Completed Quest 1002: Return Overdue book ‘All Guns Blazing’
21. Librarian says thankyou and gives player book ‘Story of Amtut’
22. Player reads book ‘Story of Amtut’
23. Completed Quest 1001: Read Book ‘Story of Amtut’
24. Quest 1004: Talk to the farmer who attacked the mummy
25. Player has to find farmer on outskirts of town (farm should be a bit hard to find, perhaps a small dirt path that involves killing a few wolves? maybe ask villagers/librarian for location?)
26. Player eventually finds farmer and talks to him
27. Completed Quest 1004: Talk to the farmer who attacked the mummy
28. Farmer points player towards location of caves
29. Quest 1005: Go into the caves and find Amtut’s lair
30. Player goes into caves, battles way through labyrinth of tunnels and finds Amtut’s lair
31. Completed Quest 1005: Go into the caves and find Amtut’s lair
32. Player can either attack Amtut outright and leave his soul trapped forever or,
32. Player can persuade Amtut to leave or,
32. Player can talk to Amtut, then run back to town and convince town mayor to let Amtut live in peace.
32. Player can persuade Amtut to slaughter all the villagers in town or,
32. If player has killed all the villagers then player can tell Amtut what has been done and Amtut may attack if player can’t persuade him that it was a good thing or,
32. Player must find a heartstone, then return and kill Amtut with the heartstone in their inventory or,
32. Player must find a spell to return Amtut to his original human body or,
32. Player must find a Tech devide to return Amtut to his original body.
33. Completed Quest 1000: Deal with the mummy that is threatening the town
34. Player must now go back to ship and sail back to Tarant.
35. Ships captain has been busy getting drunk and hasn’t fixed ship or re-supplied.
36. Quest 1006: Get ship repaired (find tools and material)
37. Player finds tools and materials somewhere (from local?) and runs back to ships captain.
38. Completed Quest 1006: Get ship repaired (find tools and material)
39. Player must now find/buy supplies for ship.
40. Quest 1007: Re-supply ship (Find certain items)
41. Player buys supplies from local traders or finds supplies.
42. Player runs back to ship with supplies and gives them to captain
43. Completed Quest 1007: Re-supply ship (Find certain items)
44. Player tells Captain that he/she is ready to sail back to Tarant
45. End Game and Show Slides

Obviously this is not a detailed explanation but it should give you a very clear idea of what you now have to plan out in more detail. You should have a rough idea of how many quests there will be in the core of your module and also an idea of a few more locations that you’ll need to build (local inn, farm etc…) Also, this is a short module, the quests above aren’t very involved, but they are a bit varied as there is a killing quest and a few retrieve item quests. So what’s next? Well, we need to go through and plan out what buildings are going to be added to the village. We need to come up with some names for local NPC’s and we need to plan out some dialog for them as well. We also have to detail the quests a bit more. Just what exactly is involved in each one? They’re all fairly simple quests but we still need to work out the story behind them. For example, just how did the bartenders cellar become over-run with rats? Is it important? What kind of story will the bartender tell the player when he talks of his cellar? Will he talk about how embarrased he is because he’s afraid of rats? Or hasn’t he cleared the cellar out because he just hasn’t had the time? What kind of responses is the player going to be able to give? What kind of questions will the player be able to ask the bartender? All these sorts of things need to be thought of BEFORE you start dialog. Otherwise, you’ll start writing dialog without any clear idea of where you’re going and you may create a dialog that just doesn’t make any sense and doesn’t fit the story line or the characters involved.

So, the next step is to plan out the locations that are needed for this module. I usually do this first with a simple list and then developing the list out into a more descriptive plan of what is at each location. What I have below started out as just a list of places before I developed it. Anything with a question mark in the list below is something that I’ve thought of adding, but I’m not sure whether I want to add it yet or not (I may not make a final decision until I actually get up to creating that part of the module).

Locations
Docks/Ship: Simple docks. Only one ship (but space for two?) Player start location.
Inn: Small village inn. A few people, a place the player can sleep.
Library: Local Library. Only small, a few books, friendly librarian.
Bar: Local bar. A few tables, fireplace. Wine/Drink Cellar filled with rats
Farm: A sheep farm on the outskirts of town. Sheeps should just roam country side, (fence?)
Caves: Caves far away as possible from town. Labyrinth like so player can get lost and confused. Full of the usual monsters, rats, spiders and a few harder creatures as the player gets towards the bottom of the caves.
Lair in Caves: The Lair of Amtut. Sarcophagus in which Amtut sleeps. Plus a passage way which takes player directly back to outskirts of town. (Perhaps near sheep farm? Passage come up through well?)

Okay, so now we have some locations for the village. Some of them we have already built, others we will have to add. We also have a little description for each of the locations that will help us out when we build them in WorldEd. It’s sometimes a good idea to put in any NPC’s that are found in that location as well, or you can do that in the NPC list below. If you haven’t noticed, I have left out a few locations. Namely the local traders. Also, I haven’t thought of any names for the places. Eg. What is the local inn called? Is it just ‘The Inn’? Or should we give it a decent name. I also haven’t thought of a name for the town yet. These are things that you can add to the list as you think of them. For now I can’t think of any names or other locations (perhaps a town/meeting hall and another farm as well as some normal houses?) so let’s move on. (If I have added in names of places, it means that I thought of them later on) The next thing we need to figure out is what people are in the town? What are their names? Where will the player find them? Will they give us any quests? When it comes to NPC’s like this, I usually do the same as the above list and put in a description as well. I usually write names in as I think of them. Sometimes I think of a name I like right away, other times I may not think of a name until I actually start creating that character in WorldEd.

NPC’s
Ships Captain (Captain Ahab): Found at start. Captain of the ship that the player sailed in to town on.
Villager at Docks (mayor/leader?): A villager who runs up to the player as soon as they step onto the docks. Gives player the overall ‘save town from mummy’ quest 1000.
Inn Keeper (Frances Blake): Local inn keeper. Player can joke about Inn keepers name. Frances, hah! Nice name etc…
Talkative Villager in Inn: Tells player of the book ‘Story of Amtut’ (but only if the player pays him?)
Librarian: Librarian, gives player ‘return book’ quest and ‘Story of Amtut’ book when ‘return book’ quest is completed.
Bartender: His cellar is filled with rats. He hasn’t cleared it out because he hasn’t had the time to. If the player is an Apprentice of Persuasion, then the bartender will break down and say that he is afraid of rats. Player can then insult him (scaredy cat!) or say he understands.
Sheep Farmer: Tells player of the caves and tells ‘beat up’ story about what happened when he met the mummy. Tells how brave he was and how he ‘vanquished’ the mummy and it will never return because he’s so great etc…Player can then say something that makes farmer scared and change his mind. Farmer will then quickly tell the player that he must kill the mummy.
Mummy (Amtut): The Mummy. See notes on Alternate Endings and Main Plot for more info on background and story. Also, check ‘Story of Amtut’ book that is already written.

Notice how in the above list I have written a few dialog suggestions as well? This will help later on when it comes to properly planning out that dialog. Writing down things as you think of them is always a good idea. Of course this is not a complete list of ALL the characters that will be in the town. But, it is the minimum characters that we will need to create in order to finish the main plot. As you think of NPC’s to add (perhaps an insane villager who went crazy from de-weeding the ocean???), just add them to the list with a description of who they are, where they will be found in the module and maybe a few dialog ideas. Also, if you add an NPC and think of a quest that that NPC will give the player, then add that in the notes as well.

Well, we have a basic list of Locations and a basic list of NPC’s which we can now add to as we think of things. What do we need to do now? Well, starting at the start of your module and moving all the way through to the end, it’s time to detail it out by thoroughly planning the quests and dialog involved with each character as we go. (I usually write dialog plans up in separate a text files or word documents, that way I can keep the overall module notes and the well planned dialog separate.) So, what do we start off with? Well, we know that the player arrives on a ship after being called in to help the town. So it would be a good idea to start there. However, to keep this tutorial nice and simple, I’m going to ignore the core of the module (deal with Amtut) and instead I’m only going to do the ‘Read the Story of Amtut’, ‘Return overdue book for Librarian’ and the ‘Exterminate the rats in the Bartenders Cellar’ quests. This will give you an example of some different type of quests and how you can go about them. So, for our dialog plan, let’s start off with the NPC who is going to tell the player about ‘The Story of Amtut’. How you go about dialog plans is up to you. I haven’t got any absolute set method yet but I’ve found that the way I’m about to do it below is pretty good.

NOTE: These dialog plans below look much better when they're tabbed out like they are in the Word document I copied them from. In actual fact, they look damn right confusing when they're all messed up like they are below.

Talkative Villager - Player meets at Inn (on docks in tutorial version)
Player starts off tutorial version at docks. Walks along docks and first NPC player sees is this guy. This guy (NAME??? - Gerald?) tells player that if he wants to know about the Mummy that was seen, he should read the book ‘The Story of Amtut’ which was written by a previous adventurer who was called away before being able to deal with the Mummy (This may not make much story sense in module due to the lack of every other quest and other NPC’s to add to the story line, but hey, it’s only a tutorial).

Details: Old guy. Called ‘ol’ Gerald’. Talks like ‘ya’ and ‘yer’ instead of ‘you’.

Player first meets NPC - or Player has not talked about Story of Amtut
Greetings there stranger! What brings you to Grayhills?
1. Nothing much, just lookin’ around. Quest read ‘Story of Amtut’ = Not Mentioned - 0
Well that’s nice of ya’ stranger. Hey listen, have ya’ heard? There’s been some sighting’s of a Mummy out by one of the sheep farms. Er... Seeing as this is only the tutorial version, there actually aren’t any sheep farms... Or for that fact any Mummy yet.... But hey! I’m thinking a fella like yer’self might still be a little interested. What do ya say?
1.1 Hmmm... Sounds interesting... Please, continue.
Well I’ll be! I figured ya fer the adventurin’ type! Now listen, I don’t know much, but there’s a book over at the Library called ‘The Story of Amtut’. Go ‘ave a read of it. It’ll tell ya an interestin’ story about all this here Mummy business.
Quest: Read ‘Story of Amtut’ = Mentioned - 1
1.1.1 Thank you for that. I’d be very interested in reading this book.
I damn near figured ya would! Ol’ Gerald here can tell these adventurin’ type from a mile away I can! Anyway, about that book. Go ‘ave a chat with the Librarian over at the Library across the way here. She’ll give the book to ya. Once you’ve read it, you come back ‘ere and tell me okay?
Quest: Read ‘Story of Amtut’ = Accepted - 2
1.1.1.1 A:
1.1.2 No, forget it. I’m not much of a reader.
Go to response 1.2
1.2 No, I’m not into adventuring.
Well than you suit yer’self. But listen, if’n you wanna know a little bit more about all this, you come back and have a chat with ol’ Gerald here and I’ll point ya in the right direction. Okay?
1.2.1 A: (EXIT)
2. About that book Gerald... Quest read ‘Story of Amtut’ = Mentioned - 1
If Player is Smart (int 5)
Have ya decided to read it? I’m thinkin’ a smart fella like you would be interested in a good read. What do ya say?
2.1a Sure, I’ll read the book.
Go to response 1.1.1
2.2a No. I’m still not interested.
Go to response 1.2

If Player is Dumb (int -4)
Hmmm.... Reading a book might be a little struggle for one such as yer’self. Oh well, that won’t matter much though! It’s a very good book and it’s real well written. Are ya interested in readin’ it?
2.1b Sure, I’ll read the book.
Go to response 1.1.1
2.2b No. I’m still not interested.
Go to response 1.2

3. I’m sorry, where was this book again? Quest read ‘Story of Amtut’ = Accepted - 2
Over at the Library! It ain’t that hard to find. Where else do ya think a good book would be ‘round ‘ere? Just cross the road here and there you are! Right in front of where ya wanna be.
3.1 A:
4. Hey Gerald! I read the book. Quest read ‘Story of Amtut’ = Completed BUT NOT Reported - 3
You ‘ave? Well then! You’ve gone and completed all there is to do in this tutorial version! Congratulations! Hey listen, if you wanna have a bit more of a wander around then you go and do that. But when you’ve finished, you come back ‘ere and tell me you’re all done. Then, if you’re really sure, I’ll end the module for ya. How’s that sound?
Quest: Read ‘Story of Amtut’ = Completed - 4
4.1 I’m ready to end the module now.
Go to response 5.1
4.2 Great! I’ll go have a look around, seeya. (EXIT)
5. Hi Gerald. I’m all done here now. Quest read ‘Story of Amtut’ = Completed - 4
All right then. Are ya sure ye’ be ready to finish the module?
5.1 Yes. Let’s end this ‘ere dang module.
END GAME AND PLAY SLIDES
5.2 F: (EXIT)
6. E:

Librarian - Player meets after talking to ol’ Gerald at the docks
After talking to Gerald, the player is given the quest ‘read The Story of Amtut’ and is pointed towards the Library. At the Library, the Player asks for the book ‘The Story of Amtut’ (if they have accepted the quest) but is told that the Librarian doesn’t want to give the book out. Player asks anything they can do to change mind? Librarian gives player ‘return overdue book from Bartender’ quest.

Details: Librarian, educated. Wears glasses, likes books. Doesn’t like dumb people?

Player talks to NPC
What can I do for you?
1. What can you tell me about the Library?
If PC Smart
Well, this library was established some time ago by a great builder who very carefully put all these piles of books here. The great builder did want to put some NPC’s in here reading the books but thought that it might complicate the tutorial too much. I can’t tell you much more than that because otherwise this dialog will get too big.
1.1 A:
Go to response 1

If PC Dumb
[She looks at you disdainfully] Well, this library has BOOKS. Do you know what a BOOK is? Hmmm....... I doubt you’ve ever even seen a BOOK in your entire life!
1.1b Me no wat book is!
Oh goody. Well then this library is full of them. Lots of them. All over the place. The great builder who built this library decided that it would look more ‘library-ish’ to have books everywhere. I can’t tell you much more than that because my dialog has been limited due to tutorial constraints. Does that help you?
1.1.1 A:
Go to response 1
1.2b Me not like lady! Lady haf to die! (COMBAT)
Float line ‘Aaargh! Someone! Help me please! A madman is attacking me!’ above NPC

2. I understand you have a book that I’d be interested in. If quest ‘read Amtut’ = Accepted AND quest ‘return book’ Not Mentioned
Well this library has several books. Which one in particular are you after?
2.1 I’m after ‘The Story of Amtut’.
Ahhhhh... Yes, that particular title was only just aquired by the library. As such, you won’t be able to borrow it at this stage. Hmmmm... However, if you really are interested in it, I suppose that if you were to do something for me, I’d let you read it.
2.1.1 Okay, what do I have to do?
Well, last month I lent out a book to the bartender of the local bar and he hasn’t returned it yet. The book is very much over due and I would like the title back in safe hands. If you were to return that book for me, then I’d let you read the book you want.
Quest ‘return overdue book’ = Mentioned
2.1.1.1 Okay, that sounds fair.
Great! Just run over to the bar now and get the book from the bartender. Oh, I’ll also need a late fee of 50 coins from him as well. Good luck.
Quest ‘return overdue book’ = Accepted
Have late fee as Global Flag, not mentioned in quest?
A: (EXIT)
2.1.1.2 How about I kill you and take the book I want instead [draw weapon]... (COMBAT)
Float line ‘Aaargh! Someone! Help me please! A madman is attacking me!’ above NPC
2.1.1.3 I’d have to think about it a bit first.
Very well then, but if you change your mind, just come back and see me.
2.1.1.3.1 E: (EXIT)
2.1.2 F: (EXIT) 2.2 F: (EXIT)

3. I’ve decided to get that overdue book for you. If quest ‘return overdue book’ = Mentioned
Go to response 2.1.1.1

4. Where was that overdue book I had to get again? If quest ‘return overdue book’ = Accepted and overdue book NOT in inventory
The bartender has it. Go ask him. He owns the bar just across the road next to the shore. I’ll also need you to get the late fee of 50 coin.
A: (EXIT)

5. Here’s that overdue book you wanted me to get. If quest ‘return overdue book’ = Accepted and overdue book IS in inventory
Oh thank you [she takes the book from you]! I’ve been waiting for this book to be returned. Did you get the late fee?
Quest ‘return overdue book’ = Completed
5.1 Yes, here it is [give her 50 coin].
Thank you very much. I’ll be able to buy those new books I wanted now! Now... Let me see here [she sorts through a pile of books on her desk]. Here we go! ‘The Story of Amtut’. Be careful with it now [she hands you the book]. When you’ve finished reading it, give it back to me okay?
Set Global Flag ‘paid late fee’ to 1
5.1.1 A: (EXIT)
5.2 Well, I tried [tell her the story].
Hmmm.... Okay, I’ll let it pass this time. How unfortunate that I won’t be able to buy those new books I wanted though! What a pity. The Library is in desperate need of new books. Thanks anyway for returning the overdue book for me. Now... Let me see here [she sorts through a pile of books on her desk]. Here we go! ‘The Story of Amtut’. Be careful with it now [she hands you the book]. When you’ve finished reading it, give it back to me okay?
5.2.1 A: (EXIT)
5.3 Oops! I forgot. Does it matter?
Hmmm.... I suppose it’s not that important. I’ll let it pass this time. How unfortunate that I won’t be able to buy those new books I wanted though! What a pity. The Library is in desperate need of new books. Thanks anyway for returning the overdue book for me. Now... Let me see here [she sorts through a pile of books on her desk]. Here we go! ‘The Story of Amtut’. Be careful with it now [she hands you the book]. When you’ve finished reading it, give it back to me okay?
6.3.1 A: (EXIT)
7. E:

Bartender - Runs the local bar
Once the player has talked to the Librarian, the player will be able to ask the Bartender about the overdue book. The Bartender will say that the book is in the safe in his cellar and his cellar is filled with rats. He gives player the key to cellar and a piece of paper with the combination of the safe on it (set global flag when player reads note with safe combo on it so that player can open safe if flag is set) Player empties rats out of cellar, get XP and returns book to librarian.

Details: Bartender, serves drinks. Cellar is filled with rats and he hasn’t emptied it because he’s scared of rats. Doesn’t like them. In actual fact, he’s petrified of them.

Player talks to NPC (NOTE: I just copied the bartenders already existing dialog out of his .dlg file, pasted it in here and altered it)
G: (Standard Greeting)
1. {I'd like a drink please.}{}{5}{}{20}{}
{20}{Certainly sir. That will be 10 coin.}{No problem ma'am. That will be 10 coin.}{}{}{}{}
{21}{Here you go.}{}{5}{$$10}{30}{$$-10}
{22}{Uh... here.}{}{-4}{$$10}{30}{$$-10}
{30}{Here you are sir... Enjoy. [He hands you a drink.]}{Here you are miss... Enjoy. [He hands you a drink.]}{}{}{}{}
{31}{Thank you. [You drink it down.]}{}{5}{}{-2}{}
{32}{Uh... T'anks. [You drink it down.]}{}{-4}{}{-2}{}
Go to response 2 (line 40)
1.1 Actually, could I have your special mixture? If quest ‘exterminate rats’ = Completed
Go to response 6.1
{23}{F:}{}{1}{}{0}{}

2. Training: {T:8, 11}{}{1}{}{40}{}
{40}{Can I get you anything else, sir?}{Can I get you anything else, miss?}{}{}{}{}
{41}{Yes, a drink, please.}{}{5}{}{20}{}
{42}{Yup! Me wan' drink.}{}{-4}{}{20}{}
{43}{T:8, 11}{}{1}{}{40}{}
{44}{E:}{}{1}{}{0}{}

3. I’ve come to collect an overdue book for the Library. If quest ‘return overdue book’ = Accepted
Oh.... Er.... You have? Er... [he looks uneasy] There’s just a slight problem with that.
3.1 And that problem is???
Well... You see... [The bartender looks uneasily around the room at his customers and lowers his voice] The book is in the cellar and the cellar is full of RATS!! Hundreds of rats! Thousands of rats! They’re everywhere! Crawling all over my cellar, eating their way through the barrels of my good wine. Why, I haven’t been down there for WEEKS because of the rats and now, I’m almost out of supplies!
3.1.1 Erm... Why not kill all the rats?
Well, I would, but running a bar can be quite time consuming and I just haven’t been able to find a spare moment to run down there and get rid of them all. Particularly when I’ve got so many customers to look after [he motions his arm around as if to indicate everyone in the room].
3.1.1.1 Well, perhaps I could help?
You? [He looks you up and down] Why yes... You do seem to be a bit of the adventurous type. Okay, but you’ll have to kill them all mind you. I don’t want any left over. I want them dead. All dead. D. E. A. D. Dead. Will you do it?
Quest ‘exterminate rats’ = Mentioned
3.1.1.1.1 Sure, if it means I’ll get the overdue book.
Oh of course! The book is in the safe in my study down there. Here [he writes something down on a piece of paper] this is the combination to the safe [he hands you the piece of paper]. Don’t worry, I’ll change the combination once you’ve killed all the rats. Also, here’s the key to the back room [he hands you a key]. The trapdoor down to the cellar is in there and this [he hands you another key], will open up the heavy metal doors down in the cellar. Good luck! And make sure you get them ALL!
Quest ‘exterminate rats’ = Accepted
3.1.1.1.1.1 A: (EXIT)
3.1.1.1.2 Hmmm... I’d have to think about it. Give me a moment. (EXIT)
3.1.2 Oh I see... You’re afraid of the rats aren’t you?
IF player is apprentice of Persuasion
Hah! Me? [He looks at you and lowers his voice again] Sssshhhhhh!!!! Keep it down. I can’t have everyone in here know about it. Why, I’d be a laughing stock! An absolute disgrace! I could never live it down! Plus, the authorities would most likely close down my bar! I couldn’t let them do that!
3.1.2.1a Okay, you’re secret’s safe with me. Perhaps I can help with the rats?
Go to response 3.1.1.1
3.1.2.2a [Raising your voice] Hey everyone! The bartender’s scared of RATS!! (COMBAT)
float line ‘You bastard! How DARE you!’ above NPC

IF player is NOT apprentice of Persuasion
Hah! Me? Afraid of rats? Never! My only problem is my lack of time. You see, running a bar can be quite time consuming, particularly with this many customers [he motions his arm around as if to indicate everyone in the room]. I just haven’t been able to find the time to run down there and get rid of them all.
3.1.2.1b Well then, perhaps I could help?
Go to response 3.1.1.1

3.2 Listen, you’ve got 3 seconds to give me the book or face the consequences.
Hey! I would give you the book if I had it! Honest! It’s just that... Er... Well....
3.2.1 All right... What is it?
Go to repsonse 3.1
3.2.2 Times up! (COMBAT)
float line ‘Holy crap! Somebody help! A madman’s attacking me!’ above NPC

4. I’ve decided to exterminate the rats in your cellar. If quest ‘exterminate rats’ = Mentioned
You have! Oh that’s fantastic! Now here [he writes something down on a piece of paper] this is the combination to the safe [he hands you the piece of paper]. The overdue book is in there and don’t worry, I’ll change the combination once you’ve killed all the rats. Also, here’s the key to the back room [he hands you a key]. The trapdoor down to the cellar is in there and this [he hands you another key], will open up the heavy metal doors down in the cellar. Good luck! And make sure you get them ALL!
Quest ‘exterminate rats’ = Accepted
4.1 A: (EXIT)

5. I’ve killed all the rats in your cellar. If Global Variable < TOTAL NUM OF RATS
No you haven’t. I know because I just had one run out of a hole up here and then turn around and run back down. Look, go back down there and make sure you get ALL of them.
5.1 E: (EXIT)

6. I’ve killed all the rats in your cellar. If Global Variable = TOTAL NUM OF RATS and quest ‘extreminate rats’ = Accepted (i.e. quest is NOT completed. Otherwise Player will always get this line.)
You have! Oh that’s fantastic! I hope you got that overdue book. I’ve been meaning to return in. Listen, how about a free drink? It’s a special mixture of mine. Guaranteed to knock your boots off! What do you say?
Increase NPC reaction
Quest ‘exterminate rats’ = Completed
6.1 Sure, why not? I’ve earned it.
Just a moment then [the bartender opens a few bottles behind the counter and mixes them together, he then puts a sprinkle of something, you’re not sure what, into the concoction]. Here you go! A ‘Rathouse Special’!
6.1.1 Thanks! [You gulp it down.]
Make player ‘prone’ and cast spell on player to give a good effect (check spell list and find a good one).
float line ‘That sure hit the spot didn’t it?’ above NPC
6.2 No thanks, maybe some other time. (EXIT)

7. I forgot to ask you about the late fee for the overdue book. If quest ‘exterminate rats’ = Completed and Global Flag ‘late fee talk’ = 0
Oh that! Er.... [the bartender looks uneasy]. Well, you see, the bar hasn’t been doing that well lately. I know, I know, all of the customers in here might tell a different story but trust me, the bar just hasn’t been making such a great profit. Look, I’d give you the money if I had it, but I just don’t at the moment. How about you spot me for it instead?
Global Flag ‘late fee talk’ = 1
7.1 Okay, I’ll pay it for you.
Thanks! You’re great you are!
7.1.1 E: (EXIT)
7.2 No way! I can’t afford 50 coin!
Well, listen. Just try and talk the Librarian out of it okay? I’m sure she won’t mind.
7.2.1 How about I take it off of your corpse instead?
Go to response 7.3
7.2.2 Okay, I’ll try that. (EXIT)
7.3 Either you’re gonna give me the money, or you’re gonna die.
IF Player combat skill is 8 or greater
[The bartender looks at you and can see that you are indeed a capable fighter.] Okay! Okay! Er.... [He rumages through his pockets.] Well what do you know? Here’s 50 coin after all! [He hands you 50 coin.] No harm done then?
7.3.1a No, but I think I’ll kill you anyway. (COMBAT)
float line ‘Holy crap! Somebody help! A madman’s attacking me!’ above NPC
7.3.2a E: (EXIT)

IF Player combat skill is less than 8
[The bartender looks at you.] Hah! You? You’ve got less combat skills than a cow! If you think you can threaten me out of 50 coin you have to think again pal!
7.3.1b No, the only one thinking again is YOU! (COMBAT)
float line ‘Holy crap! Somebody help! A madman’s attacking me!’ above NPC
7.3.2b E: (EXIT)
8. E: (EXIT)

Well, that’s just taken me a day to write up those three dialogues. I’ll leave it there now because that’s all I intend on doing for this tutorial. Now, you may not understand some of the things that are in the above dialogues (like flags and global variables). Don’t worry about that just now, I’ll explain what all of it means when we make the dialog later on in another chapter.

When planning your module, it’s a good idea to plan ALL of the dialog out before you start actually creating it for your module. This is because you may sometimes think of things later on that one NPC will say and you realise that an NPC much earlier in the module should have said it. When dialog is still in the planning stage, it is very easy to go back and change it.

At this stage it’s probably wise to mention that the dialog above will have to be modified when we actually turn it into dialog. The way I’ve done it above is only helpful to work out all the options that the player can say, and what will happen if the player takes that course of dialog. When we actually create the dialog, we’ll have to split it up into line numbers and branch it out and perhaps use a bit of scripting where necessary (We’ll do that in the next chapter).

If you can’t think of everything for your dialog when you start planning, don’t worry, just leave it for the moment and add to your plans later on as you do think of things. That’s pretty much all there is to planning. The idea is make sure that you know what you’re doing before you do it. Making dialog and planning a module on the fly can lead to disastrous consequences where NPC’s suddenly talk out of character or you lose the plot of the story and go off on a tangent (Trust me, I’ve only recently trashed a major module I was working on simply because I completely lost the plot due to my lack of planning). If this happens to you, it of course means you’ve forgotten what the dialog was there for and you’ve forgotten what your module was about. The idea with this chapter was to give you an idea of the kind of work that is involved if you actually want to create a decent mod for other people to play (not that I’ve actually finished any of my own mods yet…). You should be able to use the ideas here when it comes to planning your own modules. There’s no need to copy the above way exactly, it is only there as an example of the way I plan out what I intend on doing before I actually start. That way, I can keep track of where I am and what’s supposed to happen next.

Okay, so we have a major plot line, an idea on how we’re going to end the major plot and we have all the dialog plans that we will be making for this tutorial. Now what? Well, at the moment, there’s one more thing that we have to write down a few notes for. Quests. We’ve mentioned the quests in the above dialog (sometimes it might help to plan the quests before the dialogue. Actually, that would be a better way but I’ve only just realised that I haven’t planned out the quests yet), now we need to plan those quests. How will the player finish them? How many ways are there for the player to finish them? Sure, we’ve only got three quests, but those quests might have three or four ways of finishing them. So far, my best planning method when it comes to quests is like that below.

AMTUT - Tutorial Version Quests

1000 - Read ‘The Story of Amtut’.
Log Book:
Ol’ Gerald who you met at the docks, says that you should go to the library and read the book ‘The Story of Amtut’. Once you’ve read the book, he wants you to come back and talk to him.

Ways to Finish:
1. Player runs to library, does quest 1001 for librarian who will then give player book.
2. Player kills librarian and reads book.
3. Player steals book.
4. Player can persuade Librarian to hand over book??
5. Player can pay/gamble for book??

Who’s Involved:
Gerald - At the docks, gives player the quest.
Librarian - At the library, has the book in her posession.
Bartender - Indirectly involved, player has to clear his cellar of rats before being able to return overdue book to librarian to get book player wants to read (if player doesn’t kill librarian).

Details:
Check quest state when player talks to Gerald. If quest completed, player has read book.
Tie script to book on ‘use’ that will complete quest.

1001 - Return Overdue Book from Bartender.
Log Book:
The librarian wants you to find and return an overdue book that was lent out to the bartender. In return, she will give you ‘The Story of Amtut’ to read.

Ways to Finish:
1. Player has to get overdue book from cellar of bartender. (Player may or may not kill all the rats for quest 1002)
2. Player can kill bartender, take his keys and get book from cellar. WHAT ABOUT SAFE COMBINATION?

Who’s Involved:
Librarian - Gives player quest
Bartender - Tells player book is in his cellar

Details:
Global Flag checks to see if player has paid 50 coin late fee for overdue book, will be used in end game slides. If player hasn’t paid then library crumbles and falls apart - real dramatic like. Post message on a forum to see if an artist can make me some decent end game slides.

1002 - Exterminate the rats in the bartenders cellar.
Log Book:
The bartender wants you to exterminate all of the rats in his cellar. He has also given you the combination to his safe so that you may retrieve the overdue book that you are after. If you do this, the bartender will give you a free drink.

Ways to Finish:
1. Player kills all the rats in cellar.

Who’s Involved:
Bartender - gives player quest
Rats - they all have to die.

Details:
Use Global Variable to keep track of rat kills.
Make special drink that makes player ‘prone’ immediately after drinking it as well as giving the player some good side effects. Find out what spells there are and see what they do.

I’ll leave this chapter by saying one last thing. When creating your module, finish everything necessary for the main plot first. Plan the module out, maybe draw up a basic plan for the city/town, plan out the quests in as much detail as you can and plan then plan the dialogue. Then create the map in WorldEd and make the actual dialog and scripts. Once you’ve got the main plot completely finished and playable (which may take upwards of a month), you then put in all the side quests that have little (or nothing) to do with the main plotline. That way, by the time you’ve actually finished your main plot, you’re so buggered that you release your module. Then you can go on and make later versions with added side quests and bug-fixes.

I’d like to thank VirtualSinner for posting his method on the VN Arcanum Mod Board:
What I've been doing is first coming up with story line, plots and stuff. Then I lay out the land with the terrain editor. Then I'll put in the towns, ruins, caves, all the hotspots and stuff. After that I populate the towns and cities with the shop keepers, and people. After that I start on the scripting, dialogs, and special items - from the beggining location of the game and following the story line. After that I'm going to add all the little extra encounters and stuff. - <=-VirtualSinner-=> *668 Neighbor of the beast*



CHAPTER 23
INNKEEPER AND EXPERT/MASTER TRAINING

IMPORTANT NOTE: I just made a very nice discovery. Whenever you add something to ‘gamedesc.mes’ I thought you had to quit and reload WorldEd to make the new option/description appear. You don’t have to do this. Instead, just go ‘File --> Open Module’ and choose the same module again and it will load in any new changes to ANY of the ‘.mes’ files. So, whenever you add a description to ‘gamedesc.mes’ or any other file, just reopen your MODULE only in WorldEd without quitting and it will work (I’ll put this note in the right spot and alter this module where I mention this when I get around to reviewing it for version 1.2 once I’ve finished).

So, we’ve planned out our dialog and we know what is supposed to happen with the quests. Now, we only need to create the actual dialog and scripts involved. But before we get onto quests, let’s make what has been the hardest script for me to figure out so far, that of the Inn Keeper. I’ll also show you how to create an NPC who can train the Player as an Expert and as a Master in a chosen skill. We’ll start off with the Inn Keeper because it is fairly tricky and involves flags, counters and variables. In comparison, the training is fairly simple as all it involves is dialog (The dialog and scripts that you’re about to see took me two weeks and two re-writes of this chapter to get right. That’s my all fault though because I wanted the BEST InnKeeper I could possibly make).

Okay, add an Inn into your map somewhere (It doesn’t matter where). Make sure it has two rooms to rent though. One room will be the nice room, the other will be the el-cheapo scungy one (NOTE: Ultimately, there’s no difference between the two beds, one will not give you a better nights sleep than the other, it’s just a nice thing to have a good room and a dodgy one). Now put in some scenery and all the nice stuff an Inn should have. Now, put in two NPC’s, one will be the Inn Keeper, the other will be our Expert and Master Trainer. Now, the dialog for the Inn Keeper is fairly simple but that’s no excuse not to make a small plan as to what we want our Inn Keeper to do. So, we want to be able to rent two beds, a good one or a cheap one. We also want to be able to rent those beds for a night or a whole week if need be. If the player has already rented a bed, we want the Inn Keeper to say so and not let the player rent another bed. All of that sounds fairly easy and in fact, it is. The tricky bit is knowing what codes to use in the dialog which will relate to the script. So now, just copy this dialog below and paste it into a dialog file called ‘00003Inn_Keeper.dlg’:

{1}{Welcome to the Inn sir. How may I help you?}{Welcome to the Inn madame. How may I help you?}{}{}{}{}
// Lines 2 & 3 only seen if PC hasn't rented a room here.
{2}{I'd like to rent a room please.}{}{5}{gf11 0, gf12 0}{20}{}
{3}{We wunna get room.}{}{-4}{gf11 0, gf12 0}{20}{}
// These lines only seen if PC has already rented a room here.
{4}{I'd like to rent a room please.}{}{5}{gf11 1}{60}{}
{5}{We wunna get room.}{}{-4}{gf11 1}{60}{}
{6}{I'd like to rent a room please.}{}{5}{gf12 1}{70}{}
{7}{We wunna get room.}{}{-4}{gf12 1}{70}{}
{8}{E:}{}{1}{}{0}{}

{20}{Certainly sir. How long are you expecting to stay?}{Certainly sir. How long are you expecting to stay?}{}{}{}{}
{21}{Just the one night please.}{}{5}{}{30}{}
{22}{Won nite pleese.}{}{-4}{}{30}{}
{23}{Better make that a week, I'll be in town for a while.}{}{5}{}{40}{}
{24}{Uhh.. Me need hole week.}{}{-4}{}{40}{}
{25}{F:}{}{1}{}{0}{}

{30}{Well then sir, we have two rooms available for rent tonight. One, our pride and joy, is a first class room with all the finery! At only 50 coin for one nights' stay it is certainly worth seeing. Our second room is our... Er... How shall I put this? Oh yes, it is our 'discount' room for those who are lacking in coin. A modest sum of 20 coin will rent you this room for the night. Now then sir, which room would you like to rent?}{Well then madame, we have two rooms available for rent tonight. One, our pride and joy, is a first class room with all the finery! At only 50 coin for one nights' stay it is certainly worth seeing. Our second room is our... Er... How shall I put this? Oh yes, it is our 'discount' room for those who are lacking in coin. A modest sum of 20 coin will rent you this room for the night. Now then madame, which room would you like to rent?}{}{}{}{}
{31}{Give me first class all the way! [Pay 50 coin]}{}{5}{$$50}{-9}{$$-50, lc0 23, gf12 1}
{32}{Me wan' good room! [Pay 50 coin]}{}{-4}{}{-9}{$$-50, lc0 23, gf12 1}
{33}{I'd better take the discount one. [Pay 20 coin]}{}{5}{$$20}{-5}{$$-20, lc0 23, gf11 1}
{34}{Uhhh... Me better get cheep won. [Pay 20 coin]}{}{-4}{$$20}{-5}{$$-20, lc0 23, gf11 1}
{35}{Actually, I think I'll need to stay for the whole week.}{}{5}{}{40}{}
{36}{Uhhh... Akshully, me need hole week.}{}{-4}{}{40}{}
{37}{F:}{}{1}{}{0}{}

{40}{Okay then sir, we have two rooms available for the whole week. Our finest room at the special weekly rate of 200 coin is certainly worth seeing. However, if you lack the coin, then I suggest the 'discount' room for a mere 100 coin a week. Now then, which room would you like?}{Okay then sir, we have two rooms available for the whole week. Our finest room at the special weekly rate of 200 coin is certainly worth seeing. However, if you lack the coin, then I suggest the 'discount' room for a mere 100 coin a week. Now then, which room would you like?}{}{}{}{}
{41}{Give me first class all the way! [Pay 200 coin]}{}{5}{$$200}{-9}{$$-200, lc0 167, gf12 1}
{42}{Me wan' good room! [Pay 200 coin]}{}{-4}{$$200}{-9}{$$-200, lc0 167, gf12 1}
{43}{I'd better take the discount one. [Pay 100 coin]}{}{5}{$$100}{-5}{$$-100, lc0 167, gf11 1}
{44}{Uhhh... Me better get cheep won. [Pay 100 coin]}{}{-4}{$$100}{-5}{$$-100, lc0 167, gf11 1}
{45}{I'd rather just stay for one night if that's possible.}{}{5}{}{30}{}
{46}{Uhhh... Me wunna stay for tonite only.}{}{-4}{}{30}{}
{47}{F:}{}{1}{}{0}{}

{60}{I'm sorry sir, but you currently have an outstanding rent on our 'discount' bed. I'm afraid that we can't rent you another bed.}{I'm sorry madame, but you currently have an outstanding rent on our 'discount' bed. I'm afraid that we can't rent you another bed.}{}{}{}{}
{61}{A:}{}{1}{}{0}{}

{70}{I'm sorry sir, but you currently have the use of our finest bed. You can't have another bed until your current rent expires.}{I'm sorry madame, but you currently have the use of our finest bed. You can't have another bed until your current rent expires.}{}{}{}{}
{71}{A:}{}{1}{}{0}{}

{100}{There you go sir, your bed is ready. The door to the 'discount' room is unlocked, you can go in when you're ready. Also, try not to break anything in there. Just because it's cheap doesn't mean you can go in and wreck the place.}{There you go madame. The door to the 'discount' room is unlocked, you can go in when you're ready. Also, try not to break anything in there. Just because it's cheap doesn't mean you can go in and wreck the place.}{}{}{}{}
{101}{A:}{}{1}{}{0}{}

{200}{A fine choice sir! Your bed is ready and waiting for you. You will find the door to our best room unlocked, feel free to go in and use it at your pleasure!}{A fine choice madame! You will find the door to our best room unlocked, feel free to go in and use it at your pleasure!}{}{}{}{}
{201}{A:}{}{1}{}{0}{}

Save the dialog file as ‘00003InnKeeper.dlg’ in the right directory. Now, the killers in the above dialog are lines 31-34 and 41-44. There’s a whole lot of stuff going on in those lines and that’s what makes this dialog work. First of all, those lines of dialog call either line 9 or line 5 of the script (as indictated by the ‘-9’ or ‘-5’ in the goto brackets). Of course, I’ve already spent a week figuring out the script so I know what calling line 9 or line 5 does, It’s just that it’s easier to explain the dialog first. So, let’s take line 31 as an example:
{31}{Give me first class all the way! [Pay 50 coin]}{}{5}{$$50}{-9}{$$-50, lc0 23, gf12 1}

This is the line where the player pays for the good room for the night. What’s going on in the above line? Well, from the ‘$$50’ in the condition field we can tell that the player must have 50 coin on them in order to see this line of dialog as an option. Now, from the ‘$$-50’ in the result field, we can see that when the player chooses this line they will ‘pay’ 50 coin to the NPC. So what does ‘lc0 23’ and ‘gf12 1’ do? Well, this is where I have to explain what’s happening when we rent a bed.

The computer doesn’t know what bed we’re renting, how much were paying for it or how long we’re renting the room for, be it a day or a week. So, we have to tell the computer these things. How do we do that? Well, we use Global Variables (gv), Local Counters (lc) and Global Flags (gf). What I decided to do for this Inn is to have both a good bed and a poor bed to rent and I also wanted the option of renting them for a week or a day. So, we need some way of ‘storing’ what bed we rented and also a way to ‘keep’ the time that we rented it for. We keep the time with ‘lc0 23’ which doesn’t do much at the moment, but it is vital when we call the script (more about this a bit later). ‘gf12 1’ sets Global Flag (gf) number 12 to ‘1’ or True. A Global Flag is kind of like a button. It can only be either on (‘1’) or off (‘0’). In this case, we are turning Global Flag 1 ‘on’ by setting it to ‘1’ in the result field of the dialog. What that it means is Global Flag ‘12’ is turned on so the ‘good’ bed has been rented by the player. Compare this with dialog line 33 where we turn on Global Flag ‘11’ instead. Global Flag 11 is the flag used to tell if the player has rented the poor bed. Now, Global Flags are something set by YOU as the designer. I could have made Global Flag 77 the flag for the good bed and Global Flag 63 the flag for the poor bed if I wanted, but for simplicity’s sake, I decided to have 11 and 12.

Now, because we are using Global Flags, it is important that we keep track of them. So, in the ‘Arcanum\modules\My First Mod\semes\’ directory, open up the file called ‘globalflags.mes’. Delete the ‘{0}{cmoore - 1 = This is a test}’ line in here and replace it with this:
// Beds available in Game. We don't use '0' because Counter 0 might be '0' to start off with? So start with 11 for simplicity’s sake, I can then just -10.
// Subtract '10' when you tie in a number to the 'counter 0' of the 'use' attachment point for the beds (ie. 11 becomes bed 1, 12 = 2, 13 = 3 etc...)
// These are only used to check in dialog if the PC can rent a bed again or not.
{11}{1 - PC has paid for POOR bed.}
{12}{1 - PC has paid for GOOD bed.}

Now, this file doesn’t actually do anything. It is not used by Arcanum in anyway. However, it is used by YOU to keep track of ALL your Global Flags. Whenever you use a Global Flag for something, add a note in here so that you can remember what that Global Flag is for. Feel free to add in any other descriptive notes as well (like I have done with the ‘//’ lines above the flag notes). As you can see from the above lines you’ve just added, when Global Flag 11 = 1 it means the PC (the player character) has paid for the poor bed. (NOTE: Global Flags can be used to to store ANYTHING. For example, let’s say in your module you had a grave (like in The Dungeon Crawl) and you wanted the player to be able to ask someone about that grave but ONLY after the player has SEEN the grave. What you do is attach a script that sets ‘Global Flag NUMBER to 1’ to the ‘examine’ point of the grave. Then, you have a line of dialog (like lines 1-7 in the Inn Keeper script above) which checks the status of Global Flag NUMBER. If Global Flag NUMBER = 1 then that dialog option will appear and the player can select it and find out about the mystery to which it leads...) Now save the file.

Okay, so we’ve set Global Flag 12 to 1, we’ve paid for the good bed and Local Counter 0 has been set to ‘23’. What happens now? Well, according to the ‘-9’ in the goto field of dialog line 31, we call the Inn Keepers’ script at line 9. The only problem is, we haven’t got an Inn Keeper script yet, so let’s make it now. For simplicity’s sake, we’ll make the ENTIRE Inn Keepers’ script now, even though what you’re about to see took me a week of mucking around to get.

The first action of your script will be ‘hour: store hours since startup in (num)’ click ‘ok’ and when it asks for a number, from the drop-down list choose ‘Local’ and type ‘0’ in the field at the bottom and click ‘ok’. Now, put in the condition ‘(num) <= (num)’ and choose ‘Local 0’ as the first number and ‘Global Variable 11’ as the second number. The THEN action will be ‘do nothing’ and the ELSE action will be ‘clear global flag (num)’ with ‘Number 11’ as the number. Put in another of these ‘(num) <= (num)’ conditions but this time choose ‘Local 0’ and ‘Global Variable 12’. The THEN action wil be ‘do nothing’ and the ELSE action will be ‘clear global flag (num)’ with ‘Number 12’ as the number. Now add a ‘dialog 1’ action and put in a ‘return and SKIP default action as well. You should be up to script line ‘5’ now. This is the line that is called when the player chooses dialog lines 23, 24, 33 and 34. In your script, put in the action ‘hour: store hours since startup in (num)’ and choose ‘Local’ from the drop-down list and put a ‘0’ in the text field. Put in the action ‘(num) = (num) + (num)’ and for each of the numbers choose ‘Global Variable 11’, ‘Local 0’ and ‘Counter 0’. Now add a ‘dialog 100’ action and a ‘return and SKIP default’. You should now be up to script line number 9. Add another ‘hour: store hours since startup in (num)’ with ‘Local 0’ again. Put in another ‘(num) = (num) + (num)’ except this time have ‘Global Variable 12’ as the first number and ‘Local 0’ and ‘Counter 0’ as the other numbers. Put in a ‘dialog 200’ and a ‘return and SKIP default’ action. Now, save the script as ‘00003InnKeeper.scr’ in the ‘scr\’ directory of your module. All up, your entire script should look like this:
0. hour: store hours since startup in Local 0
1. IF Local 0 <= Global Variable 11
THEN do nothing
ELSE clear global flag 11
2. IF Local 0 <= Global Variable 12
THEN do nothing
ELSE clear global flag 12
3. dialog 1
4. return and SKIP default
5. hour: store hours since startup in Local 0
6. Global Variable 11 = Local 0 + Counter 0
7. dialog 100
8. return and SKIP default
9. hour: store hours since startup in Local 0
10. Global Variable 12 = Local 0 + Counter 0
11. dialog 200
12. return and SKIP default

Before we go on, like Global Flags, we are now using Global Variables. So, add this below into the ‘globalvars.mes’ file in the ‘semes\’ directory of your module:
// These gv's store the game HOUR that the rent of the bed expires on. The number stored depends on the time the bed was rented and also for how long the PC rented the bed (a day - 23 hours, or a week - 167 hours).
// The only check we need to use the bed is to see if the time has expired.
// If the PC never paid for the bed, or paid for another bed, then time is already expired.
// Room to make beds rentable for any time period I like. Just have to alter innkeeper dialog and make some new lines changing 'lc0 HOURS'.
{11}{Stores the HOUR that the PC can no longer use POOR bed number 1.}
{12}{Stores the HOUR that the PC can no longer use GOOD bed number 2.}

It’s important to keep track of your Global Variables just like Flags so that you don’t get lost (Don’t look at me like that. Just bear with me here, it’ll all make sense soon enough...).

In WorldEd, attach script ‘3’ (the one we just made) to the ‘dialog’ attachment point of the NPC InnKeeper. Now comes the fun part where I explain what all of this does. What’s happening is this script is being called when the player clicks on the Inn Keeper NPC to initiate dialog. I’ll explain it from line ‘9’ first. Line 9 is called when the player rents the GOOD bed from the Inn Keeper. So, for example, the player clicks line ‘31’ of dialog and the script is called at line ‘9’. Line 9 of the Inn Keepers script ‘9. hour: store hours since startup in Local 0’ is a way of keeping track of time. What Arcanum does is, when it starts, it keeps incremeting (adding ‘1’ to) a little variable every hour. That variable is the ‘hours since startup’ or more specifically ‘how many GAME hours have passed since this module started?’. This number will ALWAYS increment every hour, on the hour (as far as I know). What we are doing with line 9 of our script is saying ‘Hey! Get me the CURRENT hour since startup and store that in Local 0’. The value we store in ‘Local 0’ will be the CURRENT game hour. So, if 15 game hours have elapsed and the player decides to rent a bed, then the script will call line 9 and ‘15’ would be stored in ‘Local 0’. Line 10 of the script then adds ‘Counter 0’ to ‘Local 0’ and stores the result into Global Variable 12. So, if the Player wandered around and travelled for three whole days and eight hours before deciding to stay at the Inn then the value (let me get my calculator) ‘80’ will be stored in ‘Local 0’ (3 days * 24 hours a day + 8 hours). ‘Local 0’ will then have ‘Counter 0’ added to it. As you’ll recall, in line 31 of dialog, Local Counter number 0 is set to 23 (‘lc0 23’ in the result field). So the resulting number of 103 (80 + 23) will be stored in ‘Global Variable 12’. So why do we need to store the hour that the player rents the bed and add 23 to it? Well, the general idea is that the player, having rented the bed, will have 24 hours in which to use that bed before they have to rent it again (presuming they rent it for one night as in our example). The value we have just stored in ‘Global Variable 12’ is the hour on which the rent will expire. In other words, the time when 24 hours is up. Now, having stored this number, dialog will continue at line 200 where the Inn Keeper will say ‘thank you for renting the good bed’. Let’s say that the player then finishes dialog and tries to rent a bed again. This is where script lines 0 - 3 come into effect. They compare the current game time with the time the beds expire (Global Variables 11 and 12). If time is up, then the beds are ‘unrented’ and the player can rent another bed, otherwise, in this case, when the player talks to the Inn Keeper, line of dialog number 6 wil be shown (because ‘gf12 1’ is in the condition field of the dialog, Global Flag 12 has to be set to 1 in order for this line to appear). The Inn Keeper will then tell the player that no, they already have the good bed and they should use it.

Now that we have a script that lets us rent a bed, we need to make a script that lets us sleep in the beds. This script will be attached to the beds and will run when the player tries to sleep. Again, for simplicity’s sake, you’re seeing a completed script that took me a day or two to figure out (Actually, I spent a few days working out an Inn script, then writing it up. Then I changed the Inn script and spent another few days re-writing the tutorial. Then I changed it again. This is the third time lucky). This script has to do a few things, firstly, it has to know what bed we are trying to sleep in whether it is the good bed or the poor bed, then, it has to check to see if the rent on that bed has expired. If the rent has expired, the player doesn’t get to sleep, othwerwise the player can enjoy a good nights rest.

Using a bed is a fairly simple task actually. All you need is the simple action ‘return and SKIP default’ in a script that is tied to the bed. This is because the ‘default’ action of a bed is to print the line ‘You can’t use this bed. Find an Inn and pay for a bed.’ in the message window at the bottom of Arcanum. However, we need to rise above this simplicity so, start a new script in the ScriptMaker and add the action ‘(num) = (num) * (num)’ with the numbers ‘Local 2’, ‘Counter 0’ and ‘Number 2’. Now add the action ‘goto line (num)’ and use ‘Local 2’ as the number. The next line will be the action ‘(num) = (num)’ with ‘Local 1’ and ‘Global Variable 11’. After that, put in the action ‘goto line 6’. Now, add another ‘(num) = (num)’ but this time use ‘Local 1’ and ‘Global Variable 12’. Put in another ‘goto line 6’ action. Now, for script line 6 (which you should be up to now), add the action ‘hour: store hours since startup in (num)’ with ‘Local 0’ as the number. The last line is the crucial line. Put in the condition ‘(num) <= (num)’ and use ‘Local 0’ and ‘Local 1’. The THEN action will be ‘return and SKIP default’ and the ELSE action will be ‘return and RUN default’. Now, you may have noticed that your ‘goto’ lines have renumbered. This is a design fault in the SockMonkey ScriptMaker (to its credit, it works well at renumbering goto lines sometimes but fails dismally on other occasions). If your ‘goto’ lines aren’t pointing to the right line, then you’ll have to delete that entire line of script and then put in the same action/condition again. This should fix up any number problems. Once the script is correct, save it as ‘00004Inn_Bed_Use.scr’ in the ‘scr\’ directory of your module. Your entire script should look like this:
0. Local 2 = Counter 0 * 2
1. goto line Local 2
2. Local 1 = Global Variable 11
3. goto line 6
4. Local 1 = Global Variable 12
5. goto line 6
6. hour: store hours since startup in Local 0
7. IF Local 0 <= Local 1
THEN return and SKIP default
ELSE return and RUN default

Just before I run through and explain this script, we need to do a few things to make it work. First of all, in WorldEd, scroll over to the poor, dodgy, scungy bed and right-click ‘edit’ it. Now, click on the ‘Scripts...’ button and click on the ‘Use’ attachment point. A black dot should appear in the circle next to it indicating that it is selected. Click in the ‘script’ text field at the bottom and type in the number ‘4’. This will tie script number 4 (Inn_Bed_Use) to this bed. Now, making sure that ‘use’ is still selected, click in the ‘Counter 0’ field at the bottom right. Put a number 1 in there. All up, you should be staring at a replica of Figure 23.1 below.
Figure 23.1
Figure 23.1 See how ‘use’ is selected and there is a ‘4’ in the script field and a ‘1’ in the Counter 0 field. Now, click ok and click ok again. Right-click and ‘edit’ the good bed now. Click on the ‘use’ button, put a ‘4’ in the script field EXCEPT this time, put a number ‘2’ in the Counter 0 field. Now click ok and ok again and save the map. Close WorldEd.

Now, starting at the start and moving right through to the end, I will explain ALL of this using an example. Let’s say the player has wandered around and done a few quests and as such, 2 game days and 9 hours have passed. The player decides to rent a bed for the night. So, the player wanders up to the Inn Keeper and using dialog line ‘{31}{Give me first class all the way! [Pay 50 coin]}{}{5}{$$50}{-9}{$$-50, lc0 23, gf12 1}’ rents a bed for the night. When the player clicks on this line, they will lose 50 coin, Global Flag 12 will be set to ‘1’ (turned on), Counter 0 will be set to ‘23’ and the InnKeepers script will be called at line ‘9’. At line 9 of the script, the CURRENT game hour will be temporarily stored in ‘Local 0’. In this case, the player wandered around for 2 days and 9 hours so Local 0 will be ‘57’ (2 days * 24 hours a day + 9 hours). Global Variable 12 (the Global Variable for the good bed) will then be ‘57’ + ‘23’ (Counter 0 = 23 which we set in the line of dialog that called this script) which equals ‘80’. So, Global Variable 12 will be set to ‘80’ meaning that the player has use of the good bed until 80 game hours have passed. Now, the player realises that they forgot something, so they run away and buy it or sell it or identify it or do it or whatever. When they come back, 8 more game hours have passed. So, when the player goes to use the good bed, script ‘4’ wil be called. Now, we stored ‘2’ in the ‘Counter 0’ field of the good bed in WorldEd remember? So, the first line ‘Local 2 = Counter 0 * 2’ means ‘Local 2 = 2 * 2, Local 2 = 4’ (the script will pull the Counter 0 value which is stored in THIS bed. If you were trying the poor bed then it would pull the ‘1’ out of its Counter 0). The script will then goto line 4. At line 4, we will retrieve the value of ‘Global Variable 12’ and store it in Local 1. In this case, Local 1 = 80. Now, at line 6 we store the CURRENT game hour in Local 0. Seeing as the player rented the bed at 57 game hours and came back to use the bed 7 game hours later, the CURRENT game hour will be 64. Now, 64 is less than OR equal to 80 so, the player will be allowed to sleep (return and SKIP default). Okay, so after resting for a day (24 hours), the player tries to use the bed again. This time, the CURRENT game hour will be ‘88’ (64 + 24). Now, 88 is NOT less than OR equal to 80 so the player won’t be allowed to sleep (return and RUN default). The player will have to rent the bed again, so when they do, script ‘3’ will see that the CURRENT game hour of 88 is NOT less than OR equal to the expiry time on the bed, as such, it MUST be greater than the expiry time, meaning the bed rent has expired. So, Global Flag 12 will be cleared (set to ‘0’) and the player will be allowed to rent another bed in the dialog.

Try it out in Arcanum now. You should be able to rent either bed for the night, sleep and then rent either the same bed again from the Inn Keeper or rent the other bed. Try renting the bed for a week and sleep in it for seven days. You should find that it all works perfectly (except you’ll be losing quite a bit of money from sleeping all the time). Once you’re satisfied that it works, quit Arcanum. Now, there are a couple of ways that we could have done what we’ve just done. This method is the one I came up with after a fair bit of mucking around. Ultimately, the advantages are that you only need the one ‘use bed’ script rather than a separate script for each bed you may have. Also, there is the opportunity to add in extra beds later on if need be (you can figure out how, I can’t explain everything).

In actual fact, all of this is fairly similar to what Troika use in their bed scripts (bed scripts which took me a week to figure out :) ) Anyway, we have a working Inn Keeper with rentable beds. Let’s move on now to Expert and Master Training.

By comparison with the above script, the dialog we are about to write is really fairly simple. The only thing with Expert and Master training is dialog codes in the dialog. No fancy script required! If you’ve already looked through the ‘eventscripts.doc’(from editdocs.zip which you can download from my website) or the WorldEd Manual, you should understand the codes I’m about to use. Either way, start a new dialog file and copy and paste in this below:
{1}{G:}{G:}{}{}{}{}
{2}{Give me lots of Xps.}{}{1}{}{1}{xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20, xp 20}
{3}{T: 0}{}{1}{}{1}{}
{4}{Train me to be a Bow Expert.}{}{1}{tr0 -1}{1}{et0 20}
{5}{Train me to be a Bow Master}{}{1}{sk0 18, tr0 2, tr0 -2}{40}{}
{6}{Train me to be a Bow Master}{}{1}{tr0 -1}{60}{}
{7}{E:}{}{1}{}{0}{}

{20}{Sure, I'll make you a Bow Expert for free!}{Sure, I'll make you a Bow Expert for free!}{}{}{}{}
{21}{Right on! [Let him train you]}{}{1}{}{30}{tr0 2}
{22}{F:}{}{1}{}{0}{}

{30}{SHAZAM!!! You're a Bow Expert now.}{SHAZAM!!! You're a Bow Expert now.}{}{}{}{}
{31}{A:}{}{1}{}{0}{}

{40}{Sure, I'll train you as a Bow Master for free!}{Sure, I'll train you as a Bow Master for free!}{}{}{}{}
{41}{Alright, let's do this. [Let him train you]}{}{1}{}{30}{tr0 3}
{42}{F:}{}{1}{}{1}{}

{50}{ZAP!!! You are truly a Master of the Bow now.}{ZAP!!! You are truly a Master of the Bow now.}{}{}{}{}
{51}{A:}{}{1}{}{0}{}

{60}{How unfortunate, it appears that you lack the necessary requirements to become a Bow Master. Perhaps if you improve and come back later?}{How unfortunate, it appears that you lack the necessary requirements to become a Bow Master. Perhaps if you improve and come back later?}{}{}{}{}
{61}{E:}{}{1}{}{0}{}

Because we have used script 4 to use the bed, we will have to save this dialog file as ‘00005Expert_Master_Bow_Training.dlg’ which means its corresponding script file will be ‘00005Expert_Master_Bow_Training.scr’. We’ll make the script now and then I’ll explain the dialog. Open up the SockMonkey Script Maker and create a new script like this:
0. dialog 1
1. return and SKIP default

Save it as ‘00005Expert_Master_Bow_Training.scr’. Now, in WorldEd, attach script number ‘5’ to the ‘dialog’ attachment point of the NPC you put in the Inn (not the InnKeeper, the other NPC). Once that’s done, look at the above dialog. First of all, this dialog is pretty pathetic I know but for this tutorial, I decided that there’s no need to go into a wonderfully involved training dialog example. Anyway, see all those ‘xp 20’ codes in the result field of line 2? What do they do? Well, they’re our testing mechanism. You see, to actually see if this script will work or not, we have to level up the player and put character points into the skill we are training (in this case that skill is bow, I’ll explain later). Now, when the player clicks that line they will go from a level 1 to about a level 12 because those ‘xp 20’ codes give the player LOTS AND LOTS of experience points. This way, when you test this script, you can spend lots of points on your bow skill to see if you can get the training. Now, you see how I’ve put in a ‘T: 0’ code in line 3? Remember that gives us apprentice training in skill ‘0’ which, according to the ‘Arcanum Reference Sheet.doc’ (from editdocs.zip which you can download from my website), skill ‘0’ is the bow. This is just here because we need apprentice training in order to get higher training. The next line is the important one ‘{4}{Train me to be a Bow Expert.}{}{1}{tr0 -1}{1}{et0 20}’. The ‘tr0 -1’ code in the condition field checks the current training level of the PC (player character). If the current training is ‘1’ or less (apprentice level or less) than the PC will see this line. To explain the ‘et0 20’ code, I’ll just copy the explanation from the WorldEd Manual:
et NUM1 NUM2 - ONLY USABLE ON PC LINES!
Tests whether PC can have expert training in skill num1. If he can, then, continue dialog at num2. If he cannot, the NPC will say why and then dialog will continue at the response line for this line. Please note that only two reasons are tested for (not enough rank and no training) and that specifically we do not test for money or if the PC already has expert training (or higher).

So, according to that, if the PC hasn’t got apprentice training in the skill, then they won’t get expert training. Which is what we want. Moving on now, lines 5 and 6 have the same text but are slighlty different. Line ‘{5}{Train me to be a Bow Master}{}{1}{sk0 18, tr0 2, tr0 -2}{40}{}’ will only appear if the player has ‘18’ points in the bow skill. NOTE: When you put one Character point into a skill (bow, melee, persuasion etc...) you are actually putting 4 ‘points’ into it. So, even though it may only take 5 ‘character points’ to get a skill up to full, it actually means that that skill has ‘20’ points in it. Each character point is worth about 4 points (notice how when you put a character point into your health or fatigue, it raises it by ‘4’). You can read the WorldEd Manual if you don’t know what ‘tr0 2’ and ‘tr0 -2’ mean (the WorldEd Manual is on my website in easy to read HTML format). In actual fact, I’m going to save myself a lot of typing and tell you to read the WorldEd Manual now and look through it for the dialog codes (under the heading ‘Dialogue’). Read them all! It tells you how to set quests and all sorts! Go on, do it now! Go! (Look, I know I’m cutting you short but I can’t explain EVERYTHING. Although, when I finish this AMTUT tutorial, I will create an HTML version of everything in the ‘editdocs.zip’ and put in dialog examples and stuff so that you can understand them easier).

Now, the reason I’m cutting this short is two-fold. First of all, this chapter has taken me two re-writes and what I’ve got is really very bad. Actually, it’s quite atrocious and I really want to re-write it again BUT..... First of all, I want to make HTML versions of the editdocs and put in examples of how you can use ALL of the various dialog codes. Then I’ll fix up this tutorial and put up HTML lists of the sounds you can access in the game. Basically, what I’m saying is, spend the next month planning your own module and reading the WorldEd Manual to understand the dialog codes (and everything else in there). You SHOULD be able to work out how to make a quest out of all that (HINT: Check the section called ‘Quests’ for info on quests). Meanwhile, I’ll be busily working on the HTML editdocs and creating various simple examples so that if you don’t understand the dialog codes in the WorldEd Manual, you should HOPEFULLY understand my examples in the editdocs. So, when you visit this web-site in a months time, you will find the editdocs with examples.

Actually, in the meantime, here’s a (very) brief example of a quest:
Attach this dialog file to an NPC:
{1}{G:}{G:}{}{}{}{}
// Line 2 only seen if quest 1000 is NOT mentioned or accepted or anything (state '0')
{2}{Give me a quest!}{}{1}{qu1000 0}{20}{}
// Line 3 only seen if quest has been mentioned but NOT accepted (state '1')
{3}{I've decided to accept that quest.}{}{1}{qu1000 1}{30}{}
// Line 4 only seen if quest is accepted (state '2')
{4}{Where was that rat again?}{}{1}{qu1000 2}{40}{}
// Line 5 only seen if quest is completed but NOT reported (state '3')
{5}{I've killed the rat.}{}{1}{qu1000 3}{50}{}
// Line 6 only seen if quest is completed (state '4')
{6}{Did I tell you that I've killed the rat?}{}{1}{qu1000 4}{60}{}
// Line 7 is only here for an example at a botched quest (state '6')
// Quest has to be accepted so we can botch it. (It's hard to botch a simple rat kill quest)
{7}{I've scared the rat away.}{}{1}{qu1000 2}{70}{}
// NOTE: State '5' is missed because that's a multiplayer thing.
{8}{E:}{}{1}{}{0}{}

// NPC mentions quest (quest 1000 is set to state '1' = mentioned)
{20}{Okay, there's a rat somewhere around here, find it and kill it.}{Okay, there's a rat somewhere around here, find it and kill it.}{}{}{}{qu1000 1}
{21}{Okay, I'll do it!}{}{1}{}{30}{}
{22}{Let me think about it.}{}{1}{}{0}{}

// Quest 1000 is ACCEPTED (state '2' = accepted)
{30}{You'll do it? That's great! The rat’s over there somewhere.}{You'll do it? That's great! The rat’s over there somewhere.}{}{}{}{qu1000 2}
{31}{A:}{}{1}{}{0}{}

// PC has accepted the quest and is asking what they were supposed to do again
{40}{Look, it's over there somewhere!}{Look, it's over there somewhere!}{}{}{}{qu1000 2}
{41}{A:}{}{1}{}{0}{}

// PC has killed rat so quest 1000 becomes COMPLETED (state '4')
{50}{You have! Great! Have lots of experience points.}{You have! Great! Have lots of experience points.}{}{}{}{qu1000 4}
{51}{A:}{}{1}{}{0}{}

// PC tells NPC that he killed the rat again
{60}{Yes, you already told me.}{Yes, you already told me.}{}{}{}{}
{61}{A:}{}{1}{}{0}{}

// PC told NPC that he scared rat away so we botch the quest.
{70}{You moron! I wanted you to kill it! Not scare it away!}{You moron! I wanted you to kill it! Not scare it away!}{}{}{}{qu1000 6}
{71}{You'd have me kill a rat? I'd prefer to kill YOU!!}{}{1}{}{0}{co, fl 80}
{72}{E:}{}{1}{}{0}{}

// Er... Just ignore this if you don't understand, it's a personal thing...
{80}{No! Interplay are making a Fallout MMORPG to appeal to the teen market because they can't put the effort into making a decent sequel!!}{No! Interplay are making a Fallout MMORPG to appeal to the teen market because they can't put the effort into making a decent sequel!!}{}{}{}{}

Corresponding Script for NPC:
0. dialog 1
1. return and SKIP default

Now, put in a rat nearby (not too close, otherwise it will attack the PC). Attach this script to its ‘dying’ attachment point.
0. set PC triggerer quest 1000 to state 3
1. return and RUN default

Okay, now open up the file ‘gamequestlog.mes’ in the ‘mes\’ directory and put in this:
{1000}{Some NPC wants me to kill a rat.}

Open up ‘gamequestlogdumb.mes’ and put this in it (for people with intelligence 4 or less):
{1000}{Silly guy wan' me kill rat! Me dum-dumb! Ohhhh... Look! Me rite in book!}

Now open ‘gamequest.mes’ in the ‘Rules\’ directory and put this in it (the only numbers I worry about here are the first one ‘20’ which means this quest is a level ‘20’ quest, the highest type of quest. A level ‘1’ would be more appropriate, but I really don’t care for this example. The ‘200’ is the alignment adjustment. Make it ‘-200’ or something for an evil alignment. ‘200’ ends up giving the PC a plus ‘20’ to the alignment. Alignment adjustments are divided by 10):
{1000}{20 200 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1}

Now test it out in Arcanum. It should be a simple kill rat quest. You should be able to make quests using this as an example from here. (HINT: to kill more rats, tie a script to the ‘dying’ of the rats that increments a global variable. When that global variable NUM = 5 or how ever many rats there where to kill, then all rats are dead. So you have a line of dialog in the NPC with a condition ‘gvNUM 5’. That line will say something like ‘I killed all the rats’). Now, I know that’s not much, but I really want to get the HTML version of the editdocs up now so that you can understand ALL of the dialog codes and their effects. Once that’s done, which should be about a month or so, I’ll then continue with this tutorial (and maybe fix this chapter up). Oh come on, you can wait a month can’t you?

This is a list of what you’re waiting for:

Chapter 24 -- Quests - The 3 Quests of AMTUT Tutorial Version
Giving quests, handing items over (keys) etc… Create Dialog for first three characters.
Create 3 tutorial quests. Complete all dialog and quests for module up until the end of the rat cellar quest and reading ‘Story of Amtut’.

Chapter 25 -- Town Maps and Custom World Map
Generate town and cave maps for module. Look at and explain Custom World Map.

Chapter 26 -- Blessings, Curses and Player Reputations
Bless player for clearing rats out of cellar? Curses player for killing any of the NPC’s. Give player reputation for killing the cellar rats or for killing NPC’s.

Chapter 27 -- Game Story State and Citizen Rumours
Create game story states and create rumour that I’m making Amtut Module Version 2 which has everything that I planned out in Chapter 22. Rumour of Yal’pretni/Cow herder. Rumoured that Arcanum 2 is under development?? Rumour that the bartender is scared of rats. Rumour that the Inn is the finest place to stay for the night. Rumour that aliens have invaded the planet and are replacing people with alien clones as part of a colonisation plan??

Chapter 28 -- Ending Game, Playing Slides and Making Movies
Creating the end game script and making end game slides. Making movies with Bink and Smack editor?


DarkUnderlord
------------------------
Moo... Moo... I’m an Interplay cow.






Part 1 - A Beginners' Guide
Part 2 - Learning the Ropes
Part 3 - Getting Tangled in the Ropes
Part 4 - Strangling Yourself with the Ropes




Arcanum - Links

Sierra Arcanum   --   The official Arcanum web site
VN Boards - Arcanum Inn   --   A general Arcanum forum for fans
VN Boards - Arcanum Mod Board   --   An excellent forum if you have any questions regarding modding
NMA - Arcanum General Forum   --   A general discussion forum for Arcanum
NMA - Arcanum Quest-Hack Forum   --   A bit empty at the moment, but a forum I visit frequently
DarkUnderlord   --   My web site!