                      L.O.R.D. Cavern IGM Program Codes:
                     -- November 2003 --- Version 1.6 --
                      ==================================

This file lists the program codes for the new built in Random Happening
Program (RHP) system.  See LORDCAVE.TXT under the section [EXTRA SETUP
INFO] for how to install your RHPs into The L.O.R.D. Cavern.  Remember
that if you distribute your programs, please give me credit for writing
The L.O.R.D. Cavern!

Look at SAMPLE.RHP to see how these can be used.

SETUP.EXE now requires that RHPs use the extension .RHP, and remember
that this is an old DOS program, and files must be the classic 8.3
format with no spaces, example LORDCAVE.RHP .

The RHP language uses codes that have a @ on both sides.  Unless
otherwise notified, these codes will work with previous versions
of The L.O.R.D. Cavern.

  Example: @;@@PROGRAM@ LORDCAVE

  Example: @;@@VERSION@ 1.3a  -- For PRE-2002 RHP Scripts usage only.
  Example: @;@@VERSION@ 1.5  -- November 02, 2002 - Version 1.5
  Example: @;@@VERSION@ 1.6  -- November 2003 - Version 1.6 (final beta).
=================================================================

These are RHP properties, they tell the IGM various things about
the script.  Remember that these have a @;@ at the start!

@;@@PROGRAM@ xxxxxx  What program it's for, for LORDCAVE put
                        LORDCAVE (v1.4+)
@;@@VERSION@ xxxx    Version of program the script is compatible
                        with (v1.4+)
@;@@PERCENT@ xxx     Optional chance that RHP will run (v1.4+)
@;@@NAME@ xxxxxxxxx  Optional name for RHP (for SETUP), maximum
                        length is 50 characters (v1.4+)

@;@@SCRIPTVERSION@ xxxx  Optional. Use for Version number info
                     for your scripts.  {v1.6+}
-----------------------------------------------------------------

This set is just random commands.

@;@@VARIABLE1@ xxxxxxxxx  Gives a name to the given user variable
                          number.  If you define a name, it will show
                          up in the stats.  Covers VARIABLE1 - VARIABLE5.
                          Max length is 13 characters.
@;@                       Comment, everything on a line with this at the
                          front will be ignored (works in recording)
@CLEAR@                   Clear the screen (works in recording)
@MORE@                    Pause for key-press with "<MoRE>"
@DELAY@                   Small delay (250 or so milliseconds)
@END@                     Stop program and pause
@KILL@                    Stop program, pause, and kill player (player
                          is notified) (v1.3a+)
@KILLSAVE@                Same as KILL code, but factors in Fairy.
                          No fairy - player is killed, and notified.
                          Has fairy - (1) It saves them from death,
                          heals wounds, and leaves.  (2) It is on
                          "strike", so player is killed and notified.
                          The Fairy decision is made randomly by the
                          IGM:  "Save player" or "Go on Strike".
           ( RHPTest 1.2+, Lord Cavern v1.5+, Outlands Tavern v1.4+,
             Gateway v1.1+, and Forest Outhouse v2.01+. )

@EXIT@                    Stop program, pause, and exit to LORD (v1.3a+)
@STATS@                   Shows the player's stats (v1.4+)
@RUNRHP@ xxxxxxxx.xxx     Run an external RHP program.  Does not return
                          to first program. (v1.4+)
-----------------------------------------------------------------

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 (on-screen, when file is displayed.)
@NEWSEND@   Stop writing to LOGNOW.TXT.
-----------------------------------------------------------------

The following two sets can be used in Mail and News recordings.

  The next set is for designating sections to go to.

  @#xxxxxxxx                Section designation, no maximum length
  @GOTO@ @#xxxxxxxx         Go to section xxxxxxx after this command

  The one in this section is for writing lengths of spaces.

  @SPACE@ x                 Writes x spaces to screen/file
-----------------------------------------------------------------

This set is for testing existing information and can be used in
Mail 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)
Example @IFNOT@ MAGIC `9Good job! (if player is not a Magician, 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.  Condition
                   can have math in it (see variables section). (v1.3a+)

@IFNOT@ condition command  Test condition, if False, do command.
                   Command can be any RHP @ command or one line text.
                   Condition can have math in it (see the Variables
                   section). (v1.4+)

Usable conditions for @IF@ and @IFNOT@ statements:
--------------------------------------------------
 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 marriages 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+)
 HEALED     : returns if player is healed (v1.4+)
 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
----------------------------------------

 BARDSONG   : Returns if player has heard Bard Sing in Inn.
              (Lordcave v1.5+, RHPTest 1.2+)
 FLIRTED    : Returns if player has Flirted With another Player yet.
              (Lordcave v1.5+, RHPTest 1.2+).
 SETHVIOLET : Returns if player has Flirted with Violet or Seth.
              (Lordcave v1.5+, RHPTest 1.2+)
 SEENMASTER : Returns if player has Seen Master yet.
              If True, player LOST a master fight challenge.
              And is not allowed to do another challenge that day.
              (Lordcave v1.5+, RHPTest 1.2+)
 SEENDRAGON : Returns if player has Seen the Red Dragon yet.
              (Lordcave v1.5+, RHPTest 1.2+)
-----------------------------------------------------------------

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    : Defense Points.
 DEFENSE    : Defense Points      {LORDCAVE v1.5+, RHPTest v1.2+}
 STRENGTH   : Strength Points
 EXPERIENCE : Experience Points
 LAYS       : Lays
 SKILL      : Current skill type points amount
 HITPOINTS  : Current HitPoints
 HITMAX     : Max HitPoints
 GEMS       : Gems
 GOLD       : Gold in hand
 BANK       : Gold in bank
 CHARM      : Charm
 WEAPON     : Weapon number  { Supports #16-20. v1.5a+ }
 ARMOUR     : Armour number  { Supports #16-20. v1.5a+ }
 LEVEL      : Player's level                  (v1.3c+)
 KILLS      : Number of player kills          (v1.3c+)
 ALLGOLD    : Total amount of gold            (v1.4+)
 WINS       : Number of times player has won  (v1.4+)
----------------------------------------
 SKILLUSE   : Skill Usage Points amount, for current Skill.
              (Lordcave v1.5+, Rhptest v1.2+)
============================================================

ALLGOLD can only be displayed in a script, using @*@ALLGOLD@*@
in a text statement.  LEVEL, CLASS, and WINS are display-only
variables, which can't be set by the script writer.
==================================================================

The following set is for prompting for Input (from player).  The
single character section is used to act on the Input data.  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.  You MUST
                      have @##C and @##D sections later in script.)

@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.

You can also do one math operation (/,*,+,-) in a line. (1.4+)

NEW: Putting *LEVEL multiplies the number times the player's level.
     Works best if you include a +/-. Ex. @GOLD@ +500*LEVEL  - would
     add 6,000 Gold to Gold in Hand, for Level 12 player.

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)
Example: @GOLD@ 6*GEMS         (adds 6 times the player's gems to
                                gold) (1.4+)
-------------------------
Example: @SKILLUSE@ +1   (Adds 1 to current Skill's Uses)
Example: @SKILL@ -1      (Deletes 1 skill point, of current class)

@SEARCH@ x      L.O.R.D. Cavern searches (1)
@FOREST@ x      Forest Fights ($)
@FIGHTS@ x      Player fights ($)
@KIDS@ x        Kids  ($ increments number by 1, ignores x)
@DEFENCE@ x     Defence ($)
@DEFENSE@ x     Defense ($)          (Added in July 2002)
@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 number by 1, ignores x)  {See Note}
@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 (1:1.3c)
--------------------

@VARIABLE1@ x   RHP variable 1 for math, is forgotten after RHP is done
@VARIABLE2@ x   RHP variable 2 for math, is forgotten after RHP is done
@VARIABLE3@ x   RHP variable 3 for math, is forgotten after RHP is done
@VARIABLE4@ x   RHP variable 4 for math, is forgotten after RHP is done
@VARIABLE5@ x   RHP variable 5 for math, is forgotten after RHP is done
--------------------

@SKILLUSE@ x    For current Skill's Use Points. x - Set field to
                what X is.  ($) - Increments field by 1.  {*SEE NOTE*}
                ($ increments number by 1, ignores x)

Other examples:
  @WEAPON@ - Weapon number.  Changes player's weapon name to one used by
             Skeleton event in L.O.R.D. Cavern IGM.  Weapon # is NOT
             change-able by script.
  @ARMOUR@ - Armour number.  Changes player's armour name to one used by
             Skeleton event.  Armour # is NOT change-able by script.
  @ARMORNUM@  - v2.15+ only. Armour Number - normal spelling.
  @ARMOURNUM@ - v2.15+ only. Armour Number - Old English spelling..
  @WEAPONNUM@ - v2.15+ only. Weapon Number.

             Covers item numbers 1-20. Default name coverage for any
             unknown Weapon/Armour using item # above 20.
              (LordCave v1.5b+, RHPTest 1.2b+)
=======================================================================

SKILL Points/Skill Use Points Note:  Through v4.00x, LORD limited the
Skill points, and Use Points, to 40 points maximum per Skill class.
v4.02+ allows IGMs to award Skill Points, or Skill Use Points, up to
100, but LORD itself still maintains the 40-point limit.

Since pre-v4.02 LORD versions only handled up to 40 Skill/Skill Use
points, usage of @SKILL@ and @SKILLUSE@ in mail*.dat files *WOULD*
result in either one being reset by LORD, when it re-assumed control
of the player, to 0-40 range values.  And if you are using post-v4.02
LORD versions, they handle skill info in Mail files the same way.

So it is best to AVOID using SKILL or SKILLUSE in a mail file,
unless you are prepared to be blamed by irate players who've lost
hard-earned skill points as a result of your mail message(s).

(Anyone who uses Sherwood Forest LORD IGM has seen this exact
situation occur to their characters that HAD skill/skill use values
above 40.  There are other LORD IGMs that will do likewise -- Lord
Wheel, Free World, etc.)
=====================================================================

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, it's taken else one is given.(v1.3a+)
@HORSE@       Changes if user has a Horse.  Takes no parameters.  If
              user has a Horse, it's taken else one is given. (v1.3a+)
@SEX@         Changes user's sex.  Takes no parameters. (v1.3a+)
@ARMOUR@      Changed!  Changes Armour Name to built in name (same as in
              The Skeleton Happening) (v1.3a+, changed v1.3d+)
@WEAPON@      Changed!  Changes Weapon Name to built-in name (same as in
              The Skeleton 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+)
@HEAL@        Heals the player.  (v1.4+)
----------------------------------------

    For LordCave v1.5+, RHPTest v1.2+ usage:
@BARDSONG@       Indicates whether player has have heard Bard Sing.
@FLIRTED@        Indicates whether player has Flirted with Player yet.
@SETHVIOLET@     Indicates whether player has Flirted with either
                 Violet or Seth Able.
------------
@SEENMASTER@     Indicates whether player has Seen their Master yet.
@SEENDRAGON@     Indicates whether player has Seen the Red Dragon yet.
    -- Neither indicates WHAT happened during meeting, just that there
    was one with either Training Master or The Red Dragon.
-----------------------------------------------------------------

Variables like these work like the older LORD style codes, you put them
in a string to Output, and they get replaced by the corresponding value.
Place the word you want in between @*@ like so:

  Example: `4Hello, @*@NAME@*@!

These all require L.O.R.D. Cavern v1.4+ in order to work:

ALLGOLD    : Player's total gold (In Hand + In Bank)
ARMOUR     : Player's Armour Name (same as `a)
BANK       : Player's Bank Gold
CHARM      : Player's charm
CLASS      : Player's class (eg. "Death Knight")
DEFENCE    : Player's defense points
DEFENSE    : Player's defense points   (v1.5+)
EXPERIENCE : Player's experience
FIGHTS     : Player's Human Fights left
FOREST     : Player's Forest Fights left
GOLD       : Player's gold on hand
HITPOINTS  : Player's current hitpoints
HITMAX     : Player's maximum hitpoints
KILLS      : Player's number of player kills
KIDS       : Player's number of kids
LAYS       : Player's number of lays
LEVEL      : Player's level
NAME       : Player's name (same as `n lord code)
MARRIED    : Player's Spouse's name (same as `m)
STRENGTH   : Player's strength
SKILL      : Player's skill level for current class
SEARCH     : Player's Cave Searches left
VARIABLE1  : RHP variable 1
VARIABLE2  : RHP variable 2
VARIABLE3  : RHP variable 3
VARIABLE4  : RHP variable 4
VARIABLE5  : RHP variable 5
WEAPON     : Player's Weapon Name (same as `w)
WINS       : Number of times player has won
-------------------------
SKILLUSE   : Skill Use Points for current Skill. {v1.5+}
------------------------------------------------------------------

ARMORNUM   : Armour Number.
ARMOURNUM  : Armour Number.  Alternative spelling.
WEAPONNUM  : Weapon Number.
             {These 3 require:  LordCave v1.5b+, RHPTest 1.2b+}
=======================================================================

Notes for RHPTest v1.2+, the November 2002 LORD IGM releases, and
for Forest Outhouse v2.10+:  (Note: Forest Outhouse v2.20 release
is scheduled for November 2003.)

Note: Old copies of these CODES.TXT files referred to @FIGHT@
code for Forest Fights.  It is actually @FIGHTS@, so be to sure
to use the ending 's'.
----------------------------------------

CLEANMODE - Used in script to do one set of commands if LORD is
    in Clean Mode.  Second set done if LORD is in normal mode.
    Here are two examples of how to use it:

@IF@ CLEANMODE `1You're naughty!
-- If LORD is in clean mode, it displays the "You're naughty" phrase
on screen.  Can also be used with the @GOTO@ command, etc.

@IFNOT@ CLEANMODE <your statement>
-- If Clean mode NOT in use, then <your statement> content is
displayed on-screen.  Usable with @GOTO@ command, etc.

----------------------------
@IFNOT@ note:  All variables that can be used with @IF@ may also be
used with @IFNOT@.
---------------------------------------------------------------------

Usage of the @VARIABLEx@ Codes:  07/16/2002
    The @VARIABLE1@ through @VARIABLE5@ codes may be used in The
L.O.R.D. Cavern, Outlands Tavern, and The Gateway to store math
computation data that are multi-step.  IOW, the standard RHP scripts
easily handle x*y type mathematics.  But something like A*B/C would
require two separate math computation statement lines in a script.

    You store data in the five VARIABLE codes while getting to your
final result for complex math.   {Revised 06-19-2003}

To code GOLD = LEVEL*2*GEMS would be done like this:
  Statement #1: @VARIABLE1@ =0    (Presets variable #1 for data handling)
  Statement #2: @VARIABLE2@ =0    {Presets variable #2 for data handling}
  Statement #3: @VARIABLE1@ LEVEL*2         {Stores result of Level * 2}
  Statement #4: @VARIABLE2@ VARIABLE1*GEMS  {Stores result of Variable1 * Gems}
  Statement #5: @GOLD@ VARIABLE2            {Assign Variable2 to Gold}

  The result of @VARIABLE1@*GEMS is assigned to the @GOLD@ variable.

Notes:  Do not include blanks between values in the math statements.
        You need one blank space before the = sign.
        With statement #5, you may need to include the = sign to get
        such commands to work.
---------------------------------------------------------------------

The following codes can be put anywhere in a line, even in Mail and News
recording.  They are case sensitive, and will output the correct case if
they're at the beginning of a sentence.

`n  Put player's name
`a  Put player's Armour Name
`w  Put player's Weapon Name
`m  Put player's Spouse's name if married (v1.3a+)
`l  Do NOT perform line feed (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 possessive (his/her)
`]  Put player's opposite sex possessive (his/her)
`<  Put player's sex (him/her) (v1.3a+)
`>  Put player's opposite sex (him/her) (v1.3a+)
-------------------------
      Pre-v1.5-based RHP scripts will have to be rechecked if these
      two codes are used.  IGM was inserting "his/her" incorrectly.
          v1.5b beta - him/her usage is restored.
==========================================================================

The following LORD text color codes can also be used:

`1 dark blue            `2 dark green       `3 dark cyan
`4 dark red             `5 dark violet      `6 brown
`7 gray                 `8 dark gray        `9 light blue
`0 light green          `! light cyan       `@ light red
`# light violet         `$ yellow           `% white
-----------------------------------------------------------------

Note: LORD Color Codes section provided by
      Gary Hartzell - gary.hartzell@verizon.net
------------------------------------------------------------

                   June 2003 RHP Language Changes Summary:
1) Corrected error in handling of the sex gender codes <,>.  If
   player is female, script processes the `< code and inserts "her"
   on-screen.  If male, "him" is written. For female player, use of
   the `> code inserts "him" on-screen. The male player sees "her"
   on-screen.  06/18/03 Note.
2) Fixed omission in earlier IGM version releases of GEMS@*@ usage.
   When used, replaces value of @GEMS@ with the LORD stat's value.
3) Created/tested new RHP Codes: ARMORNUM, ARMOURNUM, WEAPONNUM,
   and SCRIPTVERSION.
4) Fixes done to RHP Language handling of VARIABLEx codes.
   They now support lower boundary of -2 billion.
5) Enabled use of various Boolean-type VARs with IF commands.
   Ex. @VARIABLE1@ SKILL*2
       If SKILL is 25 points, then 50 is assigned to the code.
6) KIDS Code now allows adoption, via script, of Kids up to the
   LORD maximum value of 32,000 kids.
7) These RHP Codes are usable with "@VARIABLE1@ FEMALE*2" type commands
   now.  In this context, they are for use with @IF@ commands or in
   assigning their respective value to the VARIABLE code being used.

   Example: If player is female, it multiplies FEMALE's value (5) by 2,
            and assigns result (10) to VARIABLE1.

   FEMALE - value is 5.  FIGHTER - value is 1.  MAGIC - Value is 2.
   THIEF - value is 3.  ARMORNUM, ARMOURNUM, and WEAPONNUM number codes -
   Substitutes the player's item number.
   =====================================

8) JULY 2003 notes:  Usable with VARIABLE codes in math statements,
   as of 07/02/2003:  MALE, FEMALE, HORSE. FLIRTED, BARDSONG, SEENMASTER,
   SEENDRAGON, SPIRITS, FAIRY, WEIRDEVENT, and SETHVIOLET codes.

   If player is Male, value is 1. If female, value is 2.

   Used 0/1 value for Horse, Flirted, BardSong, SeenMaster, SeenDragon,
   Spirits, Fairy, WeirdEvent, and SethViolet.  If code/stat is
   True/activated, its value will be 1.

   ** Requires use of betas, dated July 2003 or later, of each IGM or
   of RHPTest.  Usable with Forest Outhouse 2.16+, RHPTest 1.2c+, The
   Gateway v1.2b+, LORD Cavern v1.5c+, and The Outlands Tavern v1.4b+
   betas.
=================================================================

Codes.txt created by Jason Brown - jmbrown@pcisys.net

CaveCode.txt is copyright 2002-2003 by Jason Brown and Donald Tidmore.

Donald Tidmore, author.  Adapted from Robert Fogt's Outhouse IGM.
Email: ktidmore@bellsouth.net.  OR donald.tidmore@usa.net.
       donald.tidmore@fidotel.com
---------------------------------------------------------------------

Last Revision:  November 07, 2003 at 09:43 pm.

                { LORD Cavern IGM Docs }

