!
! This file contains NAMES that can be used instead of numeric values
! when you are writing scripts or creating worlds.  These names make 
! it a lot easier to create the games because you don't have to remember
! what the numbers mean. You can use the name instead.
!
! For example, the script line:
!
!    if object.type = WEAPON then ..
!
! clearly is testing whether a given object is of type WEAPON.  It is
! a lot better than trying to remember that weapons are represented by
! a # 1, as in:
!
!    if object.type = 1 then ..
!
! You are welcome to add new tokens to this list, and to change the names
! being used.  However, you should not REMOVE entries unless you are very
! sure of what you are doing.
!
! Tokens are listed in groups, with the name of the group enclosed in
! brackets [group-name] and preceeding each group.  You can create your
! own groups, but the groups already here must remain.  You can change
! the lists, but the group names must not be changed.  They are used to
! tell the game system what names are associated with specific types of
! values.
!
! A brief explanation of what the values in a group mean preceeds each
! group.
!

!
! TYPES OF ACTIONS THAT INVOKE SCRIPTS.
! The value shown below cannot be modifed.  The name can be changed to any
! name you wish.  When a script is invoked, it starts executing at the 
! label :@<name>, where name is one of those listed below.  The ACTION
! global variable returns the value of the action that invoked the script.
!
[ACTIONS]
TALK       0      ! 'T'alk to OBJECT or NPC
GET        1      ! 'G'et OBJECT or NPC
DROP       2      ! 'D'rop item (from backpack to floor).   CURRITEM = which.
WEAR       3      ! 'W'ear item (currently in backpack).    CURRITEM = which.
REMOVE     4      ! 'R'emove item being worn (to backpack). CURRITEM = which.
LOOK       5      ! 'L'ook at OBJECT or NPC
EXAMINE    6      ! detailed look at an OBJECT or NPC (often a spell).
INVOKE     7      ! i'N'voke a magical object being carried. CURRITEM = which.
USE        8      ! 'U'se an OBJECT (not carried).
ENTER      9      ! 'E'nter a new world.  (World scripts only).
EXIT      10      ! 'E'xit a world.  (World scripts only).
CAST      11      ! Fall into a world through a TRAP door.
ATTACK    12      ! Attack an object or character

!
! TYPES OF OBJECTS.  May be extended up to 255.  Object types 0 through
! 35 are reserved.  You can create your own starting with 36 and going 
! all the way to 255.  This way, I can add new types without affecting
! anything you write.
!
! Note that object behaviour is controlled by the script OBJECT.SCR, which
! uses the object's TYPE and CLASS to decide how the object behaves. 
!
[OBJECT TYPES]
FOOD            0 ! This can be eaten.
WEAPON          1 ! This can be wielded as a weapon.
AMMO            2 ! This is ammunition for a weapon.
ARMOR           3 ! This can be worn as armor.
SHIELD          4 ! This can be carried as a shield.
AMULET          5 ! This can be worn around your neck.
RING            6 ! This can be worn around your finger.
POTION          7 ! This can be drunk (some people say drinked)
SCROLL          8 ! This can be invoked 
STAFF           9 ! This can be wielded and used to ZAP spells
CHEST          10 ! A chest covers other objects.  May be locked.
KEYS           11 ! This key may be used to open doors or chests
GEMS           12 ! This gems may be invoked.
BOOK           13 ! This book may be read.
GOLDSACK       14 ! Contains gold or silver.
TORCH          15 ! has no special qualities yet.
LANTERN        16 ! has no special qualities yet.
ROPE           17 ! has no special qualities yet.
HOOKS          18 ! has no special qualities yet.
MIRROR         19 ! has no special qualities yet.
SIGN           20 ! This has some text written on it
VEHICLE        21 ! This can be used for transportation.

!
! Types of CHARACTERS.  The type determines the default behaviour of the
! character.  The DCWORLD world builder will assume that a script has
! been (or will be) written to control the character's normal behaviour.
!
! The script name must be the first 8 characters of the token name below.
!
[CHARACTER TYPES]
REGULAR         0 ! REGULAR.SCR  - Will join the party if asked to..
HOSTILE         1 ! HOSTILE.SCR  - Will attack on sight and follow you..
MERCHANT        2 ! MERCHANT.SCR - Buys and Sells stuff..
BARTENDER       3 ! BARTENDE.SCR - Sells beer.  Good source of information.
HEALER          4 ! HEALER.SCR   - Cure, Heal, Resurrect, Remove Curse,..
CIVILIAN        5 ! CIVILIAN.SCR - Will talk, but won't join..
TELLER          6 ! TELLER.SCR   - Fortune Teller or Oracle type..
QUESTER         7 ! QUESTER.SCR  - Asks you to find an object or person.
BEGGAR          8 ! BEGGAR.SCR   - Want's money.  Might give you a tip.
TRAINER         9 ! TRAINER.SCR  - Will train someone (STR,DEX,AIM,IQ) 
GUARD          10 ! GUARD.SCR    - Blocks your way unless given the password.
PRISONER       11 ! PRISONER.SCR - Will join your party temporarily (to escape).

!
! World TYPES
!
[WORLD TYPES]
ENDGAME         0 ! Game will end if the players enter this room 
OUTDOORS        1 ! Outdoors 
CITYTYPE        2 ! Big civilized city 
TOWNTYPE        3 ! Small town 
DUNGEON         4 ! Dungeon 
HIDEOUT         5 ! Town that caters to thieves and pirates.. 
HOUSE           6 ! Someone's house 
CASTLE          7 ! A lord's or king's castle 
ARENA           8 ! Training area.  Frequent random monsters
HAUNTED         9 ! Haunted place.  Random monsters 

!
! System Graphics:  The following values are used to differentiate 
! graphics blocks in the DCSYSTEM graphics file.  The first 5 entries
! (shown below) are also the first 5 graphics blocks in the file, and
! are used during regular game play. 
!
[SYSTEM TYPES]
SYS_PARTY    0 ! The party, except when fighting.
SYS_FRAME    1 ! A frame around the character whose turn it is to move.
SYS_SPLAT    2 ! Used to indicate the character was hit.
SYS_TARGET   3 ! Used to point at things.
SYS_BULLET   4 ! Use to represent a moving missle when fired.

!
! CHARACTER CLASSES (ALL CHARACTER TYPES EXCEPT HOSTILE)
!
[CHARACTER CLASSES]
HUMAN           0 ! standard stuff, no power 
ELF             1 ! fast, magical power, not strong 
DWARF           2 ! slow, STRONG, no magic, no missles or shields 
WIZARD          3 ! slow, lot's of magic, not strong 
ARCHER          4 ! fast, no magic, + on missle weapons 
FIGHTER         5 ! fast, strong, no magic of any kind 

!
! MONSTER CLASSES (For HOSTILE type characters).
!
[MONSTER CLASSES]
LAND_MONSTER      0 ! Land Based, cannot walk over water
WATER_MONSTER     1 ! Water Based, cannot walk over land
CAVE_MONSTER      2 ! Dungeon Based, found mostly in dungeons
SPOOK_MONSTER     3 ! Ghosts, Zombies, Undead, etc.

!
! Magical Effects, Type 1
!
[OBJECT CLASS: FOOD, POTION, RING, AMULET, GEMS]
NONE            0 ! No magical effect
CURE            1 ! Remove POISON
HEAL            2 ! Restore some HP
POISON          3 ! (Trap) POISON drinker
RESTORE         4 ! Restore ALL HP
PLUS_STR        5 ! Increase STRENGTH
PLUS_DEX        6 ! Increase DEXTERITY
PLUS_SPD        7 ! Increase SPEED
PLUS_AIM        8 ! Increase AIM
PLUS_AC         9 ! Increase AC
PLUS_HP        10 ! Increase HP
PLUS_IQ        11 ! Increase IQ
PLUS_PWR       12 ! Increase POWER

!
! Magical Effects, Type 2
!
[OBJECT CLASS: STAFF, SCROLL] 
NO_MAGIC        0 ! No magical effect
DESTROY         1 ! Destroy an object 
DUPLICATE       2 ! Duplicates an object 
LEAVE           3 ! Exit through a DOOR from anywhere 
RESURRECT       4 ! Revive a DEAD person 
INFORM          5 ! Displays some text 
DOORS           6 ! Locate doors 
KILL            7 ! Kill 1 enemy during battle 
CONFUSE         8 ! Makes monsters shoot at other monsters 
SCARE           9 ! Scares monsters 
DAMAGE         10 ! Causes damage to monsters 
PARALYZE       11 ! Monster can't move 
RECHARGE       12 ! Recharge an ITEM 
FLOAT          13 ! Remove an object's weight 
ANALYZE        14 ! Discover object's properties 
ZOOM           15 ! Eagle-Eye's view of the world

!
! WEAPON CLASSES
!
[OBJECT CLASS: WEAPON]
BLUNT           0
EDGED           1
MISSILE         2

!
! VEHICLE CLASSES
!
[OBJECT CLASS: VEHICLE]
WALKING         0  ! Same as walking, no help at all.
MOUNTED         1  ! Mounted
ATV             2  ! All Terray Vehicle
LOWFLYER        3  ! Not over mountains or deep water
MIDFLYER        4  ! Not over mountains, but yes over water
HIGHFLYER       5  ! Over mountains and water
RAFT            6  ! Low water only
BOAT            7  ! Deep water only

!-------------------------------------------------------------------------
!
! OBJECT MODIFIERS:
!
! Every object has a set of 5 'generic' attributes which have different
! meaning depending on the object's type.  These attributes are named
! m0 through m4, but this section allows you to assign specific names to
! the attributes.
!
! For example, a WEAPON may use the attributes as follows:
!
!  object.m0 = # of HANDS needed to hold the weapon (0, 1 or 2)
!  object.m1 = RANGE of the weapon (how many squares away can it hit)
!  object.m2 = DAMAGE done during battle (deducted from monster's hit points)
!  object.m3 = Type of AMMUNITION used by the weapon (if any)
!  object.m4 = not used for weapons
!
! Thus, the following definitions are made below:
!
!   .M0 = HANDS
!   .M1 = RANGE
!   .M2 = DAMAGE
!   .M3 = AMMONEEDED
!
! Which means that your script can have the line:
!
!   if player.weapon.hands > 2 then
!     writeln( "That weapon was made for an octupuss, which you are not.." );
!     ..
!
! instead of
!   
!   if player.weapon.m0 > 2 then
!     writeln( "That weapon was made for an octupuss, which you are not.." );
!     ..
!
! NOTE: The names listed below are 'aliases' for the real names m0 through m4,
! which exist for all objects.  No attempt is made to verify that the alias
! you have used is 'valid' for the object's type.  Thus, the following line
! is also equivalent to the two lines in the example above:
!
!   if player.weapon.ac > 2 then
!     writeln( "That weapon was made for an octupuss, which you are not.." );
!     ..
!
! because the alias 'ac' is an alias for m0, the same as the alias 'hands'.
!
[OBJECT MODIFIERS]

! Object Type: FOOD
!          0   Is not used
UNITS      1 ! If magical, how many units are affected
PERMANENT  2 ! If magical, how long does effect last? (0=one day, 1=permanent)
!          3   Is not used
!          4   Is not used

! Object Type: WEAPON          
HANDS      0 ! # of hands needed to use the weapon
RANGE      1 ! Range of this weapon
DAMAGE     2 ! Damage done when using this weapon.
AMMONEEDED 3 ! Type of ammunition needed (See AMMOTYPE below..)
!          4   Is not used

! Object Type: AMMO            
AMMOTYPE   0 ! Code that differentiates one ammunition from another
RANGE      1 ! Range of this ammunition
DAMAGE     2 ! Extra Damage (in addition to the weapon's normal damage)
!          3   Is not used
!          4   Is not used

! Object Type: ARMOR          
AC         0 ! Armor Class of the armor
ACTYPE     1 ! Armor Type (not currently implemented)
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: SHIELD          
AC         0 ! Armor Class of the shield
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: AMULET          
CHARGES    0 ! Number of times this item can be used
UNITS      1 ! If magical, how many units are affected
PERMANENT  2 ! If magical, how long does effect last? (0=one day, 1=permanent)
!          3   Is not used
!          4   Is not used

! Object Type: RING            
CHARGES    0 ! Number of times this item can be used
UNITS      1 ! If magical, how many units are affected
PERMANENT  2 ! If magical, how long does effect last? (0=one day, 1=permanent)
!          3   Is not used
!          4   Is not used

! Object Type: POTION         
!          0   Is not used
UNITS      1 ! If magical, how many units are affected
PERMANENT  2 ! If magical, how long does effect last? (0=one day, 1=permanent)
!          3   Is not used
!          4   Is not used

! Object Type: SCROLL         
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: STAFF          
CHARGES    0 ! Number of times this item can be used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: CHEST          
LOCKTYPE   0 ! Type of lock on the chest (0=None, 1+=KEYTYPE needed)
TRAPTYPE   1 ! Type of trap on the lock. 0=No trap, 1=poison,2+=bomb trap)
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: KEYS           
KEYTYPE    0 ! Type of lock that the key opens
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: GEMS           
CHARGES    0 ! Number of times this item can be used
UNITS      1 ! If magical, how many units are affected
PERMANENT  2 ! If magical, how long does effect last? (0=one day, 1=permanent)
!          3   Is not used
!          4   Is not used

! Object Type: BOOK           
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: GOLDSACK       
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: TORCH          
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: LANTERN         
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: ROPE           
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: HOOKS          
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: MIRROR         
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: SIGN           
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

! Object Type: VEHICLE        
!          0   Is not used
!          1   Is not used
!          2   Is not used
!          3   Is not used
!          4   Is not used

!
! WORLD DENSITIES
!
! These values are used to represent the landscaping density, and are
! used by the game driver to determine where a player can go, whether
! walking or riding a vehicle.  The values between 0 and 15 are reserved
! for use by the game system, but you can add new values from 16 to 255.
!
! For example, you might use value 27 to indicate a block that is a 
! magical gate.  If you step on the gate at exactly midnight, you get
! transported somewhere.  You can then add some lines to the control
! script to check for midnight, and at exactly midnight verify if the
! character is standing on a landscape block with density 27.  If so,
! you would transfer the character to wherever you wanted to go.  
!
! Any density value over 15 is treated as a 0, which means that it is
! equivalent to LAND (i.e. the character can walk on it, but a raft or
! boat cannot).
!
[WORLD DENSITIES]
FLAT         0
ROUGH        1
VERY_ROUGH   2
HIGH         3
VERY_HIGH    4
WALL         5
! # 6 is reserved
LOW_WATER    7
ROUGH_WATER  8
DEEP_WATER   9
! # 10 through 15 are reserved
LOCKED_DOOR 16
HIDDEN_DOOR 17
! # 18 through 31 are reserved. You can use 32-255 for anything.

!
! OTHER TOKENS
!
! The rest of the tokens are just names associated with values.  They
! are not used internally by the game system, only by the scripts.  You
! may add any number of sections below, as long as the names are unique
! and different from the ones above.
!

!
! ENDGAME attribute values:  The object attribute 'endgame' can be set
! to a non-zero value to indicate that the object causes the end of the
! game when a certain action happens.  The value 1 indicates that the game
! should end when the player GETs the object.  The value 2 indicates that
! the game should end when the object is given to a quester.  (See the
! QUESTER script).  The value 3 means the game should end when the player
! USEs the object.  Values 4 through 15 are reserved for expansion.  The
! values from 16 to 255 may be used as you please.
!
[END-GAME VALUES]
END_ON_GET     1    ! Game ends if you GET this object       (OBJECT.SCR)
END_ON_GIVE    2    ! Game ends if you GIVE the object       (QUESTER.SCR)
END_ON_USE     3    ! Game ends if you USE/INVOKE the object (OBJECT.SCR)

!
! Some usefull constant values used for general purposes
!
[CONSTANTS]
FALSE         0   !
TRUE          1   !
NO            0   !
YES           1   !

