Top MUD Sites

About this Site
MUD Forums
MUD Articles
MUD Reviews
TMS Rules
Our Affiliates
Advertise with Us

Top MUD Sites
Add your MUD
Edit your MUD
Sites 1-20
Sites 21-40
Sites 41-60
Sites 61-80
Sites 81-100

Alter Aeon

Articles Section
How to Make Challenging and Fun Quests

Sooner or later most players get bored with a Mud. They get the jaded feeling of having been everywhere, done everything, got all the best equipment and killed every mob around. The smarter and better the player, the sooner they get tired. And naturally the smart and good players are the ones we most would like to keep. So you have to think of something, that can keep the interest up for those intelligent players.

One of the main things that make a mud fun to play is a lot of built-in Quests and puzzles in the zones. In this way you pose an extra challenge for the players who want to do a bit more with their time than just bashing mobs. And the Quests also give you a chance to reward the smart players who know how to use their brains a bit.

However, I really hate the Quest snippet that you can download, where some mob keeps spamming the gossip channel with complaints about his stolen crown and things like that. Quest should be a lot subtler than this. In the mud I am working on, we provide some Questcards that give a first hint, then more hints are given in the zone itself, by room, mob and object descs, extra descs, gossiping mobs etc. We even have a Quest Academy on top of our customised Mud School, to give the new players some useful hints about what to look for in the zones.

There are many different types of Quests; scavenger hunts, rescue plots, search for specially hidden items, mazes, riddles, etc. - or a combination of two or several of these ideas. Most of them, except the mazes and hidden items, depend on some sort of script (=mob_prog), so you have to implement those in the Mud of course, unless you want to hard-code it all. Which would be a pity, because then you'd lose all the creativity that can be developed by Builders, when giving a reasonably free rein.

By the way, all the examples of scripts that I will give below are using DeathGate or DG scripts. The mob_progs used in Diku have a different syntax and I am not sure if you can use all the options the DG scripts have in them, but basically they should do the same thing. The scripts enclosed all work well in our mud. However, we have added lots of flags and variables to the code along the way, whenever the demand came up from a Builder. If any of those options won't work for you, you'll have to ask your Coder to do the same.

You'd be amazed about how many and complicated things you can do with scripts, but there are a few things that restrict even the scripts. Basically the things you can do with them, are limited by what triggers you use for the script. Either you give an item to a mob (receive trigger), you bring a mob to some place (greet or entry trigger), or you say some key phrase, perhaps a 'secret password', to start the script (speech trigger). You can also give a mob some money (bribe trigger) or of course kill it (death trigger). The act and command triggers give you a lot of more options, like for instance 'push button' or 'move chair' or 'pull lever'. Using a social in the room could trigger an act or command script too. Also there are time triggers, which for instance could set a door to open only at a short time, perhaps around midnight, or load a portal that disappears after 30 seconds.

Using and combining those limited options in an inventive way, and combining them with creative zone building, can give you an almost unlimited number of funny and challenging Quests. There are also a few tricks that you could use to make not just the quests, but the zones themselves a bit more challenging.

In 4D we work a lot with HIDDEN objects - containers, portals and climbable items - by using the colour code. If you set the long desc of an item to be a single { , it doesn't show up on the normal room display. If you remove the GET flag and put a HIDDEN flag on the object too, it won't even show up on the command 'get all', which many players seem to type automatically on entering a new room. Set a !LOCATE flag on it too and the item will be totally undetectable unless you read the descs very carefully.
Also we have not only the usual look and extra descs, you can look ABOVE, BEHIND or UNDER items, and you can also LISTEN, SMELL, TASTE and FEEL. All of these options can be used for hiding clues.
The room desc might mention 'a large stone', the command 'look stone' could tell you that 'The stone seems to have been shifted recently', then 'look under stone' would produce the info 'There is a large hole under the stone', and finally perhaps 'enter hole' or 'look in hole' might produce some results. (Without reading those descs you'd have no clue that the hole even existed.).
Or ONE of the trees in a rather large forest could turn out to be CLIMBABLE, leading you to some secret world in the tree crowns.
Or some clue could mention that the item you are looking for smells like honey-suckle. And only one of the objects in the zone has this scent, when you smell it.
Or the 'LISTEN' or 'SMELL' desc in a room could give you a hint about which object you should take a bit closer look at. Or even trigger a script that sets off when someone types LISTEN or SMELL in the room.
There is also the more sophisticated method of using for instance a 'secret button', which opens the hidden door when you press it. This can be achieved with a COMMAND or ACT trigger, set either on the room or an object in it, and reacting for instance to the command 'press button'. Basically you could use almost any command to trigger a script like this, for instance:
press button
pull handle
move candle
push boulder
turn knob

(Note that the command triggers only work for mortals, so you cannot test that type of scripts with your imm char).

The script below reacts to the command PRESS, regardless what they press. (You can set it to react only to one argument, by using the if-check in the next script).
1) Name : press
2) Intended for : rooms
3) Trigger types: Command
4) Numberic Arg : 100
5) Arguments : press
6) Commands:
wait 1 s
%echo% The panel silently slides to one side, revealing an opening in the wall.
%door% 7551 west flags a
wait 10 s
%echo% the panel silently slides shut again.
%door% 7551 west flags b

The num argument of an object script varies if the object is on the floor, in inventory or equipped. The script below is set to react to an object on the floor. It also reacts only if you type PUSH BOULDER.
1) Name : push boulder
2) Intended for : objects
3) Trigger types: Command
4) Numberic Arg : 4
5) Arguments : push
6) Commands:
if ("%arg%" != "boulder")
%send% %actor% Push what?
%echo% The boulder rolls over to one side, revealing an opening in the ground.
%door% 7552 west flags a
wait 10 s
%echo% The boulder suddenly rolls back, covering the opening again.
%door% 7552 flags b

(You should be a bit wary of scripts using %arg% in the commands however. These args are a bit like a razor in the hand of a monkey. They can be set to do just about anything, including giving imm commands to mortals. To a person who is good as scripting, but lacks moral, the temptation of abusing them might become too great. So check all command lines with %arg% in them, if you have the slightest reason to doubt the honesty of your Builders.)

There are other tricks too. You can set scripts that only let you in if you are above a certain level, good-aligned, a registered Roleplayer or PKiller etc. Many players use equipment which has negative stats on int, wis, dex and cha to balance extra hit- and damroll or hp, and this could be used in the Quests (if %actor.cha% <30, if %actor.level% <30 etc)
- For instance, the mob will only talk to you if your charisma is over 30, otherwise it will tell you that you are too ugly to stand, and teleport you out of the room.
- The Castle of the Wizard might not allow you to enter, unless your int and wis are 18, or you may not be able to climb the rope unless your dex is at least 17.
- The gate guard might not admit you unless you are above level 30. (This is useful in restricted quests, if you want to stop the players from creating new chars to perform a one-time quest all over again. It would also stop players of low level from entering very tough parts of a zone, where they would most certainly be killed. Or it could stop the high level players from going to newbie zones and clear them out just out of laziness or pure spite).
- If you have a really evil mind, you might set it up so that only female chars or only one special race or class can enter the room. (This could be very annoying, so it should be used sparingly. But in some cases it would be logical. For instance: only a pixie could enter the tiny hole, or only the female is allowed into the Women's Locker Room, or only the Cleric will be let into the Convent. ) They would have to ask the aid of fellow players for some parts of the Quests, which is generally a good idea, because it promotes social skills.

The simple task of finding an item and bring it to a mob could be varied in thousands of ways.
The most obvious thing would of course be to make the item really hard to find. Putting a no_locate flag on it and hiding it in an 'invisible' container would be one way. Or putting it in the middle of a next-to-impossible maze.
But maybe you can only get the desired item by performing some task for another mob, who will then give you the object in return? Maybe the item is so heavy that you can only bring it to the Quest mob if you first discard all your equipment? Or maybe the mob asks for 10 different items, which are all more or less hard to find? Maybe you even have to present them in the correct order, for it to work?
Or maybe the only way of getting the object is to defeat a powerful dragon, which is only killable if you use 'the Sacred Sword of the Dragon-slayer' or seek the aid of Saint George. (In which case you first have to locate the Sword or Saint George of course. And how do you know that you need that particular sword or knight to help you? Well, perhaps because a bard is singing about it in an inn somewhere, or there is a mouldy book in some old library where the story is told...)

Below is a couple of examples of how you can set a mob to react only after he's been given several different items.

This script is set to react when a mob receives 2 of object 4100, 1 of 4111 and 1 of 4112. You can of course instead set it to receive 1 of four or more different objects.

1) Name : multi item receive
2) Intended for : Mobiles
3) Trigger types: Receive
4) Numberic Arg : 1
5) Arguments :
6) Commands:
if %object.vnum% == 4110
eval obj1 %obj1% + 1
set obj1 %obj1%
global obj1
say Thank you,
elseif %object.vnum% == 4111
eval obj2 %obj2% + 1
set obj2 %obj2%
global obj2
say Thank you,
elseif %object.vnum% == 4112
eval obj3 %obj3% + 1
set obj3 %obj3%
global obj3
say Thank you,
return 0
say Nice try. Wrong ingredient.
if (%obj1% == 2) && (%obj2% == 1) && (%obj3% == 1)
%load% obj 4113
wait 1 s
say Great,! This all I need for my potion!
Say here's a small reward for your trouble.
give token
unset obj1
unset obj2
unset obj3
mpurge self

The simple Quest of bringing a lost child to its mother could also be varied indefinitely. The child could be next-to-impossible to locate, or you might have to get it past a forest full of wolves that attack it on sight. You may have to lead it along a very special path, which is the only possible, since mobs cannot enter portals or climb trees (unless they are charmed) nor cross a river or chasm (unless they have water_walk or wings). Perhaps the kid refuses to follow you unless you address it with its real name. Or maybe you HAVE to charm the stubborn brat to make it follow, or perhaps even push it along?
Or maybe the mob is held prisoner in a castle, which you cannot enter unless you figure out the secret password? Maybe you have to bribe the guard, and he will ask for something harder-to-get than money, and send you out on a quest of his own? Maybe you also need somebody to tell you where the secret key is hidden? And the dungeon could be a maze, next to impossible to find the way out of. And of course the other guards would attack you - or perhaps go for the prisoner instead, killing him before your eyes.
Or maybe it isn't just ONE mob that needs to be saved, maybe you also need to get his seven siblings, or a whole football team for the next tournament?
I could go on like this forever, but you get the general idea, don't you?
Below is a basic example of a greet_script for a save-the-child quest:

if %actor.vnum% == 732
wait 1 s
emote cries out, 'Bobby! My baby! At last!'
embrace Bobby
wait 1 s
%purge% Bobby
say Oh... wait - my good friend, who helped me...
say Here is the reward for getting my baby back.
%load% obj 842
wait 1 s
emote gets a brass token from her pouch.
drop token
say This is a token, they are worth a lot.
Emote points to the token on the ground.
say Just pick it up and give it to an immortal.
emote takes the child in her arms and leaves into the cave.
mgoto 859
wait 30 s
mgoto 702
emote comes out from the cave.

One problem with this type of script is that all scripts need a defined %actor%. If the Quest is a bit complicated, the %actor% isn't necessarily the character that triggered the script, which might present a problem when it comes to the reward. This often happens in the scripts where you bring a mob to another mob, like the example above. The first mob will react to the vnum of the second, making that mob the %actor%, not the player that brought it there. So the command line
would end up in the mother giving the reward to the child instead of the player.
There are ways around this, of course. The easiest method is to let the first mob just drop the reward, and let the player pick it up from the floor, as in the script above. A more sophisticated method is to use the variable %actor.master%, to identify the player that the mob is following. This allows you to let the first mob give the item to the player. However neither of these methods allow you to set a permanent flag on the player. Which you might want to do, if you want to restrict the Quest a bit (see next article).
So you need to get the player identified as in some way. A rather simple method is to make the player respond to a line from one of the mobs, for instance:
Say If you want this reward, you have to say 'Please!'
Or make a dialog that throws the initiative back on the mob that is following the player, To him the player is, so you can let him present the reward and set the flag.

But the best and safest way to make a script of this kind is to base it on the player, not the follower. Here is an example of how it could look:

If %actor.vnum% < 0
if %actor.follower(Toby)% && %actor.follower(Toby).room% == 7406
Wait 2s
emote rushes to her son, hugging him tightly.
Wait 3s
say Toby!! You're back!!
Wait 1s
Wait 3s
Say Thank you for bringing my Toby back to me!
Wait 3s
emote holds back her tears and gives you a warm hug.
Wait 3s
Say Here - a reward! I thank you again!
%load% obj 3301
give token
drop token
wait 2s
emote smiles and with her son, soon gets lost among the villagers.
Purge boy
Purge self
wait 2s
emote raises her head with the sounds of someone entering.
Wait 3s
%echo% Looking to you expectantly, her eyes start to water.
Wait 2s

In the long run you might run out of ideas for Quest rewards. Quest equipment or weapons are always welcome, but if the Quest is a very easy one, the equipment/weapon should not be very good, so it will rarely be used and the time spent on the Quest will be wasted. And if the Quest is a very hard one, the reward might be so powerful that it upsets the balance of the game. Then again, if the reward is too small compared to the hardship of the Quest, all the work they put in is just not worth while, and the players feel cheated. So in 4D we mainly use a system of tokens. If you collect enough of those, you'll be able to buy a lot of nice features, like personalised equipment, wedding rings, crash-proof houses etc. Other muds use 'Quest Points, which work about the same, but are less tangible.

But you can also make some 'cool' item, which isn't good for fighting, but enhances the status of the player in other ways, like for instance a personalised peace of equipment. Transport items are always popular for instance, since most players are lazy and hate walking. These also have the advantage of not disrupting the balance as much as very powerful piece of equipment.

And there is also the option to pay the Questor in money, levels or experience. Below is a script for the latter:

If %object.vnum% == 7406
wait 1s
mpurge staff
emote stares wide-eyed at the knobbly staff.
wait 3s
Say Ooooo-weeeeee!!!
wait 2s
emote slaps you on the back heartily.
wait 3s
Say Thank ya! Thank ya!
wait 2s
Say Ya be a mighty kin' fella!
wait 3s
Say I ains' got much ta offer as a reward, butů
wait 3s
emote turns to one side and pulls out a scroll.
wait 3s
%echo% Reading the incantation, he snaps his head back in your direction.
wait 3s
%echo% With a flick of his wrist, he gestures towards you, adding to your life's experiences.
Set %actor.exp(100000)%
wait 3s
Say There ya go, fella! I hope's da experience will's help ya out!

To sum this up, there are a few basic things you should keep in mind, when making built-in Quests.
1. The Quest should always be 'in character' with the zone it is put in. You have to invent some plot that is in context with the theme of the zone, or the quest will just look silly. In fact the theme of the zone might well be built up around a main Quest, rather than the opposite. Then almost any mob in the zone could be a part of the Quest, giving tiny pieces of the puzzle, or just adding to the depth of the plot.
2. The hardness of the Quest should be related to the level of the zone. In a Newbie zone it has to be rather simple, or you might turn the Newbies off questing totally. The higher the zone, the tougher the Quest should be. It could involve tough mobs to kill or tricky puzzles to figure out - or both. It could also involve a lot of time-consuming wandering and exploring. And the reward should naturally be in proportion to how hard and time-consuming the Quest is.
3. Be fair. It is very easy to make a Quest that is totally impossible to solve for anyone who doesn't already have the solution, but this is not the object here. You MUST plant enough clues to ensure that the patient and meticulous player has a fair chance of solving it, by just thinking logically, looking at the right descriptions or saying the right thing to the right mobs. Also the clues should be in reasonable vicinity to the place of the puzzle, or else be VERY specific. (For instance an old book in a library in one end of the world could tell you that there is a secret tunnel leading from the moat into the Castle of Doom in the other end. Or an Elder in a village could ask you to find a wandering wizard, who last was seen in a remote forest, and give some directions how to get there.)
4. Quests that run over several zones are extra fun. A mob in one end of the world might send you on the hunt for some item in the other end, that you have to present to a third mob to get the reward. Or maybe just the desc of the object gives a hint that a certain mob in a totally different zone would be happy to receive it. If someone is smart enough to try giving the item to that mob, he'll get the reward. (Needless to say, most players never even bother to look at objects, so most of them would never have a clue).
5. Adding some random elements to a Quest is usually a good idea. In this way the task will not be the same each time you try out a certain quest. There are many ways of achieving this, the simplest being wandering mobs, that have a !track flag set, to make them harder to locate. You could also make scripts that load the mobs or objects in several different rooms. A mob might not even show up in the game, until you finished the first part of the Quest. Or make the mobs say different things in different situations, or act differently to different sexes/races/classes, which would make the same Quest quite different for another player. We have a rather nasty mob in our mud, with a random trigger, that makes him ask 8 different riddles when you find him. If you give the wrong answer, he attacks and usually kills his victim, the room is set as !recall and !teleport, and there are no exits. You MIGHT be able to kill him, but then he never loads the item you are after. And the riddle might be totally different next time you try.
6. Either set the room with the Quest mob as INDOORS or give the mob infravision. Nothing is more frustrating for a player, than performing a long and hard quest and then not receiving the well-earned reward, because it happens to be in the middle of the night when they get there and the mob cannot see them. Also the mob cannot send tells to a player it cannot see, so valuable information might be lost. You can choose if you want to use the same precaution with Sense-life and Detect-invis, but perhaps it should be left to the player to make sure that he isn't invis when he speaks to a Quest mob.
7. It is definitely up to the player to make sure that his hands aren't too full or he is carrying too much junk around to receive the reward. Still, it is a kind thought if you make the Quest items generally not weigh too much. Most players that aren't lucky enough to own houses, so they have to drag all their possessions along all the time.
8. You must think up some good reward for the Quest, whether it is equipment, a weapon, a magic item, tokens or something more original. Try if possible to make the reward in character with the Quest it's given for.

One thing we have done in our mud to encourage and educate our players a bit in the Noble Art of Questing is to place a small Quest Academy on top of Mud school. Each room in this zone is a mini-quest that you can try your hand on. If you fail to figure out what to do by yourself, you can just type HINT or SOLUTION, and some help will show up on the screen. The Quest Academy mainly teaches the tricks that 'good' players already know how to use, but it also demonstrates some of the no-so-common features we have, which can be applied to a Quest. To begin with we had a small reward for each Quest you managed to solve by yourself, but it got so widely abused by Twinks, who were just after the rewards, that we had to remove them. So the Academy has to be its own reward, and when the player graduates from it, he only gets the following leaflet, to help remember:

Below are The Questor's Twelve Commandments:
1. Make it a habit to greet the MOBS the first time you visit a new zone. Start out with the generic greeting of each Dimension. Or, if the mob desc gives you any clue, use that word. Many quests are run by mobs. Remember that if your hands are full or you carry too may items, you won't be able to receive the item the mob wants to give you. And quite often you don't get a second chance.
2. Always read the ROOM DESCRIPTIONS. If there is anything 'special' in the room, the desc will usually give a hint about it. Check for extra descs too, by looking at nouns in the room desc. They are not always described, but in many cases you'll get valuable information from them.
3. It is usually a good idea to look at the OBJECTS too. In many cases this will tell you what the item is meant for, even if you forgot to bring any IDENTIFICATION SCROLLS along. And MOB descriptions might give you a clue about some quest that the mob is involved in. So keep reading!
4. Some mobs and items are INVISIBLE, and it's a good idea always to have 'detect invis' on. If you don't belong to one of the magic using classes, there are potions and wands you can use for this.
5. Some mobs and players are HIDING or SNEAKING. Both are thief skills. To see those, you need the spell 'SENSE LIFE'. In case you don't have it, you need to find a potion, wand or item to wear, which gives you the ability. (These may be a bit harder to find than the ID scrolls).
6. Very often nice things are stuck in CONTAINERS. To confuse you, there may be several containers, all looking the same. Probably the valuable object won't be in the first one either. You have to use the command 'look in 2.container'etc. or to sac or junk the first one after you checked it.
7. The only method to find your way through a MAZE is to check ALL rooms in the maze for closed or hidden exits. To make sure you don't have to check the same room twice, just drop one or more coins on the floor, after you've looked in all directions.
8. If you suspect there is a HIDDEN EXIT in a room, type SEARCH, and repeat this 4-5 times to make certain. (The hidden door doesn't always show up at the first try.
9. There are ways to hide objects or mobs in a room so well that you won't be able to see them even with 'detect invis' or 'sense life' activated. But - we try to be at least a BIT fair. So when we do this, there is usually something in the room desc to indicate it. So let's say that the room desc says, that there is a hole somewhere in the room. The chances are that this hole is either a container or a portal. So how do you check this? 'Look in hole' or 'enter hole', might be good choices, don't you think?
10. In this mud we also have objects that you can CLIMB or DESCEND, for instance ladders, ropes, trees, cliffs... More often than not these also do not show up as objects in the room, but they will usually be mentioned in the room description.
11. Using the LISTEN, SMELL and TASTE commands on rooms and objects might be a good idea, if you suspect something special. Also looking BEHIND, ABOVE or UNDER objects could turn out profitable. Mostly you will only get unimportant or non-existent info from those commands, but here and there you'll strike gold!
12. Sucking up to immortals won't get you very far in this mud. Worshipping GODS can however be well worth a try, if the Gods are mobs. Also remember that all Gods are very powerful and probably would make mincemeat of you if you attack them. You can always try of course, but never expect them to be an 'easy kill'.
Don't diminish your own achievements by blabbering about the solutions!
Don't deprive others of the pleasures of exploring the Game themselves!

Finally: First and last, remember that players will abuse anything, if given half a chance, so rest assured that they will try to abuse the Quests too. You have to figure out ways to make your Quests as 'cheat-proof' as possible. I will deal with this in the next article on the subject.

Molly O'Hara of 4 Dimensions

About the author:
Molly O'Hara has been a Builder for more than 4 years and has over 40 zones to her name by now. Since several years back she is the Head Builder and one of the three imps of 4 Dimensions.
4D is a Time Travel mud, specialising heavily in built-in Quests, and the mud has some of the most challenging and advanced Quests that can be found on line.
Address: Homepage:
Mud: port 6000