jtconv: noindex nohtml Book of WolfMUDAndrew "Diddymus" Rolfe Code Crafter's Studio www.codecrafterstudio.com WolfMUD Website www.wolfmud.org Copyright © 2002-2003 by Andrew "Diddymus" Rolfe - All rights reserved. This document was produced in the United Kingdom. The information is provided "AS IS" without any kind of warranty. The information presented is not a definitive guide to features, performance or commitment to provide any feature. Code Crafter's Studio reserve the right to change specifications and information provided in this document without notice. The WolfMUD Logo used on the cover is Copyright © Andrew "Diddymus" Rolfe - All Rights Reserved. Linux is a registered trademark of Linus Torvalds. Other company and product names may be trademarks or registered trademarks of their respective owners. _________________________________________________________________ _________________________________________________________________ Dedication This work is dedicated to my wife Catherine, daughter Cassidy and my late Grandfather Jack who is sorely missed... I would also like to thank Sean Geoghegan. Though we have yet to meet face to face, Sean has become a good friend over the last few years. He has provided me with encouragement and been a voice of reason when I needed it the most. Thankyou Sean... Table of Contents Introduction Quick Install Quick Install Procedure Player's Guide (Early Draft) What IS WolfMUD? Getting Started Getting Help Your Character Moving Around Items Skills and Guilds Learning skills Nitty Gritty details WolfMUD Features Requirements Required Optional Tested Environments Running Java Programs Java in different environments Running Java on Windows Running Java on Windows using Microsoft's Java Running Java on Unix Running Java on an AS/400 Installation Java 1.2 and above Java 1.1.x (UNIX) Java 1.1.x (Windows) Upgrading from a previous installation Retrospective Upgrade Setup and Running Server Configuration Starting the Server MiniWeb Server Setup Binding Ports MiniWeb file serving SETWEB command Setting MIME types Ending The Server WolfMUD Java Client Setup Running the WolfMUD World Builder World Builder Tour Tutorial Creating Zones and Locations Starting Locations Creating Objects Creating Mobiles Non-Player Barriers Linking Zones Generating Everything Collaboration Exporting and Importing Generated Files Only Combat Text Examples Compiling from Source Compiling under Windows Compiling under Unix/Linux Text Dump of the Cabbage Zone License Agreement Colophon _________________________________________________________________ Introduction So what is WolfMUD? Wolf stands for World Of Living Fantasy and is a MUD codebase. If you have not come across this type of program before you may already be lost by that remark so I'll start at the beginning... A MUD is a multi-user dungeon. A text based environment where players can gather and interact with each other and the world around them. You take on the part of a character and through this character explore the world set out before you. You can collect treasures, defeat monsters and build up a set of skills for your character to use and interact with the other players. Depending on the theme of a particular MUD you may find yourself in a medieval fantasy setting, a futuristic science fiction setting or something very bizarre. A codebase is a program or set of programs that lets you run the MUD world and handles the creatures, locations and objects as well as the player's interacting with everything. The codebase itself is usually taken by the people running the world (Usually called GODS, IMPs (Implementer), Admins, Wizards and there are a lot more names) and they may tweak and modify the codebase so that their world provides a unique experience for their players not found on other MUDs. Typical examples are new Skills, Spells and Races. WolfMUD provides a starting point for building and running a MUD. If you do not want to modify the code and just create worlds for players you can. If you do want to modify the codebase and add features for your players you are free to do that as well. To help you create your own world a graphical based World Builder is included so that you don't need to be the greatest programmer in the world. If you can type, you can be creative. _________________________________________________________________ Quick Install If you are the type of person who likes to get straight into something without a lot of reading then this chapter is for you. If you get stuck at any point then refer to the chapters that follow for more details on installing WolfMUD, advanced setups, WolfMUD configuration and running Java. _________________________________________________________________ Quick Install Procedure 1. Create an empty directory to install WolfMUD into. Usually this is called wolfmud, it will be assumed this is the directory being used. 2. Download the latest WolfMUD JAR files from the WolfMUD web site and save them into the wolfmud directory you created. The server JAR file will be called WolfMUDServer_buildXXX.jar where XXX represents the build number. 3. Open a shell/command window and change your current directory to be wolfmud. 4. Run the JAR file from the command line using: java -jar WolfMUDServer_build303.jar 5. Start the WolfMUD server by running the wolfServer class. java wolfServer 6. Wait for the server to startup and you see the message saying it is accepting clients. Login to the server as a player using: telnet 127.0.0.1 4001 _________________________________________________________________ Player's Guide (Early Draft) What IS WolfMUD? WolfMUD is the 'World Of Living Fantasy' to give it it's full title. It is a game where you create a character that you have control of and send it into the game world to earn experience and fame. While in the game world you will meet other players and creatures that can be interacted with. _________________________________________________________________ Getting Started When you first connect you will asked for the name of an existing character, or the name to use for a new character. Enter the name you wish to use for your character. A message will appear saying that the character could not be found and do you want to create a new character. Reply Y. If you are asked for a password the character already exists. Press enter and choose a different name. You will then be asked for a password so nobody else can use your character. You will then be asked to verify your password. Next you get to choose the gender for the character. After you have created your character you will be presented with a menu. If you already have a character you will see this menu after entering your password. To enter the game take option 1. This enters the main game itself and you will find yourself in a tavern ready to play. While in the tavern you cannot be attacked and cannot attack anything. So it is safe here for you to look at help topics and experiment for a while until you get used to things. _________________________________________________________________ Getting Help Help is available to all players. To get a list of commands available, use the COMMANDS command. If you need help on a specific commands use the HELP command. It can be used in two ways. HELP by itself lists all help topics available. HELP followed by a topic will show the help entry for the topic chosen. For example to find out how to use the BUY command use: HELP BUY You can also ask for help from other players. They may be helpful, then again they may not. _________________________________________________________________ Your Character If you enter the command SCORE (SC for short) you will be able to see an overview of your characters main attributes. These are: * Character * Date Created * Last Login * On Line Time * Health * Mana * Hungry * Thirsty * Regen @ * Defense * Attack * Combat Damage * Money * Encumbrance * Power Rating Character Attributes Character This tells you your characters name, title, gender and player type. The name and gender you choose for yourself. All players start off as mortals. The players title is based on the highest skill gained. If two skills are of the same level then the first learnt will determine the title. Character...: Diddymus the GrandMaster Mage (Male) Implementer \______/ \______________/ \____/ \_________/ Name Title Gender Type Date created This shows when you created your character. Last Logon This shows when you lasted logged onto the server. It will always be when your current session started. On Line Time This is the total amount of time you have spent online developing this character. Health Health is a measure of how much damage your character can take. The two figures given show your current health and the maximum health. As you take damage the first figure will drop. When it drops to zero your character will die and all equipment and money carried will be dropped where you die. Your health will raise by itself upto the maximum given a little time. However if you are hungry or thirsty the amount of time taken will be longer depending on how hungry or thirsty you are (See also Regen @). As your character survives damage over time the maximum health of the character will very slowly rise. Mana Mana is a measure of the magical force you have available for casting spells. The two figures given show your current mana and the maximum mana. As you cast spells the first figure will drop. When it drops to zero your character can no longer cast spells until the mana is regained. You mana will raise by itself upto the maximum given a little time. However if you are hungry or thirsty the amount of time taken will be longer depending on how hungry or thirsty you are (See also Regen @). As your character casts more and more spells over time the maximum mana of the character will very slowly rise. Hungry This value indicates how hungry you are. As time progresses you will start to get hungry. If you do not eat then it will effect how quickly you regain you health and mana. You cannot die from hunger but if you get too hungry and thirsty you will stop regaining health and mana (See also Regen @). Thirsty This value indicates how thirsty you are. As time progresses you will start to get thirsty. If you do not drink then it will effect how quickly you regain you health and mana. You cannot die from thirst but if you get too thirsty and hungry you will stop regaining health and mana (See also Regen @). Regen @ This value shows you the modifier that your health and mana are regenerating at. There are four levels. Full rate (x1.00), half rate (x0.50), quarter rate (x0.25) and no regeneration (x0.00). The current modifier will be a combination of how hungry and thirsty you are. Defense Your defense value is an indication of how well you are protected from harm. The value will take into account any armour, magical items and skills etc. that you are using at the time. The higher this value the better protected you are. Attack Your attack value is an indication of how well you can attack something. The value will take into account any weapons, magic and skills etc. you are using at the time. The higher this value the better you attack chances. Combat Damage Combat damage is a measure of the potential damage you can do to an opponent. It is represented as two figures, for example 5+5. This means you damage will be in the range of 5 points + a random number of points from 1 to 5. So your damage could range from 6 to 10 points. Money This is the current amount of money you are carrying. You can have more money than this in an account held by a bank or money changer. Care must be taken as if you are killed you will drop any money you are carrying and may lose it. Encumbrance Encumbrance is a measure of how heavy or difficult to carry an object is. It usually works out that 1 encumbrance point is about 1/10^th of a pound. The two values shown show how much you are carrying and the maximum you can carry. Power Rating Your Power Rating is an indication of how successful your character is in the game world. The value is made up from a number of values including how advanced your skills are and to a lesser extent how rich you are. This determines how much influence you have in the game. Unlike most games of this type running around and killing things does not gain you power! _________________________________________________________________ Moving Around For each location in the game there will be a number of exits available. To move in a direction type the direction you want to go. Possible directions are NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST, UP and DOWN. You can use N, NE, E, SE, S, SW, W, NW, U and D to save typing. Which exits are available will depend on your current location. If you forget what exits are available to you, you can use the command EXITS to show just the exists, or use LOOK to re-describe the location. _________________________________________________________________ Items In the game you will come across many useful items. To pick up an item use the GET command followed by the item you want to pickup. For example GET SWORD. To drop an item use DROP as in DROP SWORD. To get more information use the EXAMINE command, EXAMINE SWORD. You can also try to wield and wear many items. To see what items you currently have and which are worn or wielded, if any, use the INVENTORY command (INV for short). Many of the commands can also deal with multiple occurrence of an object. For example if the are two swords and you want to pick up the second sword use GET 2 SWORD. You can also use the special item ALL. As in GET ALL, DROP ALL, WEAR ALL etc. _________________________________________________________________ Skills and Guilds To help you survive your adventures to can gain useful skills along the way. The most common source of training is from guilds. This will only provide you will basic common skills, you will have to journey and adventure to find the more powerful and rare skills. Training will also cost you more and more the higher the level you wish to train at. Once you have acquired a skill you do not have to pay for more training if you do not want to. Instead by using the skill you can slowly develop it yourself. However this may take many, many repetitions of the skill, more with the higher skill levels. _________________________________________________________________ Learning skills If you think you have found a potential tutor to learn skills from use the command LEARN followed by the tutor you wish to learn from. For example LEARN WIZARD. This will show you a list of skills you can learn from this tutor and how much money will be required at your current level. If you have enough money available you can learn the skill if you wish. Some skills require others to be learnt before you can use them. For instance the skill "basic magic" must be learned before you can learn any other magic spells. The fireball spell however cannot be learned until your basic magic is raised to 30%. _________________________________________________________________ Nitty Gritty details Once you have learned your skills you will have to actually use and practice them so you don't "get rusty". Here is how it works. There are root skills like "basic magic" and "basic combat". Using the SKILLS command these skills show as green and have a current and target usage next to them. The current percentage is how much you are using the skill and the target percentage is the minimum percentage you must use the skill. Periodically your skills are checked. If the current usage is below the minimum target usage then the root skill will drop by 0.1% AND SO WILL ALL SUB SKILLS. Sub skills are shown in yellow after each root skill. Using a sub skill will count toward using the root skill as well. For example casting "magic missile" requires you to use your knowledge of "basic magic". This also means as your "magic missile" improves so will your understanding of "basic magic". Due to this for every full 1% a sub skill is raised your root skill will raise by 0.1% as well. The highest root skill attained will determine your characters title which others will be able to see. If you have learned no skills your title will be "Beginner". The titles currently available are: * Amateur * Neophyte * Initiated * Skilled * Practiced * Proficient * Studied * Adept * Expert * Master * GrandMaster Due to the fact you need to practice skills to keep them there will be very few "power characters" around. For example a GrandMaster Warrior/Mage. The reason for this is that the skills will have to be very carefully balanced with each other. Rely on magic too much and your warrior skills will suffer, fight too much and your magic will suffer. _________________________________________________________________ WolfMUD Features Why would someone want to consider using WolfMUD instead of another codebase? Below are a list of some of the features WolfMUD provides: * Written in 100% Java for use on many different platforms. * Currently tested on Win95/98/NT, OS/2, Solaris, Linux, RS/6000 and AS/400 but should be compatible with any platform supporting Java. * Very simple to setup with no compilation needed, just download and run. * Includes GUI based World Builder allowing creation of worlds without programming. * GUI World Builder includes features to easily share zones developed by others. * GUI World Builder tutorial and example world provided. * Integrated MiniWeb server (with automatic configuration of clients and plugins). * Stable Core Engine (Max runtime is on Linux at about 986 hours, server ended accidentally). * Low memory usage (The current world will run in under 1MB with between 10-15 players). [1] * Event driven. * Scalable - maximum locations, objects and mobile count is around 2,000,000,000 Each!!! * Large client count depending on platform used (On an AS/400 simulated just over ¾ million connections, then ran out of PC power to throw more clients at it). * Provides a skill based system for players instead of levels. * Java Developers can easily extend codebase. _________________________________________________________________ Requirements This section details the software required to be able to run WolfMUD. _________________________________________________________________ Required The following are the very minimum requirements on any system for it to be able to run WolfMUD. * Java Runtime Environment (JRE) 1.1.x or higher (1.3.x recommended) [2] * TCP/IP Networking (LAN, Dial-up or local) _________________________________________________________________ Optional The following are optional and allow additional features of WolfMUD to be used. * Java Enabled Web browser * A Web Server such as Apache [3] * Swing 1.1 or higher (Only required if you plan to use the World Builder) [4] * Java Development Kit (JDK) for compiling WolfMUD from source _________________________________________________________________ Tested Environments To date WolfMUD has been tested in the following environments: * Windows 95/98/NT/2K/ME (Sun, IBM and Microsoft JVMs) Server, MiniWeb, Client and Builder all run with no problems. * IBM AS/400 (OS/400 V4R3M0 and above, IBM JVM) Server and MiniWeb run with no problems. Native telnet can be used as a client with no problems. The AS/400 has no GUI and does not run the Builder or WolfMUD client. Native AS/400 telnet works fine as a client. * Sun Solaris 7 (Sun JVM) Server, MiniWeb, Client and Builder all run with no problems. * i386 Linux (Debian, RedHat, Sun and IBM JVMs) Server, MiniWeb, Client and Builder all run with no problems. * PowerPC Linux (Debian, Apple iBook, Blackdown JVM) Server, MiniWeb, Client and Builder all run with no problems. * OS/2 (IBM JVM) Server, MiniWeb, Client and Builder all run with no problems. * IBM RS/6000 (AIX, IBM JVM) Server, MiniWeb, Client and Builder all run with no problems. Note These only represent the environments currently available to the developers for testing and WolfMUD should run in any environment supporting Java. _________________________________________________________________ Running Java Programs It is assumed that Java is already installed as is TCP/IP networking. Detailing the setup of Java and TCP/IP networking for all environments is beyond the scope of this documentation. For more details on Java see the chapter called Requirements which has several references for downloading Java. There are two types of Java installation. You can install the Java Runtime Environment (JRE) , which allows you to only run Java. Or you can install the Java Development Kit (JDK) which allows you to run and also compile and develop in Java. Depending on which environment you have installed the command for running Java may be located in a different directory. Important For all environments make sure that the directory you installed WolfMUD into is your current directory before you try running any of the Java classes. Note Note for JRE 1.1.x users If you are using the JRE for version 1.1.x of Java you will need to replace the command java with the command jre in the following examples. _________________________________________________________________ Java in different environments Some Examples now follow for running Java in the following environments. * Windows * Windows with Microsoft's Java * Unix * AS/400 _________________________________________________________________ Running Java on Windows You can check to see if Java is installed and accessible using the java command: java -version Depending on the Java vendor and your version it should respond with something like: java version "1.3.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0) Classic VM (build 1.3.0, J2RE 1.3.0 IBM build cx130-20000623 (JIT enabled: jitc )) If it does not and instead responds with: The name specified is not recognized as an internal or external command, operab le program or batch file. You will have to specify the full path to the java command, as in: c:\jdk1.3\bin\java You can then rerun the above test using: c:\jdk1.3\bin\java -version Now we know the java command is working the general command for running Java looks like: java The entry should be replaced with the the name of the class you wish to run. The class file should be specified without the .class extension. For example to run the wolfServer.class class you would type: cd c:\wolfmud java wolfServer Or using a fully qualified path to the java command you could use: cd c:\wolfmud c:\jdk1.3\bin\java wolfServer Important It is important when running WolfMUD that the WolfMUD directory (the directory you installed WolfMUD into) is your current directory before you try and run any of the WolfMUD classes. _________________________________________________________________ Running Java on Windows using Microsoft's Java This is very similar to running WolfMUD using a version of Java like Sun's or IBM's (see the Section called Running Java on Windows) but the command used should be jview and not java. Microsoft's Java is usually available if you have Internet Explorer 4 or above. The last point of note: this is a JRE and not a JDK although a Microsoft 'SDK' is available from their website. _________________________________________________________________ Running Java on Unix You can check to see if Java is installed and accessible using the java command: java -version Depending on the Java vendor and your version it should respond with something like: java version "1.3.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0) Classic VM (build 1.3.0, J2RE 1.3.0 IBM build cx130-20000623 (JIT enabled: jitc )) If it does not and instead responds with: java: command not found. You will have to specify the full path to the java command, as in: /opt/IBMJava2-13/jre/bin/java You can then rerun the above test using: /opt/IBMJava2-13/jre/bin/java -version Now we know the java command is working the general command for running Java looks like: java The entry should be replaced with the the name of the class you wish to run. The class file should be specified without the .class extension. For example to run the wolfServer.class class you would type: cd /home/diddymus/WolfMUD java wolfServer Or you could use: cd /home/diddymus/WolfMUD /opt/IBMJava2-13/jre/bin/java wolfServer Important It is important when running WolfMUD that the WolfMUD directory (the directory you installed WolfMUD into) is your current directory before you try and run any of the WolfMUD classes. _________________________________________________________________ Running Java on an AS/400 Running Java on an IBM AS/400 is slightly different to normal so help is given here. Firstly it is easiest to run Java from a Unix like shell session or 'QShell'. To start QShell use the command: STRQSH Once in the QShell session change to the WolfMUD directory in the Integrated File System (IFS) using: cd \WolfMUD Note While in the QShell session the commands are processed separate from the session itself, a bit like a batch job. After typing a command wait for the prompt to appear again (usually a $ or £ sign). You should now have a QShell session started and be in the WolfMUD directory.To actually run Java classes in this session use the following command: java -opt40 -classpath .:/Products/classes The entry should be replaced with the the name of the class you wish to run. The class file should be specified without the .class extension. For example to run the wolfServer.class class you would type: java -opt40 -classpath .:/Products/classes wolfServer Once the server is running you can use F12 (Disconnect) in the QShell session to detach the Batch server job from the current session. This will free up your session and run the server in batch. Note On the AS/400 the access to the IFS can be slow, also optimized versions of the classes will be created so it may take a while for things to happen (many minutes sometimes). THIS IS NORMAL WHEN STARTING THE SERVER. This in no way slows down the server once it is running. Important It is important when running WolfMUD that the WolfMUD directory (the directory you installed WolfMUD into) is your current directory before you try and run any of the WolfMUD classes. _________________________________________________________________ Installation The different parts of WolfMUD are now provided as JAR files and come with automatic installers to make life easier for people. Life is even easier if you are using Java version 1.2 or higher, although the software should run from version 1.1.4 or above allowing use of the Microsoft JVM. Warning If you have an existing WolfMUD installation please read the chapter called Upgrading from a previous installation before reading this chapter. Once the selected JAR has been downloaded place it in the directory you wish the software to be installed into, which may need to be created. Usually the Directory is called WolfMUD. Then depending on the version of Java you are using install using one of the following examples. In the examples the directory specified may be different depending on the location of your Java implementation and the platform you are on (E.G. Windows/Unix). You may also have to fully qualify the location of your java command (E.G. /usr/jdk118/bin/java). For more information if you are unsure refer to the chapter called Running Java Programs. Note Please note, in the examples the upper/lower case is very important even on a Windows platform. Also where example commands are given they should all be typed on a single line even though they may be shown on multiple lines in this document. _________________________________________________________________ Java 1.2 and above java -jar Example: java -jar WolfMUDServer_build300.jar _________________________________________________________________ Java 1.1.x (UNIX) java -classpath .:: install Example: java -classpath .:WolfMUDServer_build300.jar:/usr/jdk118/lib/classes.zip install _________________________________________________________________ Java 1.1.x (Windows) java -classpath .;; install Example: java -classpath .;WolfMUDServer_build300.jar;c:\jdk118\lib\classes.zip install _________________________________________________________________ Upgrading from a previous installation If you already have a WolfMUD installation and wish to use existing player, project or data files follow these instructions. 1. Backup the important files from you existing installation: a. Copy the players directory containing .ply files to a safe place (E.G. a temporary directory) b. Copy the projects directory containing .wmp and .wmx files to a safe place (E.G. a temporary directory) c. Copy the data directory containing .zon, .loc, .mob and .tng files to a safe place (E.G. a temporary directory) 2. Delete the existing installation (E.G. Everything in C:\WolfMUD or /home//WolfMUD) 3. Copy the old players, projects and data directories back (E.G. into C:\WolfMUD or /home//WolfMUD) 4. Install the new version of WolfMUD using the normal installation instructions in the chapter called Installation. _________________________________________________________________ Retrospective Upgrade If you have already installed the new version of WolfMUD and wish to upgrade some player files or project files (E.G. from a friend or previous install): 1. Copy the files you wish to retrospectively upgrade: a. Copy player files into the players directory with the rest of the .ply files. b. Copy projects and extract files into the projects directory with the rest of the .wmp and .wmx files. 2. To upgrade players rerun the SERVER installation using the -nounpack option. For example: Java 1.2 and above: java -jar WolfMUDServer_build300.jar -nounpack Java 1.1.x: java -classpath .;WolfMUDServer_build300.jar; installServer -nounpack 3. To upgrade projects rerun the BUILDER installation using the -nounpack option. For example: Java 1.2 and above: java -jar WolfMUDBuilder_build62.jar -nounpack Java 1.1.x: java -classpath .;WolfMUDBuilder_build62.jar; install -nounpack _________________________________________________________________ Setup and Running It is assumed you have already installed WolfMUD before reading this, if not you probably need to read the chapter called Installation on installation first. _________________________________________________________________ Server Configuration There are a number of options that can be configured for the WolfMUD server however for most people the defaults should be fine to start with until you get adventurous. In the directory WolfMUD was installed into there should be a file called server.properties in the config directory. This file can be edited and the default values changed. Each property and it's values are fully documented in the file itself. Two properties of particular interest will be server.welcome and server.news by changing the default values you can create a custom welcome screen and news items for your MUD. If you just want to override a value temporarily without changing the server.properties file certain properties can be specified on the command line when starting the server. Specifying properties in this way will override settings in the properties file only until the server is ended. A full list of options can be seen by starting the server and appending -? to the end of the command. As an example: Java 1.2 and above: java wolfServer -? Java 1.1.x: java -classpath .;c:\jdk1.1.7\lib\classes.zip wolfServer -? This should display the following details: Valid parameters: -? This help screen -port Port to listen on for clients. Where is the port number (1-65535) NOTE: 1-1023 usually reserved for other services. -nodisklog Do not write out a log to disk. -noconsole Do not log to a console/screen. Useful if running in as background process. -noeventlog Do not include events in the log. -maxClients Maximum number of client connections allowed. If not specified defaults to platform limit. -timeout Timeout limit for idle players where x is a number of minutes. Defaults to 15 minutes. -noweb Do not start internal web server. -webport Port for web server. See -port option. _________________________________________________________________ Starting the Server To start the server you need to run the wolfServer class (See the chapter called Running Java Programs on running Java if you need help). This will start the server running. You can optionally specify a number of parameters to override some settings in the server.properties file (See the Section called Server Configuration for details). By default the Client Port which players should connect to is 4001 and the Web server is started on 4002. The window / process the server is running in should now be left alone to do it's job. It will not end until the server is ended. Note The FIRST character that is created will be created as an Implementer and has access to the #SHUTDOWN command to end the server. _________________________________________________________________ MiniWeb Server Setup If you do not want to use the MiniWeb Server it can be disabled using the -noweb command line option. You can also change the port the web server is running on by using the -webport option or by editing the server.properties file. To save having to type the port number just for web pages, For Example http://127.0.0.1:4002, you can run on the web server on the default HTTP port of 80. However on some systems this may require special system security configuration as port numbers in the range 1-1024 are usually reserved for well known services and access may be restricted to these ports on your server. The last line displayed by the server when it starts up should look like: 27May 16:47:12.35 [M] Web server waiting on port 4002 (Accepting on any IP Addr ess) So you should be able to open a web browser and goto http://:4002 where is the IP address of the WolfMUD server EG http://123.045.78.9:4002. If you cannot see this line, because the server is running as a background process for example, ON THE SERVER MACHINE goto http://127.0.0.1:4002/statusPlugin.wgp. This will let you check the ports being used. _________________________________________________________________ Binding Ports In the above section when the server starts up the last line displayed is: 27May 16:47:12.35 [M] Web server waiting on port 4002 (Accepting on any IP Addr ess) Notice it says (Accepting on any IP Address). This indicates that any available IP address on the server machine will be used. Normally this is fine. However if your machine is multi-homed (E.G. has more than one network card installed or is configured for multiple IP addresses) you may want to specify a specific IP which players can connect to. This is done by setting the server.bindIP property in the server.properties file. Note This binds the Telnet port and web server port. _________________________________________________________________ MiniWeb file serving In the installation directory there is a directory called web. This is the only directory (and subdirectories) that the MiniWeb Server will allow access to. Files in other directories cannot be requested by browsers. At the moment HTML pages cannot use URLs that start with a period, For Example .. for previous directory, as it opens up a security hole. This will be addressed in a later release. _________________________________________________________________ SETWEB command As of build 258 the SETWEB command has been removed. The setup of the MiniWeb server is now totally automatic as is the setting up of the WolfMUD Client. _________________________________________________________________ Setting MIME types When a request for data is made by a browser the MiniWeb Server will send the requested file (if applicable) and will also try to tell the browser what type of data the file should contain. For example if a .txt file is sent the browser will be told it is of type text/plain and the browser should know what to do with that file type. The mapping between the file extension .txt and the MIME Type text/plain is configured in the file mime.properties. This can be found in the config directory. _________________________________________________________________ Ending The Server To end the server you need to log on as a character that is an Implementer and use the #SHUTDOWN command. This will end the server in an orderly manner and save any characters currently in use. If the server is just killed off there is a chance that the socket is not released and the server will not restart because it thinks the socket is in use. Sometimes the server will restart, but players will not be able to connect. Also any characters in use will not be saved and the character will revert back to when it was last auto-saved. This could lead to some very unhappy players. _________________________________________________________________ WolfMUD Java Client Setup There are three ways to setup the client: Automatically, as a stand-alone application or as an Applet on a Web server. The following sections detail each of these methods. For quick setups and testing method 1 is recommended. Also this method allows a number of people to quickly get playing on a network or over the Internet. Method 2 is of use if the internal web server is not being used or needs to be configured. This method is also handy if your browser does not support Java or you want to use a different version of Java then your browser supports. Method 3 is usually used when you already have a web server setup or just don't like the integrated MiniWeb server. Note AS/400 Users The Client will NOT run on the AS/400 in a normal "green screen" session, only the server will. It is possible to access the server using Telnet from a "green screen" session. * Method 1: Automatic setup This is the quickest and easiest method to use. When the MiniWeb server is started it will automatically configure itself and the client pages. Get the players to point a Java enabled web-browser at the server and start playing. (See the section on MiniWeb Server Setup for more details on the Port to Point too). * Method 2: WolfMUD Client stand-alone Application setup In the distribution file there is a file called WolfMUDClient.zip. This file should be unpacked on each machine you wish players to connect from, usually into a WolfMUD directory. To start the client run the class wolf.client.wolfClient. This class can also have 1 or 2 parameters. The first parameter is the host to connect to. It can be specified as the Host Name or the Host IP address. The second parameter is the port number to connect to. The port can only be specified if a host has been specified. The defaults are 127.0.0.1 for the host and port 4001. To specify the parameters just type them after the class name. For example: Java 1.2 and above: java wolf.client.wolfClient 127.0.0.1 4001 Java 1.1.x: java -classpath .;c:\jdk1.1.7\lib\classes.zip wolf.client.wolfClient 127.0.0.1 4001 Note The commands should be entered on a single line. For more information on running Java classes see the chapter Running Java if you need help. * Method 3: Stand-alone Web server setup To setup the client so it can be accessed from a stand-alone web server the web server and WolfMUD server must be on the same machine. This is due to restrictions that the Java 'sandbox' security model imposes to protect users from Applets loaded over the Web accessing their own machine. Also the integrated web server must not be running on the port you want to use. If you want to use a stand-alone web server AND want to make use of the automatic configuration and plugins available from the MiniWeb server you can just embed hyperlinks to the MiniWeb plugins into your pages. In the installation there is a directory called web. This contains an HTML file which contains such links and you can crib from these. Warning The client and server files should not be put into the same directory, otherwise players will be able to get to the server code and classes as well and download the whole lot from your server. The WolfMUD server does not have to be installed anywhere near the server files as long as they are on the same machine. _________________________________________________________________ Running the WolfMUD World Builder To start the World Builder: 1. Change to the directory where the software is installed (Usually WolfMUD). 2. Run the class wolfBuilder a. For Java 1.2 and above: java wolfBuilder b. For Java 1.1.x make sure the Swing classes are in you classpath: java -classpath .;c:\jdk1.1.7\lib\classes.zip; c:\swing-1.1.1fcs\swingall.jar wolfBuilder Note The commands should be entered on a single line. For more details on Swing for Java 1.1.x see the chapter on Requirements for details. For more information on running Java classes see the chapter Running Java if you need help. Details on using the World Builder including a tutorial are covered starting with the chapter called World Builder. _________________________________________________________________ World Builder This section details how to use the World Builder to create your own worlds with locations, mobiles and objects without having to do any programming. When the Builder is loaded the Builder workbench will be displayed with the World Tree frame opened as shown in Figure 1. [workbench.jpg] Figure 1. World Builder Workbench Most actions are performed by using a right mouse click (or mouse click with a modifier key). To make sure everything has loaded properly: select the Zones entry in the World Tree and right click. A menu will be shown. From this menu select Add. A submenu should be shown with a single item on it: Zone. This is shown in Figure 2. If the entry for Zone is not displayed close down the builder and try starting it again (This bug was fixed and should no longer be a problem). [treeAndZone.jpg] Figure 2. World Tree Showing Zone _________________________________________________________________ Tour Included with the World Builder is a sample project file based on the Stock world shipped with WolfMUD. To load it select World from the World Tree, right click and select Load as shown in Figure 1. [projectLoad.jpg] Figure 1. Loading a Project This will display a project load dialog from which you can select different projects to be loaded into the Workbench. The sample project is called WolfMUDWorld.wmp. Select it and click the Load button as shown in Figure 2. [projectLoadDialog.jpg] Figure 2. Project Load Dialog You will now see a progress indicator as the project is loaded, and then as the World Tree is rebuilt. See Figure 3. [loadProgress.jpg] [buildProgress.jpg] Figure 3. Load and Build progress Indicators When the project has loaded and the World Tree has been rebuilt expand the Zones by double clicking the tree entry or selecting the icon left of the entry. Under the Zones tree entry there should be 3 zones available. If you expand each zone you will see there are three more entries available: Locations, Mobiles and Objects as shown in Figure 4. Notice under the zone "South of Zinara" the icons for Mobiles and Objects look different and have no "handles" next to them. This is because no mobiles or objects have been defined for this zone. [allZones.jpg] Figure 4. Zones Expanded You will notice looking at the tree that next to each entry is a letter in square brackets. There are three possible values [C], [S] and [E] indicating the type of entry. See the Table for an explanation of each type. Tree Mnemonics [C] Multiple Category This type of entry cannot be edited but unlimited additional entries can be made under this entry. For example you can add may creatures under the Mobiles entry. [S] Single Category This is similar to a [C] type entry but only a single entry can be made under it. For example when creating a mobile there is a Single Category Entry for the mobiles body so you can only add one body per mobile. [E] Entity An entity entry is the actual entry in the tree that holds the data for an object in the game. Individual creatures and objects are examples. If you find the entry for the Newbie Zone and expand the entries for Mobiles You will see a number of creatures that have been defined for this zone as shown in Figure 5. [newbieMobiles.jpg] Figure 5. Mobiles for the "Newbie Zone" For any tree entry with a type of [E] you can right click and display a popup menu. From the World Tree find select the entity for An Ugly Imp. Right click to bring up the popup menu and select Edit... as shown in Figure 6. [editUglyImp.jpg] Figure 6. Selecting an entry for editing A new frame will open showing the properties defined for the Ugly Imp. Tool tips are available for each attribute and there is also a main help panel for all types available. See Figure 7 for an example. [uglyImpAttributes.jpg] Figure 7. Attributes for an Ugly Imp If you look back to the World Tree you will also see a number of items under the tree entry for the Ugly Imp. These include the Imps body, Inventory and Attributes. Figure 8 shows these elements. Each element with an [E] can be edited and if you look at the Pouch you will notice it is a container and actually contains something. [uglyImpAdditional.jpg] Figure 8. Additional Attributes of the Ugly Imp There is also a find feature available which will look for any text that has been entered. Select the World entry in the World Tree and right click to display the popup menu. From here select Find.... A new frame will open. In the field for Search Text enter the word water and the click the search button. After a short pause any result will be shown. Each item in the result list can be double clicked and this will position you to the entry in World Tree. Figure 9 shows the find dialog in action. [findDialog.jpg] Figure 9. Find Dialog in action _________________________________________________________________ Tutorial An example nows follows that will show you how to: * Create a Zone * Create Locations * Create Mobiles * Create Objects The zone to be created will be added to the zone South of Zinara. Figure 1 shows a map of this zone with the new zone to be created shown in blue. It will be called The Cabbage Zone. [map.jpg] Figure 1. The Cabbage Zone (In blue). _________________________________________________________________ Creating Zones and Locations From the World Tree select the entry for Zones, display the popup menu and select Add. A sub menu should popup where Zone can be selected. See Figure 1. [addZone.jpg] Figure 1. Adding a new Zone Selecting this will open a properties dialog for the new zone details. Enter the details as shown in Figure 2 and then select the Save button. Note When creating a new zone you must fill in the Alias. This is what the generated files will be prefixed with. [cabbageZone.jpg] Figure 2. Properties for the Cabbage Zone There will now be a new zone listed in the World Tree; Our Cabbage Zone. Select and expand the entries under it. You should see Locations, Mobiles and Objects. Select Locations and display the popup menu. The select Add, this will show a sub menu of different location types you can have. For now select the Basic Location type. Figure 3 shows an example. [addLocation.jpg] Figure 3. Adding a Location This will now cause a new properties frame to be opened, this time for entering the details for a Basic Location. Enter the details as show in Figure 4. [cabbageLocation.jpg] Figure 4. Properties for a Basic Location Now if there are cabbages in the field the players should be able to interact with them, but we don't want them to take them. To do this we add a narrative object to the location. Select the new location and expand it so the Narrative Objects category can be seen. Select this category and display the popup menu, select Add and from the type of narrative available select Narrative Object. See Figure 5. [addNarrativeObject.jpg] Figure 5. Adding a Narrative Object Again we get a new dialog to enter detail for the Narrative Object. This is where details for the cabbages can be entered as shown in Figure 6. Now a player may type 'examine cabbage' or 'examine cabbages' so we need both aliases. To get the field for the second alias select the first field and right click to display the popup menu, select add. A new field will now be added. If there is more than one field already a delete option will also be available. [cabbage.jpg] Figure 6. Properties for a Narrative Object So there is now a field with cabbages we can examine. There are another three fields to do each with cabbages, but we don't want to have to type everything in again. Select the location and from the popup select Copy. Display the popup again select Paste. Display the popup twice more and paste each time. You should now have four locations in total. Notice that the narrative under the locations has also been copied for you. See Figure 7. [moreFields.jpg] Figure 7. Copied Locations and Narratives The three new locations and narrative are exact copies of the original so you need to edit each of them. The information that needs changing is the location index and exits for the locations and the location index for the narratives. Figure 8 shows the modified locations and Figure 9 shows the modified narratives. [fieldModified3001.jpg] [fieldModified3002.jpg] [fieldModified3003.jpg] Figure 8. Modified Locations [cabbagesModified3001.jpeg] [cabbagesModified3002.jpg] [cabbagesModified3003.jpg] Figure 9. Modified Narratives _________________________________________________________________ Starting Locations Starting Locations in WolfMUD are a special type of Peaceful Location. They have all the properties of a Peaceful location, that is no combat is allowed providing a safe location. However starting locations also provide points of entry into the world for players. Creating a Starting Location and it's properties are exactly as for creating a Basic or Peaceful location. Starting locations provide a way to implement "home zones" for players. If a zone has at least one starting location defined then that zone becomes a "home zone". When a player creates a character (or uses an existing character without a "home zone" set) they may be asked to choose a "home zone". Figure 1 shows an example login. WolfMUD (C)1999,2000 World Created By Of A.Rolfe (AKA Diddymus) Living Fantasy Please enter your characters name or the name for a new character. >Diddymus Please wait, checking for character... A character by that name cannot be found. Create a new Character? (Y/N) >y Please enter a password for your character. >password Please enter your password again for verification. >password What gender would you like your character to be: M - Male F - Female >m 1st Character Created - Player Type is IMP. Please select where in the world you would like to start from: 1. South of Zinara 2. Zinara > Figure 1. Example Login If there is only one "home zone" available this will be automatically selected for the character and no option to choose will be shown. However if there are more "home zones" the player is asked to choose one. If a "home zone" has more than one starting location defined then each time the player logs in one of them will be selected at random when the player enters the world. _________________________________________________________________ Creating Objects Next we will add a prize cabbage a player is able to take from one of the fields (Location 3000). Find the tree entry for Objects under the Cabbage Zone and select it. Then display the popup menu and select Add a sub menu will be displayed showing all the different types of objects that can be created. Select Food from the sub menu. See Figure 1. [addFood.jpg] Figure 1. Adding a Food Object This will cause a new editor window to opened so the properties can be edited. Enter the properties as shown in figure 21 to create the prize cabbage. [prizeCabbage.jpg] Figure 2. Prize Cabbage Details _________________________________________________________________ Creating Mobiles If we have fields of cabbages then maybe there should be some to tend them. For this we will create a Cabbage Farmer (Location 3003) to toil in the field. Find the tree entry for Mobiles under the Cabbage Zone and select it. Then display the popup menu and select Add this time a sub menu will be displayed showing all the different types of mobiles that can be created. Select Creature from the sub menu. See Figure 1. [addMobile.jpg] Figure 1. Adding a Mobile This will cause a new editor window to opened this time to enter details for the farmer. Enter the properties as shown in Figure 2 to create the Cabbage Farmer. The text for the combat actions may look a bit odd due to special formatting. For information on how to compose these messages see the section on Combat Text. [farmerDetails.jpg] Figure 2. Cabbage Farmer Details Now we have our cabbage farmer we need to flesh him out a bit and add items, a body and attributes. These are added to the categories listed under the entry for the farmer (Inventory, Body and Attributes). The body will be added first. Notice that the category for Body has a type of [S] next to it. This means we can only add a single item to this category. Select Body, display the popup menu and select Add, from the sub menu select Body Parts. See Figure 3. [addBody.jpg] Figure 3. Adding a Body This will show a frame where the body parts can be entered. The body parts a mobile has will effect what items can be worn/held/wielded. For example if a creature has no hands, for example a giant slug, it cannot use any item that requires hands to be used. Our cabbage farmer will have a standard humanoid body as shown in Figure 4. Notice how easy it is to create mobiles with a hand/arm/leg or even an ear missing. [bodyDetails.jpg] Figure 4. Body Details Next add the attribute details. Select the Attributes category for the farmer and add one each of Base Damage, Base Damage Modifier and Base Hit Chance. The values for each are shown in Figure 5. [attributeDetails.jpg] Figure 5. Attribute Details Lastly we need to add some items for our farmer. Figure 6 shows the items in the Farmer's inventory. He has clothing A Rough Shirt, Some Leather Trousers and A Pair of Leather Boots (Figure 8). He also has a Small Sack with some lunch in it; Some Bread and Some Cheese (Figure 9). Lastly he has a Hoe which can be wielded as a weapon should he be attacked (Figure 7). [farmerInventory.jpg] Figure 6. Cabbage Farmer's Inventory Each of these items can be added in the usual way by selecting Inventory from the cabbage farmer and adding the different types. The exception to this is the Small Sack. This has it's own inventory. You need to select the Small Sack and use Add to add the food into it. Figure 8, Figure 9 and Figure 7 show the attributes for the different items. The text for the combat actions for the Hoe may look a bit odd due to special formatting. For information on how to compose these messages see the chapter called Combat Text. [hoe.jpg] Figure 7. Farmer's Hoe [shirt.jpg] [trousers.jpg] [boots.jpg] Figure 8. Farmer's Clothing [sack.jpg] [bread.jpg] [cheese.jpg] Figure 9. Farmer's Lunch _________________________________________________________________ Non-Player Barriers Before we generate our zone we need to stop our farmer from wandering out of the fields. This is done using Non-player Barriers. We shall create one at the west exit of location 3000 and one at the west exit of location 3002. Find the Locations category for the Cabbage zone. For locations 3000 and 3002 add a Non-Player Barrier. The properties for each are shown in Figure 1. [barrierDetails.jpg] Figure 1. Non-Player Barrier Details _________________________________________________________________ Linking Zones The last thing we need to do before our zone is ready is to link it to the existing zone South of Zinara at locations 2001 and 2002. To do this find the zone South of Zinara, and under it find the Locations entry. Under this look for locations '(2001) Worn road south of Zinara' and '(2002) Worn road'. The exits for each of these locations need to be modified and the descriptions changed to indicate the new Cabbage fields to the east of the road. Figure 1 shows the changes for each location. [SOZChanges2001.jpg] [SOZChanges2002.jpg] Figure 1. 'South of Zinara' Zone Changes _________________________________________________________________ Generating Everything Now at last the Cabbage Zone is ready to be tried out, but first we need to generate the new zone. Select the entry World in the world tree, display the popup menu and select Generate. A small progress dialog will open while everything is being generated as shown in Figure 1. The yellow bars indicate the progress for a zone and are reset as each zone is generated. The blue bars show the overall zone progress and also any help entries. [generateDialog.jpg] Figure 1. The Generate progress Dialog Now all that is left to do is start the server running and connect to it. Exit the tavern and head south out of town. If everything is working properly the cabbage zone should be just to the east of the main road. Note If you can log on as an Implementer There are a few things you can do as an Implementer that make checking your new zone easier. * Use the command DUMP Z # this will list all loaded zones so you can check your zone is loaded. * Use the command GOTO O PRIZE will take you straight to the Prize Cabbage object. * Use the command GOTO L L3000 will take you straight to the first room in the Cabbage Zone. _________________________________________________________________ Collaboration Now you have your new Cabbage Zone there is a chance (slim) that you may want to share your work with others. To allow collaboration between designers working on a world two features have been included. You can either export your zone, or provide just the generated files. When you export a zone to a *.wmx file (WolfMud Export) anyone you give the file to can import it into their World Tree, look through it and modify it. If you give them just the generated files they can only use them 'as is' and you will have to make any changes for them. _________________________________________________________________ Exporting and Importing To export a zone select the zone to export, display the popup menu and select Export. A dialog will be displayed where you can specify the file name for the export. By default this file will be saved into the projects directory. You can now take a copy of the *.wmx file and give it to other designers to use. To import a *.wmx file select the Zones entry in the world tree. Then display the popup menu and select Import. This will display a dialog listing the files available for import. Select a file and the details will be incorporated into you current project. _________________________________________________________________ Generated Files Only If you wish to keep control over the modifications made to your zone, or you don't want anyone to look at the zone details and spoil any 'surprises' you can do that as well. When a zone is initially created an alias MUST BE PROVIDED. This is the name used for the generated files. The generated files will be placed into the data directory. In the tutorial we gave the alias of CABBAGE to our zone. Therefore once we have generated our zone we should have a number of files prefixed CABBAGE. The exact files generated will depend on the details you create. Table 1 shows the generated file types. Table 1. Generated File Types *.zon Zone Header File This file should always be generated for all zones. *.loc Locations File This file contains details about all locations in the zone as well as narrative objects. It is only generated when there are locations. *.mob Mobile File This file contains all of the details for each of the mobiles in a zone. It is only generated when there are mobiles. *.tng Thing File This file contains details for everything else that can be created except help topics. It is only generated if needed. To distribute your zone this way just provide copies of the files associated with your zone. To use these type of files on your own server just copy them into the data directory and they will be picked up automatically when the server is started. Note If the *.zon file is not present then NONE of the other files will be used either. _________________________________________________________________ Combat Text Combat text in WolfMUD is a little tricky until you get used to it. Basically when a combat message is displayed it can be seen by one of three types of people: the attacker, the defender and anyone watching (Viewers). This means the same message cannot be sent to everyone. For example if you have the message: A Farmer hits out at you with a ham sized fist. This would look fine for the defender but not for the attacker or viewers. If you are watching and saw 'A Farmer hits out at you with a ham sized fist' you would think the farmer is attacking you. Likewise if you are attacking and saw it you would think 'but I'm not a farmer'. To get around this substitution values can be used to automatically put the right text in the right place for the person it is intended for. The substitution values take the form {number}. See Table 1 for a list of valid values. Table 1. Substitution Values Substitution Replaced By Attacker's Viewpoint Defender's Viewpoint Viewer's Viewpoint {1} HIM, HER or IT DB YOU HIM, HER or IT DB {2} Defender's Name + 'S YOUR Defender's Name + 'S {3} Defender's Name YOU Defender's Name {4} YOUR HIS, HER or IT'S AB HIS, HER or IT'S AB {5} YOU HIM, HER or IT AB HIM, HER or IT AB {6} HIS, HER or IT'S DB YOUR HIS, HER or IT'S DB {7} YOU HE, SHE or IT AB HE, SHE or IT AB DB = Defender Based, AB = Attacker Based Another problem is that of tenses. For example you hit and he hits. To get around this you can use the special form [text/text]. The text before the slash is only seen by the attacker and the text after the slash is only seen by defenders and viewers. _________________________________________________________________ Examples Situation: A Farmer fighting Diddymus {0} hit[/s] out at {3} with a ham sized fist. Attacker sees: You hit out at Diddymus with a ham sized fist. Defender sees: A Farmer hits out at You with a ham sized fist. Viewers see: You see A Farmer hits out at Diddymus with a ham sized fist. Situation: A City Guard (Female) fighting A Taunting Imp (It) {3} make[s/] a grab for {0} but {7} dart[/s] aside and swipe[/s] at {1}. Attacker sees: A Taunting Imp makes a grab for You but You dart aside and swipe at It. Defender sees: You make a grab for A City Guard but She darts aside and swipes at You. Viewers see: You see A Taunting Imp make a grab for A City Guard but She darts aside and swipes at It. To make it easier to compose these messages a small utility is available. In the directory where the server and World Builder software is installed there should be a file called testActionText.html. This can be run in a browser or using appletViewer from the JDK. Figure 1 shows the utility. [messageUtility.jpg] Figure 1. Message Utility The utility assumes a City Guard (female) fighting a Taunting Imp (It). Enter you message in the top half and select the button CHECK. The message will be formatted for the attacker [A], defender [D] and viewer [V]. The resulting messages will then be displayed in the lower half for you to check. Figure 2 shows an example. [messageUtilityExample.jpg] Figure 2. Message Utility Example When you are happy with your message it can then be cut and pasted into the World Builder. _________________________________________________________________ Compiling from Source Compiling WolfMUD from source can be very easy even if you are only using the standard Java Development Kit can not a fancy IDE. However just compiling the sources using javac on the main wolfServer.javawill not work and you will find only about a third of the sources are compiled. You might ask why is this? Compiling the base wolfServer.java file causes it and also any classes it depends on to be compiled. However WolfMUD does not directly reference all of it's classes, it uses reflection quite a bit. This means the compiler cannot know about the other classes as they are loaded at runtime. The easiest way to get around this is to quickly check and compile all of the source files automatically. However you may find you need a JDK version 1.3.0 or higher to use the javac @ method of compiling as other versions of the JDK have problems especially under Windows. _________________________________________________________________ Compiling under Windows These commands will build a list of all of the java files which can then be used as input into the javac command to compile everything. The commands can either be entered again and again or put into a batch file. It is assumed that WolfMUD has been installed into c:\wolfmud and the sources into c:\wolfmud\sources. cd c:\wolfmud\sources dir /B /S *.java file.list javac -d c:\wolfmud @file.list _________________________________________________________________ Compiling under Unix/Linux These commands will build a list of all of the java files which can then be used as input into the javac command to compile everything. The commands can either be entered again and again or put into a script file. It is assumed that WolfMUD has been installed into ~/wolfmud and the sources into ~/wolfmud/sources. cd ~/wolfmud/sources find . -name '*.java' > file.list javac -d ~/wolfmud @file.list _________________________________________________________________ Text Dump of the Cabbage Zone Figure 1 show all of the details for the Cabbage Zone. It was produced using the Dump To Text menu option on the Cabbage Zone and may be of help if some of the images in the tutorial are difficult to read. The Cabbage Zone -> Zone ==================================== Name: The Cabbage Zone Description: Example Zone for Builder Tutorial. Alias +: CABBAGE Start Range: 3000 End Range: 4000 (3000) A cabbage field. -> Basic Location =================== Location Number: 3000 Title: A cabbage field. Description: You are in a muddy field full of cabbages. Alias +: FIELD Exits: 0, 0, 3001, 3003, 3002, 0, 2001, 0, 0, 0 ----- Some cabbages -> Narrative Object --------------------- Title: Some cabbages Description: These are your average cabbage, if some what on the small size. Available in a range of greens, yellows and browns. Alias +: CABBAGE, CABBAGES Location: 3000 ----- Non Player Barrier ------------------------------------ Location Index: 3000 Direction Blocked: 16 Block Alias +: FARMER Pass Alias +: (3001) A cabbage field. -> Basic Location =================== Location Number: 3001 Title: A cabbage field. Description: You are in a muddy field full of cabbages. Alias +: FIELD Exits: 0, 0, 0, 0, 3003, 3002, 3000, 0, 0, 0 ----- Some cabbages -> Narrative Object --------------------- Title: Some cabbages Description: These are your average cabbage, if some what on the small size. Available in a range of greens, yellows and browns. Alias +: CABBAGE, CABBAGES Location: 3001 (3002) A cabbage field. -> Basic Location =================== Location Number: 3002 Title: A cabbage field. Description: You are in a muddy field full of cabbages. Alias +: FIELD Exits: 3000, 3001, 3003, 0, 0, 0, 2002, 0, 0, 0 ----- Some cabbages -> Narrative Object --------------------- Title: Some cabbages Description: These are your average cabbage, if some what on the small size. Available in a range of greens, yellows and browns. Alias +: CABBAGE, CABBAGES Location: 3002 ----- Non Player Barrier ------------------------------------ Location Index: 3002 Direction Blocked: 16 Block Alias +: FARMER Pass Alias +: (3003) A cabbage field. -> Basic Location =================== Location Number: 3003 Title: A cabbage field. Description: You are in a muddy field full of cabbages. Alias +: FIELD Exits: 3001, 0, 0, 0, 0, 0, 3002, 3000, 0, 0 ----- Some cabbages -> Narrative Object --------------------- Title: Some cabbages Description: These are your average cabbage, if some what on the small size. Available in a range of greens, yellows and browns. Alias +: CABBAGE, CABBAGES Location: 3003 (3003) A Cabbage Farmer -> Creature ========================= Name: A Cabbage Farmer Description: This is one of the local town's people whos job is to grow and tend the cabbages for the to wn. Alias +: FARMER, MAN Enter Message: A Farmer walks in. Exit Message: A Farmer wolks off. Actions +: The Farmer tends to the cabbages., The Farmer starts to h oe the ground., The Farmer looks aroun d the field., The Farmer rests again st his hoe. Location: 3003 Reset Frequency: 60 Health: 30 Combat frequency: 0 Combat Actions +: {0} hit[/s] {3} with a ham sized fist., {0} catch[/es] {3} with a stunning blow., {0} lash[/es] out at {3} hitting hard. Aggressiveness: 0 Money: 0 Gender: 0 Carry Encumbrance: 1000 Encumbrance: 1500 Friends +: Enemies +: ----- (0) A Rough Shirt -> Worn Object ---------------------- Title: A Rough Shirt Description: This is a rather shabby, rough, long sleeved cotton shirt. Alias +: SHIRT, ROUGH Reset Message: Location: 0 Reset Frequency: 0 Value: 10 Reset on Pickup: false Encumbrance: 10 Required Body Parts: 5, 6, 7, 7, 8, 8, 4 ----- (0) Some Leather Trousers -> Worn Object -------------- Title: Some Leather Trousers Description: This is a pair of soft leather trousers, a bit worn but serviceable. Alias +: TROUSERS, LEATHER Reset Message: Location: 0 Reset Frequency: 0 Value: 15 Reset on Pickup: false Encumbrance: 15 Required Body Parts: 11, 12, 12, 13, 13 ----- (0) A Pair of Leather Boots -> Worn Object ------------ Title: A Pair of Leather Boots Description: This is a pair of leather boots, they have seen better days and one has a hole in the bottom. Better than bear feet though Alias +: BOOTS, LEATHER, PAIR Reset Message: Location: 0 Reset Frequency: 0 Value: 15 Reset on Pickup: false Encumbrance: 10 Required Body Parts: 15, 15, 14, 14 ----- (0) A small Sack -> Container ------------------------- Title: A small Sack Description: This is a small cloth sack. Alias +: SACK, CLOTH Reset Message: Location: 0 Reset Frequency: 0 Value: 5 Reset on Pickup: false Encumbrance: 5 Maximum Capacity: 20 ------- (0) Some Bread -> Food ------------------------------ Title: Some Bread Description: This is a chunk of fresh bread. Just the thing to fill an empty stomach. Alias +: BREAD Reset Message: Location: 0 Reset Frequency: 0 Value: 10 Reset on Pickup: false Encumbrance: 10 Hour Value: 12 ------- (0) Some Cheese -> Food ----------------------------- Title: Some Cheese Description: This is a piece of yellow cheese, except for the odd spot of green that is. Alias +: CHEESE Reset Message: Location: 0 Reset Frequency: 0 Value: 5 Reset on Pickup: false Encumbrance: 5 Hour Value: 4 ----- (0) A Hoe -> Wielded Weapon --------------------------- Title: A Hoe Description: This is a regular hoe commonly used by pesants toiling in the fields. It is a slendar wooden pole about five foot in length and has a sma ll iron blade at one end. Alias +: HOE Reset Message: Location: 0 Reset Frequency: 0 Value: 40 Reset on Pickup: false Encumbrance: 70 Required Body Parts: 10, 10 Fixed Damage: 2 Random Damage: 2 Combat Actions +: {0} swing[/s] a hoe at {3}., {0} lunge[/s] at {3} with a hoe hitting {1}, {0} jab[/s] at {3} with {4} hoe. ----- Body Parts -------------------------------------------- Body Parts: 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 15, 15, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20 ----- Base Damage ------------------------------------------- Natural Fixed Damage: 2 ----- Base Damage Modifier ---------------------------------- Natural Random Damage: 2 ----- Base Hit Chance --------------------------------------- Natural Hit Chance: 20 Figure 1. Dump to Text for Cabbage Zone _________________________________________________________________ License Agreement Last Updated: 11^th November 2002 WolfMUD is an original work: Copyright © 1999-2003 Andrew "Diddymus" Rolfe, WolfMUD.org email: Diddymus@WolfMUD.org Diddymus@CodeCrafterStudio.com WolfMUD is licensed software. It is not Public Domain, Shareware or anything similar. This file contains the terms and conditions of the WolfMUD License Agreement. This Agreement grants you a non-exclusive license to use the software as outlined below. If you wish to use WolfMUD in any way, or use any of its source code, you must read this license and are legally bound to comply with it. Use of the WolfMUD code in any capacity implies that you have read, understood, and agreed to abide by the terms and conditions set down by this license. If you use WolfMUD without complying with the license, it is a breach of the law. You must not use WolfMUD to make money in any way or be otherwise compensated. WolfMUD was developed in people's uncompensated spare time and was given away free of charge, and you must not use it to make money. WolfMUD must not be used in any way to accept or demand fees, donations, or other compensation of any kind. Examples include, but are not limited to the following: * You must NOT require players to pay a fee or donation for using WolfMUD. * You must NOT accept bribes in any form for levels, equipment or anything else that have not been aquired through hard play. * You must NOT accept a fee or donation for the running of a WolfMUD server or for passing on the cost of service providers. * You cannot sell, distribute or exchange WolfMUD for a fee or donation. It must be free to any at all times. You must give credit to the authors of WolfMUD. It is a project created in spare time for no compensation and is given away at no charge. Therefore the only recognition the authors get is their name in the credits and source code. If this is removed and you claim to have written the code yourself it shows you have no respect for the time and effort involved in creating software. The following MUST be followed if you wish to use or modify the WolfMUD codebase: * This license must be distributed 'AS IS' with all copies or portions of WolfMUD that you distribute, if any, including works derived from WolfMUD. * You MUST NOT remove any copyright notice or authors name from the source code. * The text for the CREDITS command must remain intact and unmodified. The only exception is that you may add ADDITIONAL text if you make modifications. * The initial text seen by players when they connect must remain intact and unmodified. The only exception is that you may add ADDITIONAL text if you make modifications. * The text for the WolfMUD command must remain intact and unmodified. There are no exceptions to this requirement. * WolfMUD has been written in 100% Pure Java(TM), making it available on a vast number of platforms. WolfMUD MUST stay 100% Pure Java(TM). Modifications are NOT allowed to tie WolfMUD to any one specific Platform or Operating System. [5] * If you make modification to the source code it should be clearly documented as to the modifications made and the date of the modification. Permission is given to use, modify and redistribute all WolfMUD source code and documentation as long as such use does not violate any of the rules set down by this license. If you cannot abide by any part of this License Agreement then DO NOT USE WolfMUD. If you are running a server based on WolfMUD, please contact the Authors at the top of this license agreement with some details. If you write an article about WolfMUD, please contact the Authors at the top of this license agreement with some details and gain permission before publication. If you find any bugs, wish to make comemnts etc. please contact the Authors at the top of this license agreement. DISCLAIMER THE CREATORS OF WOLFMUD MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. THE CREATORS OF WOLFMUD SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. -- Andrew 'Diddymus' Rolfe Trademarks: Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and/or other countries. _________________________________________________________________ Colophon This document was produced 100% on a Linux system running Kernel versions 2.4.18 and 2.4.19. The source of this document was written using DocBook DSSSL version 1.76-1 and DocBook DTDs version 1.0-8 covering DocBook 4.1.2. The DocBook utils version used was 0.6.9-25 with jw version 1.1. The parser was OpenJade version 1.3.1-4. Previews of the document were created in PostScript format using docbook2ps. Final document production was done using docbook2dvi and running the DVI files through dvipdfm version 0.13.2c for the PDF document. For the text version docbook2html was used and the output run through Lynx version 2.8.4dev.16. The document SGML source was edited using the VIM editor version 6.0z ALPHA. Screenshots were taken using GIMP version 1.2.1. Diagrams were produced using Dia version 0.88.1. The WolfMUD Builder was run using the Sun JDK version 1.3.1-b24 for the purpopses of the screenshots.The window manager used was FVWM2 version 2.2.4. The document was previewed using gv 3.5.8. Acrobat Reader 4.0 and 5.0.5 were used to preview final document versions. Document and Image version control was done with CVS version 1.11. Notes [1] This is on top of the memory taken to run the JVM itself which depends on the JVM being used. [2] For details of the Java Runtime Environment (JRE) and Java Development Kit (JDK) see the JavaSoft web site at http://www.javasoft.com/j2se or the IBM web site at http://www.ibm.com/java/jdk/ where a number of platforms are supported. [3] The Apache web site can be found at www.apache.org. As of Build 240 WolfMUD now has it's own integrated MiniWeb Server. [4] If you are using Java 2 you should have Swing already and not need to download anything extra. If you are using Java 1.1.x you will need to download a 1.1.x version of Swing from http://www.javasoft.com/products/jfc/download.html [5] Platform specifc modifications such as scripts for administration and native code for performance improvements should be made available as an OPTIONAL companion distribution.