
QUESTS
------

Each wizard can build one or more quests. Quests are problems that the
mortal players have to solve before they can become wizards.

When a wizard has made a quest, he (or she, or it) must arrange
for it to be test-played by at least one real, mortal player.
The wizard should then write some documentation about the quest, and ask
a highwizard or arch wizard to look at the quest, the final approval of
the quest should be done by the quest coordinator (Currently Brom).
When the quest is approved, the wizard should add code in his (her, its)
castle to put a properly configured quest object ("/obj/quest_obj") in
the quest room ("/room/quest_room") each time the game reboots.
The high/arch wizard should add a few lines in the /permissions/XXX.per
file. (XXX=The name of the wizard who wrote the quest.)

Each quest must have a unique name - either the wizard's own name, or
the wizard's own name plus something more, as in "padrone" and
"padrones_chaosdemon". Each quest must also have a hint, which
the players can look at in the Adventurers Guild.

*** ATTENTION! WARNING! READ THIS:
    The quest name should always start with the wizard's name!


Quest points
------------

In the original LPmud, you had to solve all the quests (or all except some
number, like 2) to become a wizard. All quests were considered equal.

On NannyMUD, each quest gives a certain number of points.
Angmar's quest is used as the "prototypical quest", and gives 100 points.
Easier quests give less points, harder quests give more.
The default, i. e. what you get if you don't set the quest points
in your quest, is 50.

To be able to advance to wizard, a player must - except from one million
normal experience points - have collected a certain percentage,
currently 70%, of the maximum number of quest points. This percentage
is defined by the constant QUEST_POINTS_PERCENT_TO_WIZ in "/room/tune.h".

But wait, it's more complicated than that!
Earlier, many high-level players (on level 19 or so), used to be upset
when new quests were added, since they then suddenly had to solve even
more quests than they had thought they would.
Because of that, each player will "remember" what the max number of
quest points was when that player was created.  To advance to wiz, he
needs to have 70% of THAT number of quest points, instead of of the current
max number.
This means that the players will be happy instead of angry when a wizard
installs a new quest, since they don't have to do more quests, they'll
just have more of them to choose from!

But wait (again), it's actually even more complicated than that!
Since the max number quest points could decrease, for example if a wizard
removes a quest or lowers the points for it, the player actually needs
70% of the smallest number of "max number when he was created" and
"current max number".

For players who - for some reason - don't want to kill a megapoint
of monsters, there is an alternative: if you solve ALL the quests
you can become immortal even without the experience points.
As a "sanity check", this only works if the total number of quest
points is at least 1000.


Deciding how many quest points to give for your quest
-----------------------------------------------------

Each wizard must decide (in cooperation with the other wizards and the arch
wizards) how many quest points a quest he has made should give.

Angmar's quest is used as the "prototypical quest", and gives 100 points.

*** ATTENTION! WARNING! READ THIS:
    Start with a very conservative estimate of the value of your quest,
    i. e. set the number of quest points very low!
    You can always raise it later. Players who have already solved it
    will get the extra points too, since a player's number of solved
    quest points is re-calculated every time it is needed.

*** ATTENTION! WARNING! READ THIS:
    Before you install a quest, the number of quest points
    (and the quest itself!) must be approved (se above).

Easier quests should give fewer points, harder quests give more.
How difficult a quest is to solve is of course hard to judge, and
it depends on many things, but here is a list with some suggestions
on things to consider:

	+ Trickyness ("yes, of course, if I give the bone to the dog it'll
	  start eating and become my friend and I can pass it into the
	  treasury...")
	+ Fighting (how many monsters you have to kill, and how big they are)
	+ Dispersal (how much you have to run around in different parts of
	  the game)
	+ Time (just how much time it takes - maybe this is a function of
	  dispersal and fighting?)
	+ Programmed variation -- that is, can you ask someone how to solve
	  Korkbert's quest, and then write a macro "solve-korkberts-quest"
	  in your client, or are labyrinths and spells different each time?
	? Stupid difficulties ("sigh! - you have to write 'pull the big black
	  longsword from stone' instead of 'get sword'") - but then again,
	  maybe you shouldn't give points for things like that, just fix them?
	- Is it possible to cheat -- i. e. can you let someone else solve the
	  quest, buy the magic sword from him for 100 kilogold, and then you
	  just give it to the king and get the princess and half the kingdom?
 	- Availability on other muds -- the orc_slayer quest, which is present
	  on every LPmud in the world, and everyone can solve in his sleep,
	  should maybe not give as many points as a quest that only exists
	  on this one mud?
	+ Special requirements on the player - ("to kill the demon you must
	  use this magic sword, and then your alignment must be over 1000")
	? Difficulties getting started (the hint in the guild?)

Examples of points for some quests on NannyMUD:
	Orc slayer			10
	Padrone's walking castle	30
	Angmar's treasury		100
	Padrone's chaosdemon		110
	Kobayashi (by Chrisp)		200


Automatic quest feedback
------------------------

To encourage feedback, a letter, similar to this one, will be sent
automatically to each player that has solved a quest:

    From: Angmar
    Subj: The quest 'angmar'
    Date: Jan 24

    Hello, Padrone! You have just solved the quest
    "Break into Angmar's treasury (100 points, by Angmar)",
    and we are now very interested in your opinions:
        Did you like this quest, and why (or why not?)
        Did you find any bugs or other problems?
        Do you have any suggestions for improvement?
        Was the number of quest points adequate?
    Please tell us what you think!

    This message was sent to you auto-magically by a small demon somewhere
    deep inside the game, in the name of Angmar. If you reply to this message
    with the 'r' command, your reply will be sent directly to Angmar.

So don't be alarmed if someones sends you a reply to a mail message
you don't remember sending, but try to use the suggestions and comments
- player feedback (and doing something about it!) is very important if
you want to have a really good quest!


Programming
-----------

Functions in "/obj/player.c": "set_quest" and "query_quests"
Functions in "/obj/quest_obj.c": "set_name", "set_hint", "set_short",
			         "set_points", "query_points"
Functions in "/obj/quest_mailer.c": "set_mailtext", "set_other_wiz"
  Mailtext is used if you want your own text to be send instead of the
  default one and other_wiz could be useful when a new wiz have
  taken over an old, inactive wiz's area.

Clone the quest object, call the functions "set_name", "set_hint",
"set_short" and "set_points" in it, and put it in the quest room.
Example (from Padrone's "castle.c"):

    object qobj;

    qobj = clone_object("obj/quest_obj");
    qobj->set_name("padrone");
    qobj->set_hint("Padrone is sad. He built a beautiful walking castle,\n" +
        "but a gang of pirates stole it and now he cannot\n" +
	"find it any more. Help him to get it back!\n" +
	"You don't have to be big and dangerous to solve this quest,\n" +
        "but it's always a good idea to bring a weapon and some armour...\n");
    qobj->set_short("Find Padrone's walking castle");
    qobj->set_points(30);
    move_object(qobj, "room/quest_room");

To mark that a quest is solved, call the function "set_quest" in the player
object. Example:

    if (this_player()->query_quests("padrone")) {
         write("Padrone says: What? Have you solved the quest again?\n");
         write("Padrone says: But Ok, I won't be angry.\n");
    }
    else {
         write("Padrone says: You found my castle! I am so happy!\n");
         this_player()->set_quest("padrone");
    }


Puzzles
-------

Puzzles are similar to quests, but you don't have to solve them to become
wizard, and they don't have to be approved by an arch wizard.
Just use the functions "set_puzzle" and "query_puzzles" in the player object.
There are no quest points involved here, just give the players some experience
points the first time they solve the puzzle.

The intended use of this "puzzle" mechanism is to award experience
for something only the first time each player does it.


			Padrone, Jan 24, 1992
			Padrone, Sept 6, 1993


