This file lists the program codes for the new built in Random Happening
Program (RHP) system.  See LORDCAVE.DOC under the section [EXTRA SETUP
INFO] for how to install your RHPs into The LORD Cavern.  Remember
that if you distribute your programs, please give me credit for writing
The LORD Cavern!
                                        
Look at PROGRAM.SMP to see how these can be used.

The RHP language uses codes that have a @ on both sides.
New codes are indicated with a *.  Unless otherwise notified, codes will
work with previous versions.

This first set is just normal commands with no parameters.
@;@      Comment, everyting on a line with this at the front will be ignored
         (works in recording)
@CLEAR@  Clear the screen (works in recording)
@MORE@   Pause for keypress with "<MoRE>"
@DELAY@  Small delay (250 milliseconds)
@END@    Stop program and pause
@KILL@   Stop program, pause, and kill player (player is notified) (v1.3a+)
@EXIT@   Stop program, pause, and exit to LORD (v1.3a+)

This set is for writing to a player's MAIL?.DAT and LORD's LOGNOW.TXT.
@MAIL@      Start writing to mail
@MAILEND@   Stop writing to mail
@NEWS@      Start writing to LOGNOW.TXT
@NEWSLINE@  Stop writing to LOGNOW.TXT and add a line "-=-=-=-" centered
@NEWSEND@   Stop writing to LOGNOW.TXT

The following two sets can be used in mail and news recordings.

The next set is for designating setions to go to.
@#xxxxxxxx         Section designation, no maximun length
@GOTO@ @#xxxxxxxx  Go to section xxxxxxx after this command

The one in this section is for writing lengths of spaces.
@SPACE@ x  Write x spaces to screen/file

This new set is for testing existing information and can be used in main
or news recording.
Example: @IF@ FEMALE @GOTO@ @#Help (if player is female, goto section
                                    @#Help)
Example: @IF@ EXPERIENCE>0 @GOTO@ @#Help (if experience is greater than 0,
                                          goto section @#Help)
Example @IF@ FIGHTER `9Good job! (if player is a Death Knight, write
                                  `9Good job! to file/screen)
@IF@ condition command  Test condition, if true do command.  Command can
                        be any RHP @ command or one line text. (v1.3a+)
conditions:
 FEMALE     : returns if player is female
 MALE       : returns if player is male
 FIGHTER    : returns if player is currently a Death Knight
 MAGIC      : returns if player is currently a Magic User
 THIEF      : returns if player is currently a Thief
 HORSE      : returns if player has a horse
 FAIRY      : returns if player has a fairy
 MARRIED    : returns if player is married, works with Violet and Seth
              Able marrages as well as player to player.
 SPIRITS    : *returns if player is in high spirits (v1.3c+)
 WEIRDEVENT : *returns if player will have a weird event in the forest
              (v1.3c+)
 x<y        : returns if number x is less than a number y
 x>y        : returns if number x is greater than a number y
 x<>y       : returns if x is not equal to y
 x=y        : returns if x is equal to y
Any number can be used as x or y or you can use player stats.
Player stats that can be used as x or y:
 SEARCH     : Cave searches
 FOREST     : Forest fights
 FIGHTS     : Player fights
 KIDS       : Kids
 DEFENCE    : Defence
 STRENGTH   : Strength
 EXPERIENCE : Experience
 LAYS       : Lays
 SKILL      : Current skill type amount
 HITPOINTS  : Current HitPoints
 HITMAX     : Max HitPoints
 GEMS       : Gems
 GOLD       : Gold in hand
 BANK       : Gold in bank
 CHARM      : Charm
 WEAPON     : Weapon number
 ARMOUR     : Armour number
 LEVEL      : *Player's level (v1.3c+)
 KILLS      : *Number of player kills (v1.3c+)

The following set is for prompting for input.  The single character
section is used to act on input.  The program runner acts on the first
matching section found, so don't use the same selections nested.
Example: @PROMPT@ CD (prompts for C and D selections, must be an @##C and
                      @##D sections later.)
@YESNO@        Prompt for Y/n, Y and N sections
@PROMPT@ xx..  Prompt for selections xx.., selections must be capitalized
               The first selection will be the default one
@RANDOM@ x     Random number between 1 and x, each number a section
@##x           Single character section, can be called with @GOTO@

The following set has some special properties.  If you put a = before the
number x, it makes that attribute equal to x.  If you put %, it adds /
subtracts x% of the existing attribute to the attribute.  Ones marked with
a $ can be used in mail without the = option and may just increment the
attribute by 1.  Player is notified with a 'You LOSE/GAIN x <type>!' in
both mail and on screen, except not in mail for those that just increment.
NEW: Putting *LEVEL mulitpies the number times the player's level
Example: @EXPERIENCE@ %-15 (Subtracts 15% of experience)
Example: @GOLD@ =0 (Sets gold in hand to 0)
Example: @EXPERIENCE@ 4*LEVEL (Adds 4 times the player's level of
                               experience) (v1.3c+)
@SEARCH@ x      LORD Cavern searches
@FOREST@ x      Forest fights $
@FIGHTS@ x      Player fights $
@KIDS@ x        Kids $(increments number by 1, ignores x)
@DEFENCE@ x     Defence $
@STRENGTH@ x    Strength $
@EXPERIENCE@ x  Experience $
@LAYS@ x        Lays $(increments number by 1, ignores x)
@SKILL@ x       Current Skill type (if resulting number is above 40 the
                Skill value is set to 40, no uses are given) $(increments
                numer by 1, ignores x)
@HITPOINTS@ x   Current HitPoints
@HITMAX@ x      Max HitPoints $
@GEMS@ x        Gems
@GOLD@ x        Gold in Hand $
@BANK@ x        Gold in Bank $
@CHARM@ x       Charm $(increments number by 1, ignores x, = option can
                be used)
@KILLS@ x       *Number of player kills (v1.3c+)

These codes are special player value changers that don't act like the
earlier ones.  They cannot be used in mail.  Player is NOT notified.
@FAIRY@       Changes if user has a fairy.  Takes no parameters.  If user
              has a fairy, its taken else one is given.(v1.3a+)
@HORSE@       Changes if user has a horse.  Takes no parameters.  If user
              has a horse, its taken else one is given. (v1.3a+)
@SEX@         Changes user's sex.  Takes no parameters. (v1.3a+)
@ARMOUR@ x    Changed!  Changes armour name to built in name (same as in
              The Skelleton Happening) (v1.3a+, changed v1.3d+)
@WEAPON@ x    Changed!  Changes weapon name to built in name (same as in
              The Skelleton Happening) (v1.3a+, changed v1.3d+)
@WEIRDEVENT@  Changes if user will have a weird event in the forest, that
              is if they will find gems when entering. (v1.3c+)
@SPIRITS@     Changes the player's spirits, from high to low or from low
              to high. (v1.3c+)

The following codes can be put anywhere in a line, even in mail and news
recording.  They are case sensitive!
`n  Put player's name
`a  Put player's armour name
`w  Put player's weapon name
`m  Put player's spouce's name if married (v1.3a+)
`l  Do not linefeed (put at the end of a line)
`s  Put player's sex (he/she)
`o  Put player's opposite sex (he/she)
`[  Put player's sex possesive (his/her)
`]  Put player's opposite sex possesive (his/her)
`<  Put player's sex (him/her) (v1.3a+)
`>  Put player's opposite sex (him/her) (v1.3a+)
