Book of WolfMUD


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 <class file>

   The  entry  <class  file>  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 <class file>

   The  entry  <class  file>  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 <class file>

   The  entry  <class  file>  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 <downloaded JAR name>

Example:

java -jar WolfMUDServer_build300.jar
     _________________________________________________________________

Java 1.1.x (UNIX)

java -classpath .:<downloaded JAR name>:<path to classes.zip> install

Example:

java -classpath .:WolfMUDServer_build300.jar:/usr/jdk118/lib/classes.zip
install
     _________________________________________________________________

Java 1.1.x (Windows)

java -classpath .;<downloaded JAR name>;<path to classes.zip> 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/<user>/WolfMUD)
    3. Copy the old players, projects and data directories back (E.G.
       into C:\WolfMUD or /home/<user>/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;<path to classes.zip>
       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;<path to classes.zip>
       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>    Port to listen on for clients.
                 Where <port> 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 <x> Maximum number of client connections allowed.
                 If not specified defaults to platform limit.
-timeout <x>    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> 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://<my_IP>:4002
where <my_IP> 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 @<filename> 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.

原文地址:https://www.cnblogs.com/bluespot/p/909403.html