FILE: BASICS.TXT

               HUB - Henry's Universe Builder
         Basic Area and Object Construction Manual

               DATA ENTRY and BASIC PARAMETERS

This file is Copyright 1995,1996 by Henry McDaniel.  All rights
reserved.   See NOTICE for further details.
--------------------------------------------------------------------

This manual covers how to build basic objects (and thus game areas)
using your own Word Processor. 

Before we get started:  Your word processor must be capable of
saving documents in pure text (aka ASCII or "plain text").  This
means there are no special characters or WP-specific mumble-jumble
in the file.  Any work you send must be in pure text form.  Also,
be sure to use the RETURN or ENTER key after each line.  Some processors,
screen wrap everything, and this will not work with our software.

The format you will be using has been designed to be easily modified
because it is readable and (we hope) intuitive.  This format is not
the actual format of the game database, but merely a means for you to
easily describe BASIC objects.


@@@@@@@@@@@@@@@@@@@
PLAYERS
@@@@@@@@@@@@@@@@@@@

The default HUB condition:
Players have levels (1-50.)  A player also has a
score.  All players begin at level 1.  A player's level will
increase by 1 for every 20,000 score points collected. If
a player dies, his score is decreased by a fifth, but the level
is never reduced.

You will notice that there are no prices to be set on the objects
you create.  This can be done by players based on availability
and demand.


@@@@@@@@@@@@@@@@@@@
DATA FORMAT
@@@@@@@@@@@@@@@@@@@

IMPORTANT!: Make three seperate files.  Set aside one file each for,
rooms, characters and objects. It is very important that all three
files are seperate, and none of the wrong objects are in either file.
For examples see tools/examples/

The format to data entries is as follows:

#
[ID] [TYPE] [ENVIRONMENT]
[SHORT]
[LONG DESCRIPTION]
<label:value>
.
.
<mapping label>{
  <label:value>
   .
   .
}

-------------------

ID
Each object must have a unique ID.  This is an alpha-numeric
word. Keep IDs under 3-4 characters long.  Use unique numbers
for rooms.  Feel free to use longer names (no spaces) for 1
or two special rooms.

TYPE
Type can be one of  ROOM, CONT, OBJ, CHAR.
ROOM -  Location object
NPC -   Character
CONT -  Container such as a bag or box
OBJ  -  Other types of objects

Case does not matter (so "room" = "ROOM") and you can use just
the first letter (so "r" means ROOM.)  If type is unknown, a
room is selected by default.


COMMENTS
Comments can be placed on lines starting with ;.  A comment
is just a note for yourself or if at the start of entries,
for the game owner.

LABELS & VALUES
A variable consist of a label and value or label-value pair.
Example:  size: 1  
In the example, "size" is the label and "1" is the value.
NOTE: always leave a space between the colon (:) and the value.

A mapping is a LIST of label-value pairs.  The labels in each
pair is a key by which a member of the list may be found.  You
use brackets to enclose the list data.
Example:

list{
      you: 22
      13: none
}

In the example, a mapping called "list" contains two lable-value
pairs.  "you" and "13" are keys to finding the data of each.
Note: for easier readability you can place a tab before each pair
in a list - this is optional.

STRINGS
A string is text data (for example, the description of a room.)
Any string which has newlines in it must have continuation mark(s).
The \ character at the end of a line indicates that the string continues
on to the next line.

You can use a continuation mark at the very start of a string, to
make it easier to see exactly what a player might.  For instance:

extra{
	wall: \
The wall looks like it is made of plaster.
}


END OF ENTRY
The # mark is used by itself on a line to indicate the end/start
of an entry.




@@@@@@@@@@@@@@@@@@@
ROOMS
@@@@@@@@@@@@@@@@@@@



The typical room is a location in which players may communicate
or manipulate game objects.  Players are *always* within some
room.  

When entering or within a regular room, the short description (aka
title) of a room is displayed, along with the room description.

HUB also supports SIZED ROOMS.  In a sized room there is quantifiable
distance between objects within.  More details are given below.



ROOM ATTRIBUTES   (*'s indicate they are for sized rooms)


short, string
     Room title

long, string
     General room description

*size, number  [Only use for sized rooms]
     1 - sized room of maximum size 3x3.
     2 - sized room of maximum size 2x2.

*dpoints, mapped strings
    Additional long descriptions for point XX in rooms with size

extra, mapped string
    Extra room descriptions

*extraXX, mapped strings
    Extra room descriptions ONLY for point XX within a sized room

*block, mapped numbers
    Locations within a sized room to be voided out.  Use XX points
    to block as keys

*border, string
    Reason message to give when a character's movement is blocked
    by a block location.  Only for sized rooms

exits, mapped strings
    List of exits

start, number
    USE ONLY in rooms which players may choose to start in-game at.
    This should only be set in a SINGLE special public place that you
    consider the heart or perhaps the start of the area.  There are
    exceptions, see Part 2. of the manual.

store, number
    USE ONLY in rooms which players may use as player owned stores.
    Follow same procedure described in manual Part 2. for dwellings.



EXAMPLE REGULAR ROOM

d100 r
Street
On a dusty sidewalk, just inside the town of Grao.  There is a small sign\
posted here.\
The street continues east and west.

extra{
	sign: The sign reads, "No Parking Anytime."
}
;
; Exits leading to other non-sized rooms
; format is  method: <from point> <to room> <to room point>
exits{
	e: 0 d104 0
	w: 0 d102 0
}


EXAMPLE SIZED ROOM

#
d105 r
The Subway
The walls are tiled and gleaming white.  The air fresh and warm.  On
the platform you can see the rails.
size: 1

; Subway tracks n' stuff
;
dpoints{
	21: The tracks continue north, out of sight.
	32: The tracks continue south, out of sight.
	22: There is a sign here. The tracks run north and south.
	33: Out leads to the street above.
}

extra{
	wall: All tiled and covered in grafitti.
}
extra22{
	sign: Its a peeling, water stained advertisement for Ralto-meal.  Yuk.
}

; A list of locations to block, format is->  XY: N
; N=1 will display a border message if player attempts to go that way
; N=0 will just be "You cannot go that way."

block{
	11: 1
	12: 1
	13: 1
        31: 1
        32: 1
  }


border: a subway wall

; Exit list.
; If player tries "out" they will go to room d552, apparently a non-sized
; location

exits{
	out: 33 d552 0
}
#
.
.



@@@@@@@@@@@@@@@@@@@
SIZED ROOMS DETAIL
@@@@@@@@@@@@@@@@@@@



A sized room can be thought of as multiple rooms sharing the same
general description.  However in a sized room, it is possible
to see other players who are distant or objects (under certain
circumstances.)  The use of sized locations can give players
a greater sense (when other players are nearby) that they
are not completely isolated.  Also, it simplifies construction
of long passages/tunnels, open areas, etc.


There are two sizes for sized rooms:  1 and 2.

Size 1 is the largest and is 3 cells by three cells in size.

   1 2 3
 1 [][][]
 2 [][][]
 3 [][][]

Size 2 is 2 cells by 2 cells in size:

  1 2
1 [][]
2 [][]


To reference a particular cell or POINT within a room we use the
value  XY where X is the horizontal and Y is the vertical cell
number.

Each cell within a sized location can be blocked or taken out.
This is done with a block mapping.  If blocks are specified
you can also specify the message players get when they attempt
to go into a blocked cell.  The message is  "That way is blocked
by <border>"  The default border is "a wall".

If the player attempts to leave the sized location completely,
and there is no appropriate exit, the message "You cannot go
that way." is displayed.

Players in a cell can move to any nearby non-blocked cell by means
of going N,S,E,W,NW,SW,SE,NE if logical.  Standard exits between
0 sized locations, or even between different sized locations
should be one of "n","s","e","w","nw","sw","se","ne" if they
are compass directions.


CAVEATS
Do not attempt to make a diagonal border (with 2 or more blocks)
without blocking nw/sw/ne/se directions which could allow a player
to move between the blocks (unless that's what you want.)  For
instance:

  123
1 oox
2 oxo
3 oxo

(blocks: 31, 22, 23)

In the above size 1 room, the X's are intended to form a
solid border between the left and right sides of the room.
However, a player in position 21 could go SE into cell 32.
To prevent this the actual blocks should have been:

  123
1 oox  
2 oxx  
3 oxo  

(blocks: 31, 22, 32, 23)



@@@@@@@@@@@@@@@@@@@
OBJECTS 
@@@@@@@@@@@@@@@@@@@


We call objects which are not characters and are not rooms, "other".
An item which should be visible over a long distance should have
a near and/or far title.  But only rare or special items, please.

In the game, players may get their score increased by finding certain
special items.  But only if their level is the number indiciated.
The score value is added to their score.   Score values should be
no greater than 100 times the player's to be level and no less than
20 times the old level.

By placing these promotional items inside of powerful NPCs or in hard
to find places (and setting very long and very random returns) you can
help to create a challenging game for adventures players.

Note: Once a promotional item is taken by a player, it vanishes and they
are told how many points it was worth.


short, string
     title

nshort, string
     "near" title to display in sized rooms when viewer is one point away.

fshort, string
     "far" title to display in sized rooms when viewer is two points away.

long, string
     general description

keywords, string
     string list of word handles

weight, number

capacity, number
     (ONLY! for container objects)

.....................
drink, number
      IS a drink.  Number refers to recoup value, or (roughly) how many
      energy points will be gained (under the maximum for a given player)
      in the next minute.   Value should be between 1 for lousy drinks to
      15 or more for great ones.

liquid, string
       Optional name of the liquid.  Example: "water" - "liquid" is the
       default.  Do not capitalize. Negative values will act as a POISON.
       Use name of liquid holder (such as bottle/"cup of coffee") for
       short title.

food, number
      IS a solid edible.  Number same as drink (essentially.)

NOTE: Food/drink necessary only for players who engage in combat.

........................
wear, number
      indicates wearable item

armor, number
      indicates armor value of wearable item (ONLY! for wearable items)
.........................


point, number XY
      indicates the item is at point XY within a sized location (don't
      forget to set environment for ALL non-room objects)  Need only
      use "point" if item is being placed inside of a sized room.

promote, number X Y
      indicates this is a promotional item.  X specifies the level a
      player must be at to benefit.  Y specifies the item's score
      value.

decay, number 
      use this to specify that an object should vanish after specified
      number of minutes.  It will only do so, when no active players
      are around.

return, number N1 N2
      (see explanation in characters section)

EXAMPLE ITEM

#
Sword o d342
A sword
It is a sword.
keywords: sword
wear: 8
weight: 6
return: 100 45
#




@@@@@@@@@@@@@@@@@@@
CHARACTERS
@@@@@@@@@@@@@@@@@@@



A character refers to the bodies of players and non-players.  
Players cannot be created by the sort of building you will
be doing.  You can refer to a non-player character as either
an NPC or a monster.

All characters (even players) need energy. This is their life
force and is necessary for their survival.

Energy decreases when a character moves or is attacked.

All characters (and even non-room objects) must also have a
weight.  Weight is given in terms of pounds.  The smallest
items should weigh 1 pound.   The amount of weight a player
character can carry is determined by the amount of strength
in their lower body.

If an NPC is killed or otherwise destroyed, the "return: N1 N2"
value tells the game how many minutes to wait before
placing a duplicate character in the spot where the original
started.  If you were for some odd reason not to specify
a return value, the character would only appear upon the
first initialization of the game database.  And this might
only occur once in several MONTHS.   An additional number
supplied for "return" assigns a random number of minutes
(between 0 and N2) to add to the wait time.

The "mob" attribute specifies that the character should move
around (at random.)  A mobile character will not use any
exits save n,s,e,w,nw,sw,ne,se.

The "hunt" attribute specifies that the character will attack
players who have recently attacked it (this is somewhat
random, but a short list of attackers will be kept some of
the time.)


CHARACTER ATTRIBUTES

name, string
    name

short, string
    name & title

long, string
    description

stat, mapped numbers

energy, number

weight, number
 
return, N1 N2

 nu, number  - no upper body
 nl, number  - no lower body
 nb, number  - no blood, means character will not bleed when hit
               (but can still die), useful for robots or bloodeless
               creatures.

 mob, number

 point, number XY   
             - same as for objects

 

EXAMPLE CHARACTER ENTRY

#
j32 c d100
Joe the mechanic
He looks like a grimy mechanic.
name: joe

stat{
	ud: 40
	us: 150
	ld: 70
	ls: 50
}

level: 4
return: 135 15
energy: 140
weight: 150
#
.
.


END OF BASICS.TXT