Quests! ------- Quests are missions that players are sent on in order to teach them efficient strategies for playing the mud; skills such as efficient mapping of an area, problem solving, a little melee, and cooperation with NPC's. A Quest is not something a player does purely to receive experience points, but to accomplish personal satisfaction. Steps in Making A Quest. ------------------------ 1) A nice place to find quests of any sort are in books that describe legends and myths of all types. The heroics of Launcelot, Hercales, Odin, Zeus, Moses, can all be themes for a quest. These are typical depictions of what a QUEST is. It is NOT just to kill one big monster. 2) Plan out the quest. Write a detailed description of what the player needs to aquire from monsters or rooms/areas, and what he needs to do with them, and how he used these to accomplish the set task. A QC will then look over your ideas and give you suggestions on its merits, as well as ways of improving it. 3) The QUEST must be of major importance to... a) The player - make it something RELEVANT to his knowledge of the mud. A good quest always makes use of his knowledge of current areas. b) The mud as a global community - Quests are given out by the town clerk of the city of Tempus, or instructions from the mayor, ordering the player to help out in some mission of vital importance to the safety of the city. A good working example of this can be found in the playing of SSI's IBM Computer Game 'Pool of Radiance'(tm. TSR). Here, certain proclamations are given to the players to help out the city. They were requested to find out the happenings of a graveyard outside the city, rescue a kidnapped child, return powerful magical items to certain people who had them stolen, etc. 4) When the quest is ready to be put into use by players it must first be checked by a QC. He will then approve it, or send it back to be reviewed and redone. Functions --------- string set_author(string who) The Author is what creator made the quest, it can be a single name, or a string of many names. string set_hint(string str) The Quest Hint is a much missunderstood function. This is a first starting clue, as well as a quick description of what must be done by the player. An example would be: "The captain of the guard, Earothas, has informed us that he is in need of new recruits for his guard as some have been killed by bands of orcs recently. Approach him, and tell him we have sent you to aid him. [Quest Points 20]" Note that it gives the reason for WHY the quest is being done, gives the player a little bit of INFORMATION, and gives them their first contact for FURTHER information as to what to do next. Quests such as 'Find the Secret of the Guyvers', 'Find Humphrey the Hermit' are not valid hints. A hint must say: ...WHY WHERE WHO and give INFORMATION...as in the good example above and must be RELEVANT to the player in his mud playing. One good way is to recall that it is the Council of Tempus City which is sending the player on this quest. Keep that in mind when writing the hint. A QC will have the final say as to what the hint will be permitted to be. string set_qname(string str) This is the name of the quest itself. If using guard example from above: set_qname("City Guards"); string set_req_place(string room) The quest system is set up so that only one room can call the quest to be finished by the player, this is that room. string set_req_caller(string file) If the quest is called by an object within the room, a sword when slaying the final monster, or activating an object within a room, a wand or magical item, then this is the filename of that item. If it is a room, then the rooms filename is used. int set_min_level(int lev) int set_max_level(int lev) These are the level parameters for the quest. A player does choose a quest. but is instead allocated one at random. These functions allow a player to be set a quest to do, so that it is within his capability to complete. int set_qpoints(int num) Quest points are allocated a player based upon the quests difficulty. Quest points are hence allocated according to - Table 1: Quest difficulty ratings. Difficulty Rating Quest Points for Completion --------------------------------------------------------- Routine 10 Easy 20 Light 30 Medium 40 Hard 50 Very Hard 60 Extremely Hard 70 Sheer Folly 80 Absurd 90 Insane 100 --------------------------------------------------------- Note that a quest which is 'Hard' for levels 10-15 may be 'Sheer Folly' for levels 2-8, but 'Routine' for levels 30+. Your QC will aid you in selecting an appropriate points value for the quest. status set_test(status flag) When testing the quest, you donot want your test character to have it set (you can only do a quest once). This flag enables the quest to be done, without completing it. A message will be given to the tester if he completes the quest, but it will not be set to 'complete' in his list of quests. Example: -------- inherit "secure/questdef"; void reset(status arg) { if(arg) return; set_author("Ramses"); set_qname("Poseidon"); set_hint( "Princess Shea has been captured by the orcs in the \n"+ "south valley. You must rescue her before she dies \n"); set_min_level(15); set_max_level(19); set_req_place("players/angel/valley/hut20"); set_req_caller("players/angel/valley/items/amulet"); set_qpoints(50); set_test(1); } status query_quests(string what) Returns '1' if the string is a quest that the player has completed. string *query_all_quests() string *query_done_quests() Returns an array of ALL the completed quests the player has completed. string assign_quest(string quest_id) This is the function used by the city clerk to assign quests. When done without an argument, it simply assigns the player a random quest for his level. If he already has an assigned quest, he cannot be set another one UNTIL he completes his current quest. SEC6 and over creators may 'force' a quest on a player through a patch. status finish_quest(string quest_id) Returns '1' if the quest_id matches the players 'current quest'. Only those objects and rooms specified by the quest object (shown above) will allow the quest to be finished, as well as SEC6+ creators. When this is done, the quest object itself adds the amount of quest points the player is rewarded, and clears the way for the player to be permitted to do another quest. void quest_hint() Writes the quest hint to the player. int query_quest_points() Simply the amount of quest points the player has. string query_current_quest() string query_curr_quest() This will return the name of the current quest which is assigned to the player. Conclusion ---------- Little quests are always fun and exciting for players. You need not always code formal quests for players. Monsters and other NPC's can always have chats which point to ways that players can explore and solve small 'quests'. If you would like to code a quest to help find Humphrey the Hermit, then it doesnt have to be a QUEST. Monsters may have chats that express their grief at Humphrey's dissapearance, pointing to possible gaining of experience or money or items or the like if they find him. The ONLY way that this becomes a QUEST is if, somehow, the creator can decide as to WHY the Council of Tempus would send a player to find him. Perhaps Humphrey is the Mayor's brother, missing for 2 weeks. Guards have been unable to find him, and it is suspected that the dark elves may have kidnapped him? The players job is to find out why, and to hopefully bring Humphrey back home. This is a quite acceptable way of introducing a true QUEST to a player, whereas 'Humphrey is missing, talk to the barman about the rumours' is not. If in any doubt, a SENIOR or ELDER will help you set out and design your quest. Remember, more than one Creator can work on a quest. Quests from multiple areas can be fun and exciting. Recall that you can manipulate access to certain directories through your access.c object in your home directory for this purpose. Players ARE permitted to help eachother out in doing a quest when this involves killing monsters, and helping out discovering problems and searching and exploring areas. What is discouraged is this - * Don't tell players how to finish any part of a quest. Let them explore and search for themselves. * And don't log in with your test character to tell them either! * Players who have already done the quest should be disuaded from telling them HOW to complete it. This is partially performed by giving the player a random quest, rather than allowing them to choose which one they wish to do. If you can design a quest that encorperates cooperation between many players then by all means code it! Remember, however, that only the person with the correctly assigned quest will be able to complete it. Angel, July 1994.