Dread Quixadhal welcomes you back to 141.218.40.78 3000 __ __.__.__ _____ ____ ___________ .___.___.___ / \ / \__| | ____ ___.__. / \ | | \______ \ | | | | \ \/\/ / | | _/ __ < | |/ \ / \| | /| | \ | | | | \ /| | |_\ ___/\___ / Y \ | / | ` \ | | | | \__/\ / |__|____/\___ > ____\____|__ /______/ /_______ / |___|___|___| \/ \/\/ \/ \/ Raised from the depths of the ether, to torment the players of WMU once again! -= Documentation revised by Quixadhal, 95.12.21 =- You have on your screen the latest attempt to document the sprawling mass of spaghetti which we all know and love... WileyMUD! DikuMUD are, by nature, difficult to use, and even harder to program. They evolved out of a poorly thought-out design and grew every more convoluted through various people hacking more and more into them. Why don't we all just go over to the LpMUD people and beg them to let us in then? Well, some of us like taking the mud down every 10 minutes to fix typos... and some of us like the fact that we remember the obscure file formats that these beasties use. Some of us also have inherited wonderfully designed working muds and haven't yet taken the time to learn lpc coding sufficiently to attempt a lossless conversion! In any case, you must somehow have gotten entangled in this web of chaos and confusion, so this is an attempt to help you SUFFER! through the worst of it. Creating on WileyMUD is fairly easy, but it requires a handy copy of these docs somewhere nearby to avoid complete madness. A good calculator is also helpful since we still do bit-twiddling the old fashion way... addition. -= RULES and REGULATIONS =- 1) Your creations MUST fall into the general theme of our mud. I define our theme as a "dark medieval fantasy", which means that orcs, dragons, evil spirits and spell casters are all par for the course. Machine guns, airplanes, taco stands, and anything else from the modern era is unsuitable. If you want a historical timeframe to consider, think about europe before about 800 A.D. 2) Your work must be of good quality and be error free. By good quality, I mean it must be written in the King's English. While I won't force people to use British spellings, I also won't mind if they do. Complete sentances are mandatory, and not having english as your native language is not an excuse. I would not think about writing areas on a german language mud, as I do not know german and would fail miserably. Probably, if you can't catch the subtleties in English poetry, you don't know the language well enough to write high quality descriptions. Remember, the text you enter is the ONLY way people can visualize where they are! Your work should also adhere to our formatting style. We generally indent room descriptions two spaces on the first line, and let the rest be flush with the left margin. Any other descriptions, such as extra details, monsters or whatever, are only indented if they exceed a single line of text. Consider column 75 to be your right margin so that word wrapping clients will see things properly. Bug-free means you've double and triple checked all those annoying little numbers and made sure it looks proper BEFORE giving it to me. 3) You must submit your work to me for it to be entered into the game. Because of the nature of DikuMUDs, you cannot directly enter your creations in the game world. Rather, the entire game must be shutdown and reloaded after your changes have been merged into the world files. This means that one of the highest immortals must be given your work in order for it to enter the game at all. This also means they get a chance to proof-read it before it enters the game. Table of Contenets: This document is broken up into several sections. Each one corresponds to one of the five world files, and other sections regarding all the other files and coding standards. All WileyMUD files follow a fixed format, so each subsection will describe the file directly instead of in prose. I. The World File, tinyworld.wld ............................... 83 II. The Mob File, tinyworld.mob ................................. 1111 III. The Object File, tinyworld.obj .............................. 1111 IV. The Zone File, tinyworld.zon ................................ 1111 V. The Shop File, tinyworld.shp ................................ 1111 VI. Miscellaneus Files and their uses ........................... 1111 VII. WileyMUD III source code .................................... 1111 VIII. Who has been involved in this mess? ......................... 1111 I. The world file (tinyworld.wld) The world file is the heart of WileyMUD. It is the largest (over two megabytes at last count) file involved in the game, and contains well over 4,000 rooms. Here is a description of the room structure as it appears in the file. Anything enclosed in <symbols> is a piece of data. Anything enclosed in {symbols} is a group, which must appear together but which can appear several times or not at all. Anything enclosed in [symbols] is a group which depends on other values, and is only present when those values are set correctly. Anything not in these symbols is a literal which must appear as shown. All lines begin flush with the left margin and are only indented for clarity. If the line ends with a \, it means it is really a continuation of the previous line but was formatted for readability. #<virtual number> <room title>~ <description> ~ <zone number> <room flags> <sector type> \ [ <teleport delay> <target room> <look?> <movement type> ] \ [ <river delay> <flow direction> ] [ <sound one> ~ <sound two> ~ ] { <exit direction> <exit description> ~ <exit keyword list>~ <exit type> <key number> <target room> } [ <alias list>~ ] { E <extra keywords>~ <extra description> ~ } S Explanations of Room fields. <virtual number>: A number for the given room. No two rooms may have the same number. The <virtual number> must always increase when browsing down the world file (but increments can be larger than one). ie. #3001 #3002 #3010 <room title>~: This name is the "title" of the room. It is very important to have a title to your room as that is the only part of a room that will print when 'brief' has been set on a player. A tilda must follow the name of your room. <description>: This is what will print to a character who walks into a room, this should include what the room looks like, what the people see and why they see it. There must be a tilda on a line by itself below the last line of the description. <zone number>: This is the zone in which the room will reside for purposes of a reset. Your room must have a zone or it will have no place in the world to which you build it for. Before you begin building, you will be given a range of virtual numbers to use. All but the last two digits of your range will be your zone number... for example: if you were told to build in the range of 7000 to 7099, your zone will be zone 70. If you were given rooms 16600 to 16699, your zone will be 166. <room flags>: A bitvector consisting of the room conditions. The ones that are desired are added together and that number is used for the final bit. DARK 1 Light must be used to see anything. DEATH 2 Mortals DIE on entry... NEVER use this one! NO_MOB 4 No monsters may enter this room. INDOORS 8 The room is indoors, and unaffected by weather. PEACEFUL 16 No fighting can be attempted. NO_STEAL 32 No stealing can be attempted. NO_SUM 64 Nothing can be summoned out of this room. NO_MAGIC 128 No magic can be cast. TUNNEL 256 This room has a possibility of collapse. PRIVATE 512 This room cannot be accesed by a teleport spell. SOUND 1024 The room eminates sounds. SOUND requires addition of two fields below the line containing the <zone number>, <room flags>, and <sector type>. <sound one> ~ <sound two> ~ <sound one> and <sound two>: These are text strings which are printed to anyone in the room periodically. They may be any length, but should probably be kept to one or two lines. Remember to indent if they will be longer than a single line! Also remember to put the ~'s on a line by themselves following the sound line. You MUST have two sounds if you have any. If you only want one sound, make them both identical. <sector_type>: This determines how many movement points are used when moving through the room. This is a bit table, not the amount of movement it actually takes to move through this room. The sector type is also used to decide things like lighting conditions, spell success, etc. SECT_TELE -1 Teleports players to another room periodically. SECT_INSIDE 0 Indoor room, no weather or lighting changes. SECT_CITY 1 City streets, best movement. SECT_FIELD 2 Grassy fields. SECT_FOREST 3 Dense forest. SECT_HILLS 4 Highlands... rocky hills. SECT_MOUNTAIN 5 Mountains. SECT_WATER_SWIM 6 Shallow water, no current. SECT_WATER_NOSWIM 7 Rivers, Requires use of a boat. SECT_AIR 8 Requires use of flight. SECT_UNDERWATER 9 Deep water, oceans, Requires water breathing. SECT_TELE: The below parameters must be placed behind the <sector_type>. <teleport delay> <target room> <look?> <movement type> <teleport delay>: A multiple of 10, the higher the number, the longer the wait before the teleports activates. (10 is a combat round) <target room>: The room to which you are teleported to. <look?>: If this value is a non-zero you will automatically look when entering the new room. If it is zero, you will not realize you have been moved! <movement type>: If the teleport does not activate before you move out of the room, this is the sector type used for calculating movement costs. SECT_WATER_NOSWIM: The below parameters must be place behind the <sector type>. <river delay> <flow direction> <river delay>: The time it takes before you drift through a exit. <flow direction>: The exit through which you will drift. The exit must exist or no drift will occur. <exit direction>: This combination of a 'D' and exit number. This field states that a exit will be leaving the room in one of the cardinal directions. 0 = North 1 = East 2 = South 3 = West 4 = Up 5 = Down <exit description>: What a player will see if he looks in the direction of this exit. There must be a tilda on a line by itself after this field. <exit keyword list>: A keyword is what the exit is called if you have to open it. This is also used if you want the <exit description> printed out if they look at a keyword. If the exit is a door, you must have a keyword, without one the door cannot be opened or used in any way. <exit type>: This field determines what type of portal the exit is. If it is anything other than '0' there must be a keyword for it to be acted upon. A door is considred opened by the game unless it is closed in the zone file. 0 A open passage. 1 A normal door. 2 A door that cannot be picked, you MUST have the key to unlock it. 3 A Secret door that is not shown by ovbious exits. 4 A Secret door that is pickproof. 5+ A door of the type 4 less, but with an additional alias list. <key number>: The number of the object which can unlock/lock the door. A value of -1 means there is no key for this door. <target room>: The virtual number of the room to which the exit leads. If this number is -1, the exit doesn't lead anywhere, this is used when you need a exit description but don't need it to go anywhere. A good example is the edge of a forest, where a "look east" command will display the vista to the east even though no more rooms yet exist. You must have a door between both rooms that the door seperates! <alias list>: This allows you to have a alternate name to a exit. The northern exit could be called a cave instead of north. This is accomplished by adding 4 to the exit type that you desire. ie. 1 + 4 = 5 to include a alias. Please note that the alias for the exit must be included in the <keywords> for that exit. Also NOTE that it appears to be disabled in the source. E: Extra descriptions Extra descriptions are used for things within the room that you would like the player to be able to look at. This is signified by placing a 'E' on a line by itself after all exits have been completed. Below the 'E' you must add these fields. <extra keywords>~: A list of the keywords that will allow the extra description to be displayed. The keywords must must be seperated by blanks. This must be followed by a tilda. <extra description>: The description that is show when a player types 'look at <keyword>' and keyword matches one of the above. There must be a tilda on a line by itself following the description. S: signifies the end of the room entry, and is the diminutive form of $. An Example Room! #3001 The Griffons Tail~ Warm candlelight burns about you as you glance into this small bar and inn. About you people talk amungst themselves around small oaken tables, most moving uncomfortably upon their small stools. Near the far wall a tall bench serves as the bar for this inn, behind which stands a large man cleaning a wooden mug. A door lies to the west while archways lead east and south from here. ~ 3 12 0 D1 The archway seems to lead into another chamber, most likely where people to when they feel they need to rest. ~ ~ 0 -1 3008 D2 You can see a large bulletin board not for into this chamber. ~ ~ 0 -1 3048 D3 The door is made of solid oak, the brass handle shines in the warm light. ~ door~ 1 3010 3000 E bar~ The bar holds many drinks upon it from those that mill about, the barkeep fills them from time to time, spilling a bit as he looses his attention. ~ S -= Information provided by the room file definition: Room number: 3001 Room name: The Griffons Tail Zone number: 3 Room Flags: 12 (8+4=12) "INDOORS and NO_MOB" Sector Type: 0 "Inside" Exits: A eastern exit which has: A description when someone looks east. No key-words for the exit. A open passageway. No key. Leads to another room, 3008. A southern exit which has: A description when somone looks south. No key-words for the exit. A open passageway. No key. Leads to another room 3048. A western exit which has: A description when someone loods west, or at 'door'. A keyword of door. A pickable door. A key with object number 3010. Leads to another room 3000. Extra Description: bar II. The mob file (tinyworld.mob) If the world file is the heart, the mob file is the limbs of the game. A world without mobs would be a very boring one indeed, so we provide lots of painfully entertaining creatures for you to be killed by. Unlike the world file, there are three distinct variants of mob records. The most common one is the 'MWS' record. These are the WileyMUD II record types and they simplified the data entry by sacrificing flexibility. I do not believe there are any, but support still exists in the source code for the type 'D' mobile, which allowed setting of the ability scores, but used a more archaic format. I have created a new type 'C' mob entry, which tries to follow the feeling of the Wiley II mobs, but allows more flexibility and even future enhancements like variable damage types on multi-attacks such as the venerable claw/claw/bite. To encourage its use, I will begin by describing the type 'C' mob and then describe the others in how they differ. Full templates will be given for each so those ignoring the text and using this as a reference can be spared some suffering. Anything enclosed in <symbols> is a piece of data. Anything enclosed in {symbols} is a group, which must appear together but which can appear several times or not at all. Anything enclosed in [symbols] is a group which depends on other values, and is only present when those values are set correctly. Anything not in these symbols is a literal which must appear as shown. All lines begin flush with the left margin and are only indented for clarity. If the line ends with a \, it means it is really a continuation of the previous line but was formatted for readability. Quixadhal's type 'C' mobile template: #<virtual number> <name list>~ <short description>~ <long description> ~ <description> ~ <act flags> <affect flags> <alignment> C <race> <class> <sex> <height> <weight> <gold> <exp> <level> <hit points> <AC> <thac0> <attacks per round> { <damage> <type> } <immunity> <resistance> <susceptibility> <str> <stradd> <dex> <con> <intel> <wis> <sav1> <sav2> <sav3> <sav4> <sav5> <load position> <default position> <sounds?> <skill count> [ <local sound> ~ <distant sound> ~ ] [ <skill number> <learned> <recognized> ] Basic template of a mobile: <#virtual_number> <name_list>~ <short_description>~ <long_description> ~ <description> ~ <action_flags affects_flags alignment type> <level thac0 AC hit_points damage> <-1 gold experience race_type> <position def_postion sex resistances immunites suscebilities> <room_sound> ~ <distant_sound> ~ -= Explanations: <#virtual_number>: The monsters virtual number. These work best if in numerical order. ie. #102 #201 <name_list>~: This are the names by which the mob can be accesed for player actions such as 'look at buck'. In there 'buck' must be one of the names in the <name_list> for the mob to be looked at. <short_description>~: This string will be displayed when the monster takes action. This is when the mob does anything, ie. A small boy leaves south, A small boy misses you with his hit. <long_description>: This string is displayed when the current position of the mob matches that of the default position. If those two do not match the string will simply read, A small boy is sitting here. There must be a tilda on a line by itself following this description. <description>: This string will be displayed when a player looks at the monster. There must be a tilda on a line by itself following this description. <action_flags>: This bitvector define how the monster behave. The desired bits are to be added together and that final bit is to be used as <action_flags>. ACT_SPEC 1 This bit should not be set. ACT_SENTINEL 2 The mob will not move out of its loading room. ACT_SCAVENGER 4 The mob will pick things up. ACT_ISNPC 8 Do not use. ACT_NICE_THIEF 16 The mob will not attack if a missed steal happens. ACT_AGGRESSIVE 32 The mob will attack only things it can see. ACT_STAY_ZONE 64 The mob will not move out of its loading zone. ACT_WIMPY 128 Mob will flee if injured. If this bit is combined with ACT_AGGRESSIVE the mob attacks sleeping pc's only. ACT_HATED 256 The mob will be attacked by other mobs. ACT_ASSASIN 512 Do not use. ACT_SCARED_PC 1024 Do not use. ACT_IMMORTAL 2048 Mob can not be attacked. ACT_HUNTING 4096 Do not use. ACT_DEADLY 8192 Do not use. ACT_POLYSELF 16384 Do not use. ACT_POLYOTHER 32768 Do not use. ACT_GUARDIAN 65536 Do not use. ACT_USE_ITEM 131072 The mob will use items that it picks up. ACT_FR_MOVES 262144 The mob will use fighter skills. ACT_FD_PROV 524288 The mob has a chance to provide food when killed. ACT_PROT 1048576 Do not use. ACT_MOUNT 2097152 The mob can be ridden. <affection_flags>: This is a bitvector that indicates what the monster is affected by. The bits desired for a mob are added and the final number is that which is used for <affection_flags>. AFF_INVISIBLE 2 The mob is invisible. AFF_DETECT_INVISIBLE 8 The mob can see_invisible. AFF_SENSE_LIFE 32 The mob can sense hidden pc's. AFF_SANCTUARY 128 The mob takes half damage. AFF_FLYING 2048 The mob can move into FLY sectors. AFF_INFRAVISION 32768 The mob can see in the dark. AFF_GILLS 65536 The mob can see underwater. AFF_SNEAK 524288 The mob will not be seen leaving/entering. AFF_HIDE 1048576 The mob will be hidden, even in combat. AFF_CHARM 4194304 The mob will act as charmed if a 'follow' command is given to it. <alignment>: This is the monsters alignment read as: 1000 <> 350 (good alignment) 349 <>-349 (neutral alignment) -350 <>-1000 (evil alignment) <type>: There are four different types of a mobile. The type defines what the mob will do in other respects besides those covered in <affect, action>. 'D' - Do not use. 'S' - Mob will not have multiple attacks or make sounds. 'M' - Mob can have more than one attack. You must place a number after the M to designate how many attacks the mob shall have. ie. M 2 'W' - Mob can have multiple attacks and make sounds. Attacks apply to the same rule as M mobs. Sound is handled at the end of the template. <level>: This is the level of the monster, and is used for the 'consider' command in game. <thac0>: The amount the mob needs to hit armor class 0. The lower the number the better the chance the mob will hit. This number should be <level> + 2, with a max of 20. <AC>: The mobs armor class. The lower the number the harder it is to hit the mob. Figure in dexterity bonuses as dex 18=AC 6, 17=7, 16=8, 15=9, 14+=10. <hit_points>: This defines the number of hitpoints a given monster has. The format is: <level>d8+25. Figure in constitution bonuses as con 18=+4 per <level>, 17=+3/level, 16=+2/level, 15=+1/level. Constitution bonuses are added to the base 25. <damage>: This is the bare_hand damage a mob will give. The format is: 1d4+0 for any normal mobile. The dice and additional strength damage can be increased if the mobile is deserving. <-1>: This is stating that the mob will have a race, which will be place after the <experience>. You do not have to have a race, therefore the -1 is not needed in that case. <gold>: This is how much gold the mob has on its body. This amount can be stolen and is the amount a player will get from the corpse of the mob. <experience>: This is how much exp a player will get for killing the mob. A general rule for experience is 100*<level> + whatever amount you feel neccesary. Do not give out a exuberant amount of exp, but enough to make the fight worth a players while. <race>: This is activated by having a -1 in front of the <gold> portion of the mob template. This number will be the race that the mob is seen as when a player looks at it. Mobs of the same race will help each other out in a fight, keep that in mind. Races available: Player/Mobile races : RACE_HALFBREED 0 RACE_HUMAN 1 RACE_ELVEN 2 RACE_DWARF 3 RACE_HALFLING 4 RACE_GNOME 5 Mobile races : RACE_REPTILE 6 RACE_SPECIAL 7 RACE_LYCANTH 8 RACE_DRAGON 9 RACE_UNDEAD 10 RACE_ORC 11 RACE_INSECT 12 RACE_ARACHNID 13 RACE_DINOSAUR 14 RACE_FISH 15 RACE_BIRD 16 RACE_GIANT 17 RACE_PREDATOR 18 RACE_PARASITE 19 RACE_SLIME 20 RACE_DEMON 21 RACE_SNAKE 22 RACE_HERBIV 23 RACE_TREE 24 RACE_VEGGIE 25 RACE_ELEMENT 26 RACE_PLANAR 27 RACE_DEVIL 28 RACE_GHOST 29 RACE_GOBLIN 30 RACE_TROLL 31 RACE_VEGMAN 32 RACE_MFLAYER 33 RACE_PRIMATE 34 RACE_ANIMAL 35 RACE_FAERY 36 RACE_PLANT 37 <position>: This defines the monster's position when loaded into the game. A position is one of: Position_Sleeping 4 The mob is sleeping. Position_Resting 5 The mob is resting. Position_Sitting 6 The mob is sitting. Position_Standing 8 The mob is standing. <def_position>: This is the position into which the monster will return after a fight. This must be the same as the <positon> or the <long_description> will not print out. <sex>: This is the monsters sex. If the mob is going to have <immunities, ect>, you must add 3 to the sex, and then you may include those fields. Neutral 0 Male 1 Female 2 <resistance> <immunity> <susceptibility>: This combination of numbers will make the mob resistant to those types of attacks and damages. Each field uses the numbers below to result in the resistances, immunities, and suscebilities. This field is only active if a 3 has been added to the sex of the mob. Imm_Fire 1 Imm_Cold 2 Imm_Elec 4 Imm_Energy 8 Imm_Blunt 16 Imm_Pierce 32 Imm_Slash 64 <sound_one>: This is the sound that will be heard if you are in the same room as the W type mob. Only the 'W' type mobs are allowed to have this field. <sound_two>: This is the sound you will hear if you are standing one room away from the mob that emits the sound. Only 'W' type mobs are allows to have this field. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -= Object field description: Basic object template: <#virtual_number> <name_list>~ <short_description>~ <long_description>~ <action_description>~ <type_flag> <extra_flag> <wear_flag> <value0> <value1> <value2> <value3> <wieght> <value> <cost/day> <A> <location> <modifier> <E> <keyword_list>~ <extra_description> ~ <#virtual_number>: This is the virtual number of the object. Object numbers must increase in number with each additional object. #234 #235 #391 <namelist>~: These are the various names that the obj can be accessed with. They must be obvious enough so that a player can manipulate the obj. <short_description>~: This string will be displayed when the object is used. This field is the name of the obj as it will appear in a players inventory or when the obj is manipulated. <long_description>~: This description is displayed when the object is lying on the ground. <action_description>~: This field is not used for all objects other than the audio object for which it is used as the sound that the object will make. <type_flag>: This defines what kind of obj you are making. A obj can ony be one of the listed below. ITEM_LIGHT 1 Obj gives off light. ITEM_SCROLL 2 Obj can be a read spell. ITEM_WAND 3 Obj can use a spell. ITEM_STAFF 4 Obj can use a spell. ITEM_WEAPON 5 Obj is a weapon. ITEM_FIREWEAPON 6 Do not use. ITEM_MISSILE 7 Do not use. ITEM_TREASURE 8 Obj is jewelry worth coin. ITEM_ARMOR 9 Obj is armor. ITEM_POTION 10 Obj can be quaffed. ITEM_WORN 11 Obj can be worn. ITEM_OTHER 12 Obj is misc. ITEM_TRASH 13 Obj is junk. ITEM_TRAP 14 Obj is a trap. ITEM_CONTAINER 15 Obj is a container. ITEM_NOTE 16 Obj is a note, can be written upon. ITEM_DRINKCON 17 Obj is a drink container. ITEM_KEY 18 Obj is a key. ITEM_FOOD 19 Obj is food. ITEM_MONEY 20 Obj is a amount of coins. ITEM_PEN 21 Obj is a pen, can write on a note. ITEM_BOAT 22 Obj allows a player to move into SECT_NOSWIM. ITEM_AUDIO 23 Obj will make a sound. ITEM_BOARD 24 Obj can be a bulletin board. <extra_flag>: This bitvector defines the affects and restrictions of the obj. The desired bits below are added together and the final number is used as the <extra_flag> bit. ITEM_GLOW 1 Obj glows. ITEM_HUM 2 Obj hums. ITEM_INVISIBLE 32 Obj is invisible. ITEM_MAGIC 64 Obj will have a blue hue if detect magic is cast. ITEM_NODROP 128 Obj cannot be dropped. ITEM_BLESS 256 Obj is blessed. ITEM_ANTI_GOOD 512 Obj cannot be held by a good alignment. ITEM_ANTI_EVIL 1024 Obj cannot be held by a evilalignment. ITEM_ANTI_NEUTRAL 2048 Obj cannot be held by a neutral alignment. ITEM_ANTI_CLERIC 4096 Obj cannot be used by a cleric. ITEM_ANTI_MAGE 8192 Obj cannot be used by a mage. ITEM_ANTI_THIEF 16384 Obj cannot be used by a thief. ITEM_ANTI_FIGHTER 32768 Obj cannot be used by a warrior. ITEM_ANTI_RANGER 65536 Obj cannot be used by a ranger. ITEM_PARISH 131072 Obj ITEM_FOOD will decay. <wear_flag>: This bit defines how and where the obj is manipulated within the game. The desired bits are added together and used for <wear_flag> bit. Please note that ITEM_TAKE should be set, or the object can never be picked up to be used. ITEM_TAKE 1 Obj can be picked up. ITEM_WEAR_FINGER 2 Obj can be worn on finger. ITEM_WEAR_NECK 4 Obj can be worn around neck. ITEM_WEAR_BODY 8 Obj can be worn on body. ITEM_WEAR_HEAD 16 Obj can be worn on head. ITEM_WEAR_LEGS 32 Obj can be worn on legs. ITEM_WEAR_FEET 64 Obj can be worn on feet. ITEM_WEAR_HANDS 128 Obj can be worn on hands. ITEM_WEAR_ARMS 256 Obj can be worn on arms. ITEM_WEAR_SHIELD 512 Obj can be used as a shield. ITEM_WEAR_ABOUT 1024 Obj is worn about body. ITEM_WEAR_WAISTE 2048 Obj can be worn around the waiste. ITEM_WEAR_WRIST 4096 Obj can be worn on wrist. ITEM_WIELD 8192 Obj can be wielded one-handed. ITEM_HOLD 16384 Obj can be held in a hand. ITEM_WIELD_TWOH 32768 Obj can he wielded two-handed. <value 0> <value 1> <value 2> <value 3>: These values are very central. They define the ability of items based on the items <item_type>. These values are defined in below as each obj has different values. Values are: (Items with no values listed must have a 0 assinged to all values) ITEM_LIGHT (1) Value[0]: 0 Value[1]: 0 Value[2]: Number of hours the light can be used for. Zero hours means that the light has gone out. A negative number will create an eternal light source. Value[3]: 0 ITEM_SCROLL (2) Value[0]: Level of the spell on the scroll. Value[1]: Spell one. Value[2]: Spell two. Value[3]: Spell three. The values(1-3) are three (or less) different spells scribed on the scroll. Unused spells should be set to -1. ITEM_WAND (3) Value[0]: Level of spell in wand. Value[1]: Max charges. Value[2]: Charges left. Value[3]: Spell in wand. ITEM_STAFF (4) Value[0]: Level of spell in staff. Value[1]: Max charges. Value[2]: Charges left. Value[3]: Spell in staff. ITEM_WEAPON (5) Value[0]: 0 Value[1]: Number of die for damage. Value[2]: Size of die for damage Value[3]: The weapon type. Type is one of: NUMBER CATEGORY Message type 0 : Bludgeon "smite/smites" 1 : Pierce "stab/stabs" 2 : Slash "whip/whips" 3 : Slash "slash/slashes" 4 : Bludgeon "smash/smashes" 5 : Slash "cleave/cleaves" 6 : Bludgeon "crush/crushes" 7 : Bludgeon "pound/pounds" 8 : Mob "claw/claws" 9 : Mob "bite/bites" 10 : Mob "sting/stings" 11 : Pierce "pierce/pierces" ITEM_FIREWEAPON (6) ITEM_MISSILE (7) ITEM_TREASURE (8) ITEM_ARMOR (9) Value[0]: Effective AC of armor. Value[1]: Original AC of armor (before damage). Value[2]: 0 Value[3]: 0 ITEM_POTION (10) Value[0]: Level of the spell in the potion. Value[1]: Spell one. Value[2]: Spell two. Value[3]: Spell three. The values(1-3) are three (or less) different spells, mixed in the potion. Unused spells should be set to -1. ITEM_WORN (11) ITEM_OTHER (12) ITEM_TRASH (13) ITEM_TRAP (14) value[0]: The effect of the trap. TRAP_EFF_MOVE 1 Movement trigger, must be used with TRAP_EFF_(dir). TRAP_EFF_OBJECT 2 Trigger on a get or put of this obj, or in its chest. TRAP_EFF_ROOM 4 Triggers affect all in the room. TRAP_EFF_NORTH 8 Used with TRAP_EFF_MOVE. TRAP_EFF_EAST 16 Used with TRAP_EFF_MOVE. TRAP_EFF_SOUTH 32 Used with TRAP_EFF_MOVE. TRAP_EFF_WEST 64 Used with TRAP_EFF_MOVE. TRAP_EFF_UP 128 Used with TRAP_EFF_MOVE. TRAP_EFF_DOWN 256 Used with TRAP_EFF_MOVE. value[1]: What type of damage the trap does. TRAP_DAM_SLEEP -3 Makes player sleep for 12 hours. Save vs spell. TRAP_DAM_TELEPORT -2 Player is teleported. Save vs petrification. TRAP_DAM_ENERGY 10 Energy damage. TRAP_DAM_FIRE 26 Fire damage. TRAP_DAM_COLD 203 Cold damage. TRAP_DAM_ACID 206 Acid damage. TRAP_DAM_BLUNT 207 Blunt damage. TRAP_DAM_PIERCE 208 Piercing damage. TRAP_DAM_SLASH 209 Slashing damage. value[2]: Level of the trap. The higher the level, the larger the chance of the trap being sprung. value[3]: Charges on trap. ITEM_CONTAINER (15) Value[0]: Maximum weight the container can contain. Value[1]: Container flags: CLOSEABLE 1 PICKPROOF 2 CLOSED 4 LOCKED 8 Value[2]: The item-number of the object which can open the object. -1 means no lockability. Value[3]: 0 ITEM_NOTE (16) ITEM_DRINKCON (17) Value[0]: Max drinks. Value[1]: Number of drinks left. Value[2]: The type of liquid in the drink-container, one of: Type # Drunkness Fullness Thirst LIQ_WATER 0 0 1 10 LIQ_BEER 1 3 2 5 LIQ_WINE 2 5 2 5 LIQ_ALE 3 2 2 5 LIQ_DARKALE 4 1 2 5 LIQ_WHISKY 5 6 1 4 LIQ_LEMONADE 6 0 1 8 LIQ_FIREBRT 7 10 0 0 LIQ_LOCALSPC 8 3 3 3 LIQ_SLIME 9 0 4 -8 LIQ_MILK 10 0 3 6 LIQ_TEA 11 0 1 6 LIQ_COFFE 12 0 1 6 LIQ_BLOOD 13 0 2 -1 LIQ_SALTWATER 14 0 1 -2 LIQ_COKE 15 0 1 5 Value[3]: If non-zero, the drink is poisoned. ITEM_KEY (18) Value[0]: The key-type. This value must match the lock-type of the door. Value[1]: 0 Value[2]: 0 Value[3]: 0 ITEM_FOOD (19) Value[0]: The number of hours, that this food will fill the stomach. Value[1]: 0 Value[2]: 0 Value[3]: If this value is non-zero, the food is poisoned. ITEM_MONEY (20) Value[0]: The number of gold coins. Value[1]: 0 Value[2]: 0 Value[3]: 0 ITEM_PEN (21) ITEM_BOAT (22) Spells for items: (The Y/N are stating whether that spell can be in that item. The MIN_LEV is the minimum level for that item spell level in the item) POTION SCROLL WAND STAFF MIN_LEV TYPE_UNDEFINED -1 Y Y Y Y - SPELL_RESERVED_DBC 0 N N N N - SPELL_ARMOR 1 Y Y Y N >0 SPELL_TELEPORT 2 Y Y Y Y >0 SPELL_BLESS 3 Y Y Y N ... SPELL_BLINDNESS 4 Y Y Y Y SPELL_BURNING_HANDS 5 N N N N == 5 SPELL_CALL_LIGHTNING 6 Y Y N Y >=12 SPELL_CHARM_PERSON 7 N Y N Y SPELL_CHILL_TOUCH 8 N N N N == 3 SPELL_CLONE 9 Y Y Y N SPELL_COLOUR_SPRAY 10 N Y Y N ==11 SPELL_CONTROL_WEATHER 11 N N N N SPELL_CREATE_FOOD 12 N Y N N SPELL_CREATE_WATER 13 N N N N SPELL_CURE_BLIND 14 Y N N Y SPELL_CURE_CRITIC 15 Y N N Y SPELL_CURE_LIGHT 16 Y N N Y SPELL_CURSE 17 Y Y N Y SPELL_DETECT_EVIL 18 Y N N Y SPELL_DETECT_INVISIBLE 19 Y N N Y SPELL_DETECT_MAGIC 20 Y N N Y SPELL_DETECT_POISON 21 Y Y N N SPELL_DISPEL_EVIL 22 Y Y Y Y == 10 SPELL_EARTHQUAKE 23 N Y N Y == 7 SPELL_ENCHANT_WEAPON 24 N Y N N SPELL_ENERGY_DRAIN 25 Y Y Y Y == 13 SPELL_FIREBALL 26 N Y Y N == 15 SPELL_HARM 27 Y N N Y == 15 SPELL_HEAL 28 Y N N Y SPELL_INVISIBLE 29 Y Y Y Y SPELL_LIGHTNING_BOLT 30 N Y Y N == 9 SPELL_LOCATE_OBJECT 31 N N N N SPELL_MAGIC_MISSILE 32 N Y Y N == 1 SPELL_POISON 33 Y N N Y SPELL_PROTECT_FROM_EVIL 34 Y Y Y Y SPELL_REMOVE_CURSE 35 Y Y N Y SPELL_SANCTUARY 36 Y Y N Y SPELL_SHOCKING_GRASP 37 N N N N == 7 SPELL_SLEEP 38 Y Y Y Y SPELL_STRENGTH 39 Y Y N Y SPELL_SUMMON 40 N N N N SPELL_VENTRILOQUATE 41 N N N N SPELL_WORD_OF_RECALL 42 Y Y Y Y SPELL_REMOVE_POISON 43 Y N N Y SPELL_SENCE_LIFE 44 Y N N Y SPELL_IDENTIFY 53 N Y N N <weight>: The weight of the item in pounds. <value>: The value of the item if sold. <cost/day>: The cost to store the item in the reception overnight. <A>: This option is stating that the object has magical properties if it is held, worn or used by the player. There can a maximum of two properties to a object. <location>: This is the area of the player that the obj will affect. APPLY_NONE 0 Do not use. APPLY_STR 1 Positive aids while negative hinders strength. APPLY_DEX 2 Positive aids while negative hinders dexterity. APPLY_INT 3 Positive aids while negative hinders inteligence. APPLY_WIS 4 Positive aids while negative hinders wisdom. APPLY_CON 5 Positive aids while negative hinders constitution. APPLY_SEX 6 Do not use. APPLY_CLASS 7 Do not use. APPLY_LEVEL 8 Do not use. APPLY_AGE 9 Positive will age while negative makes young. APPLY_CHAR_WEIGHT 10 Positive adds wieght while negative takes away. APPLY_CHAR_HEIGHT 11 Positive adds hieght while negative takes away. APPLY_MANA 12 Positive adds mana while negative takes away. APPLY_HIT 13 Positive adds HP while negative declines HP. APPLY_MOVE 14 Positive adds move while negative declines move. APPLY_GOLD 15 Positive adds gold while negative declines gold. APPLY_EXP 16 Do not use. APPLY_ARMOR 17 Negative numbers make a lower AC. APPLY_HITROLL 18 Bonus/penalty to hit the opponent. APPLY_DAMROLL 19 Bouns/penalty to damage the opponent. APPLY_SAVING_PARA 20 Positive number helps make saving throw. APPLY_SAVING_ROD 21 Positive number helps make saving throw. APPLY_SAVING_PETRI 22 Positive number helps make saving throw. APPLY_SAVING_BREATH 23 Positive number helps make saving throw. APPLY_SAVING_SPELL 24 Positive number helps make saving throw. APPLY_SAVE_ALL 25 Adjustment to all 5 saving throws APPLY_IMMUNE 26 Resistance to spell or weapon/spell type. Imm_Fire 1 Imm_Cold 2 Imm_Elec 4 Imm_Energy 8 Imm_Blunt 16 Imm_Pierce 32 Imm_Slash 64 APPLY_SUSC 27 Susceptable to a above weapon/spell type. APPLY_M_IMMUNE 28 Make totally immune to a above weapon/spell type. APPLY_SPELL_AFFECT 29 Makes a item use a spell. (above list) APPLY_WEAPON_SPELL 30 A weapon uses a spell upon each hit. (above list) APPLY_EAT_SPELL 31 Food contains a spell cast when eaten. APPLY_BACKSTAB 32 Positive aids skill while negative is a detriment. APPLY_KICK 33 Positive aids skill while negative is a detriment. APPLY_SNEAK 34 Positive aids skill while negative is a detriment. APPLY_HIDE 35 Positive aids skill while negative is a detriment. APPLY_BASH 36 Positive aids skill while negative is a detriment. APPLY_PICK 37 Positive aids skill while negative is a detriment. APPLY_STEAL 38 Positive aids skill while negative is a detriment. APPLY_TRACK 39 Positive aids skill while negative is a detriment. APPLY_HITNDAM 40 Bonus/penalty for both to_hit and damage. <modifier>: This is a negative or positive number following the <location>. A 1 2 <E>: This option means that there will be a extra description. <keyword_list>~: The words that are used to activate the extra descriptions buffer. <extra_description>: The buffer that will print out if a player looks at one of the keywords. There must be a tilda on a line by itself following the description. Example of a mobile: #3001 punice baker~ Punice the baker~ The baker, Punice, looks at you calmly, wiping his hands on an apron. ~ A fat, nice looking baker. But you can see that he has many scars on his body. ~ 2 0 900 W 2 15 2 2 15d8+170 1d4+4 -1 200 3000 1 8 8 1 Punice says, 'What can I get for you?". ~ ~ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -= The zone file description: Basic template of a zone file: <#zone_number> <zone_name>~ <top_room> <reset_time> <reset_mode> <command> <if_flag> <parm1/command> <max_existing/state> <parm2/room> S What this mess means: <#zone_number>: This is the virtual_number of the zone. The rooms that are part of this zone must match the <#zone_number>. This number relates to objects and mobs as well. The zone will work fastest if all the files that are being used inside a zone start with the zone number for their <#virtual_numbers>. <zone_name>~: This is the name of the zone as it would appear in a table of all zones. There must be a tilda following the <zone_name>. <top_room>: This is the largest <#virtual_number> of the rooms that are being loaded into this zone. <reset_time>: This is the amount of time a zone will remain before it resets all the commands within its file. This value is a number of minutes, usually between 30 minutes and a hour. Zones that never reset have no need for a reset time, therefore this value can be placed at 0. <reset_mode>: This field is a command: 0, 1, 2. Any of those three numbers will tell the zone file how the zone will reset. They mean: 0: Don't reset the zone at all. In this case, the age of the zone is never updated, and it will never be queued for reset. Thus, the value of the <reset_time> is effectively ignored. 1: Reset the zone as soon as it is deserted, ie as soon as there are no players located within the zone. 2: Reset the zone no matter who or what is in it. <command> <if_flag> <parm1/command> <max_existing/state> <parm2/room>: These are a series of comands that tell the zone file what to do when it resets. Each command has different parts so each will be handled seperately. The commands are: M: This command loads a mobile into a room. Format: M <if_flag> <mob_number> <max_existing> <room> <if_flag>: This is either 0, which means load the mobile no matter what. Or 1, which means load the mobile only if the command before it was executed. This stands true for all the commands in the zone file. 0 means load the command, 1 means load this command only if the previous was executed. <mob_number>: This is the virtual number of the mobile to be loaded. <max_existing>: This field is the maximum number of mobs that the game will load in. Note that if you want more than one mobile in a room you must load each individualy, with the <max_existing> equal to the total number of that which will be in the game. This stands true for all the commands in the zone file. This field must be the total amount that you want to be loaded into the game. <room>: This is the virtual number of the room to which the mob is loaded into. O: This command loads a object into a room. Format: O <if_flag> <obj_number> <max_existing> <room> <obj_number>: This is the virtual number of the object to be loaded. <room>: This is the room that the obj is to be loaded into. G: Give a obj to a mob. This must be preceeded with the load of a mob. Format: G <if_flag> <obj_number> <max_existing> <obj_number>: This is the virtual number of the obj to be given. E: Equips a mob with a object. Format: E <if_flag> <obj_number> <max_existing> <equip_position> <obj_number>: The virtual number of the obj to be equipped. <equip_position>: This is the position to which the mob will be equiped with the item. Make sure that the obj is able to be equiped in that position, or you will have boots loading in as worn on head. Positions are: WEAR_LIGHT 0 WEAR_FINGER_R 1 WEAR_FINGER_L 2 WEAR_NECK_1 3 WEAR_NECK_2 4 WEAR_BODY 5 WEAR_HEAD 6 WEAR_LEGS 7 WEAR_FEET 8 WEAR_HANDS 9 WEAR_ARMS 10 WEAR_SHIELD 11 WEAR_ABOUT 12 WEAR_WAISTE 13 WEAR_WRIST_R 14 WEAR_WRIST_L 15 WIELD 16 HOLD 17 WIELD_TWOH 18 P: Loads one obj and puts it into another obj. Format: P <if_flag> <obj_number1> <max_existing> <obj_number2> <obj_number1>: This is the obj that will be put into <obj_number2>. <obj_number2>: This is the obj that will have <obj_number1> put into it. D: Sets the state of a door. Format: D <if_flag> <room> <exit_number> <state> <room>: This is the room that holds the door to be manipulated. <exit_number>: This is the exit number of the exit. (1-5) <state>: This field puts the door in one of the below states. 0: Open. 1: Closed. 2: Closed and locked. R: Removes a obj from a room. Format: R <if_flag> <room> <obj_number> <room>: The room from which the obj is to be removed. <obj_number>: The virtual number of the obj to be removed. L: Led by, makes a mob the leader of others. This still needs a bit more work. H/F: The hate/fear flags. These will make a mob hate/fear something else. This still needs a bit more work. Example of part of a zone: #30 Shylar~ 3099 15 2 M 0 3000 1 3001 * buck, the barkeep w/drinks G 1 3000 1 G 1 3001 1 G 1 3002 1 G 1 3003 6 G 1 3004 1 M 0 3001 1 3010 * punice, the baker w/food G 1 3010 7 G 1 3011 3 G 1 3012 3 M 0 3004 1 3012 * sass, the leatherworker w/leathers G 1 3025 100 G 1 3026 100 G 1 3027 100 G 1 3028 100 G 1 3051 100 G 1 3052 100 G 1 3053 100 M 0 3005 1 3008 * butler M 0 3018 5 3016 * small boys M 0 3018 5 3002 M 0 3018 5 3002 M 0 3018 5 3015 M 0 3018 5 3005 S =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -= The design of shops. Basic template of a shop: <#virtual_number>~ <obj1_sold> <obj2_sold> <obj3_sold> <obj4_sold> <obj5_sold> <selling_profit> <buying_profit> <obj1_traded> <obj2_traded> <obj3_traded> <obj4_traded> <obj5_traded> <keeper_message1>~ <keeper_message2>~ <keeper_message3>~ <keeper_message4>~ <keeper_message5>~ <keeper_message6>~ <keeper_message7>~ <temper1> <temper2> <keeper_mob_number> 0 <room> <open1> <close1> <open2> <close2> What this means: <#virtual_number>~: This is the number of the shop. This must be followed by a tilda. <obj1_sold> <obj2_sold> <obj3_sold> <obj4_sold> <obj5_sold>: These are objs that the shop will sell and never run out of. You must give the shop keeper the obj in the zone file when loading. These fields refer to the virtual numbers of the objs. There can only be five items that the shop will sell and never run out of. Other objs can be given to the shopkeeper and he will sell just one of them. <selling_prof>: The object value is multiplied by this value when sold. This is a floating point value. Must be >= 1.0 <buying_prof>: The object value is multiplied by this value when bought. This is a floating point value. Must be <= 1.0 <obj1_traded> <obj2_traded> <obj3_traded> <obj4_traded> <obj5_traded>: These are the ITEM_TYPE's that the shop will buy. There can only be five different types. <keeper_message1>~: Message when item to buy is non existing. A %s must be at the beginning of this field to signify the shopkeeper will be talking. The %s applies for message fields 1 - 7. %d symbolizes the coin for the item. <keeper_message2>~: Message when item trying to sell is non existing. <keeper_message3>~: Message when wrong item-type sold. <keeper_message4>~: Message when shop can't afford item. <keeper_message5>~: Message when player can't afford item. <keeper_message6>~: Message when buying an item. The price is %d. <keeper_message7>~: Message when selling an item. The price is %d. <temper1>: When player can't afford an item. 0: The shopkeeper spits player in the face. 1: The shopkeeper smokes his joint. <temper2>: When player is attempting a to kill a shopkeeper. 0: Shopkeeper tells player "Don't ever try that again!" and gets the first hit! 1: Shopkeeper tells player "I'm to powerfull for you - midget!" and killing is impossible. <keeper_mob_number>: Virtual number of the shopkeeper. <room>: The virtual number of the room the mobile must be in for the shop to be effective. <open1>: The time which the shop opens. Use a 0 for this field. <close1>: The time which the shop closes. If you use 28 for this field, the shop is open all the time, never closes. <open2>: Use a 0 for this field. <close2>: Use a 0 for this field. Example of a shop: #0~ 3000 3001 3002 3003 3004 1.5 0.5 0 0 0 0 0 %s Don't mix that here pup.~ %s You don't even have that pup.~ %s This is a bar pup, only drinks here.~ %s A might to expensive for me pup.~ %s This is a little out of your league pup.~ %s Thanks for the %d coins pup.~ %s I think %d coins is just a bit much, but i'll do it pup.~ 2 0 3000 0 3001 0 28 0 0