Mud20/accounts/
Mud20/accounts/c/
Mud20/accounts/f/
Mud20/accounts/k/
Mud20/accounts/s/
Mud20/accounts/t/
Mud20/area_current/
Mud20/area_current/newareas/
Mud20/bin/
Mud20/clans/
Mud20/gods/
Mud20/old-sources/
Mud20/player/
Mud20/player/a/del/
Mud20/player/b/
Mud20/player/b/bak/
Mud20/player/b/del/
Mud20/player/f/
Mud20/player/f/bak/
Mud20/player/f/del/
Mud20/player/k/
Mud20/player/k/bak/
Mud20/player/k/del/
Mud20/player/k/dmp/
Mud20/player/m/
Mud20/player/m/bak/
Mud20/player/o/
Mud20/player/o/bak/
Mud20/player/p/
Mud20/player/s/
Mud20/player/s/bak/
Mud20/player/s/del/
Mud20/player/t/
Mud20/player/t/del/
Mud20/player/v/
Mud20/public_html/
Mud20/races/
Mud20/skilltables/
__MACOSX/Mud20/accounts/
__MACOSX/Mud20/accounts/c/
__MACOSX/Mud20/accounts/f/
__MACOSX/Mud20/accounts/k/
__MACOSX/Mud20/accounts/s/
__MACOSX/Mud20/area_current/
__MACOSX/Mud20/area_current/core_areas/
__MACOSX/Mud20/area_current/helps/
__MACOSX/Mud20/area_current/newareas/
__MACOSX/Mud20/backups/
__MACOSX/Mud20/bin/
__MACOSX/Mud20/clans/
__MACOSX/Mud20/gods/
__MACOSX/Mud20/log/
__MACOSX/Mud20/old-sources/
__MACOSX/Mud20/player/
__MACOSX/Mud20/player/a/del/
__MACOSX/Mud20/player/b/
__MACOSX/Mud20/player/b/bak/
__MACOSX/Mud20/player/f/
__MACOSX/Mud20/player/f/bak/
__MACOSX/Mud20/player/f/del/
__MACOSX/Mud20/player/k/
__MACOSX/Mud20/player/k/bak/
__MACOSX/Mud20/player/k/del/
__MACOSX/Mud20/player/k/dmp/
__MACOSX/Mud20/player/m/
__MACOSX/Mud20/player/m/bak/
__MACOSX/Mud20/player/o/
__MACOSX/Mud20/player/o/bak/
__MACOSX/Mud20/player/p/
__MACOSX/Mud20/player/s/
__MACOSX/Mud20/player/s/bak/
__MACOSX/Mud20/player/t/del/
__MACOSX/Mud20/player/v/
__MACOSX/Mud20/public_html/
__MACOSX/Mud20/races/
__MACOSX/Mud20/skilltables/
#AREA Builder~
#AUTHORS Scandum~
#VERSION 4
#RANGES 100 100 100 100
#OLC_RANGES 999999 0
#FLAGS AFLAG_NEWHELPS|AFLAG_CONVERTED
#JUSTICE
$



#HELPS
0 BUILDER OLC~
Builder Help File~
{000}
{200}  [{178}A{200}] {300}Guidelines        {200}  [{178}B{200}] {300}Builder Agreements {200}  [{178}C{200}] {300}Grammar
{200}  [{178}D{200}] {300}The Game Editor   {200}  [{178}E{200}] {300}Mud Programs       {200}  [{178}F{200}] {300}Information Commands
{a}OLCGUIDELINES
{b}OLCTERMS
{c}GRAMMAR
{d}EDIT
{e}MPROGS000 'MUD PROGS'
{f}BUILDINFO
~

0 BUILDINFO~
Builder Informational Commands~
The following commands are used to gain information about an area and its
contents. These commands are available to the player(s) assigned the area, as
well as all GMs:
{a}ALIST
{b}ASTAT
{c}MLIST
{d}MSTAT
{e}MPSTAT
{f}MWHERE OWHERE
{g}OLIST
{h}OSTAT
{i}OPSTAT
{j}RLIST
{k}RSTAT
{l}RPSTAT
{m}WIZTIME
~

0 OLCGUIDELINES~
OLC Guidelines~
{200}* {078}Don't walk around in other builder's areas without their permission.
{200}* {078}Don't be annoying
{200}* {078}Don't write programs that might harm the test mud's performance or crash it.
{200}* {078}Don't use mpcommands or programs to enhance your immortal powers
{200}* {078}The area's theme must fit in with the campaign theme of the mud.
{200}* {078}Do not make references to the real world or situations, a few minor hints
  or satirical references in that direction are acceptable.
{200}* {078}Write descriptive descriptions, where the main focus should always be to
  describe the room, object or mobile in question, and not any actions taking
  place in it, or emotions that go through the reader. Try to avoid using
  lines like 'A horrifying orc is here.' since that'd be a human point of view,
  and someone playing an orc character might feel differently. We suggest descs
  ranging from 3 to 5 lines of text. If you do not enjoy writing them, consider
  getting a soft builder to write them for you.
{200}* {078}The area should have at least 1 good quest. If possible multiple quests.
  Also it's suggested to add some fun stuff, to liven things up, but don't
  make the mobs overly spamming.
{200}* {078}The area shouldn't be a leveling machine, this means that the mobs
  shouldn't be lined up waiting to be butchered. You must enter some sort of
  element of surprise, or another obstacle in it. This includes limiting the
  amount of mobiles, even making them spawn only when a quest is active.
{200}* {078}If your area does not meet up to this standard, you will be asked to edit
  it, or it will be edited for you.
~

0 OLCTERMS~
olcterms~
{178}
Builder Agreements

{200}* {300}When creating an area for the mud you agree that the administration has
  the right to use and modify the area as we see fit. Your submission for an
  area to this mud is irrevocable.
{200}* {300}You are credited with the creation of said area. And we will abide by an
  agreement to give credit where credit is due. If another creator builds the
  area joinly, or subsequently revises it, you will share the credit.
{200}* {300}You also understand and agree that the admins are not responsible for
  the safekeeping or return of your area. You are solely responsible to keep a
  safe copy of your area for your subsequent use. You are not entitled to any
  subsequent revisions of the area done by others.
{200}* {300}As this mud is a derivative of Diku and Merc, any areas created for it are
  also considered derivative code. YOU MAY NOT SELL, TRADE OR DISTRIBUTE YOUR
  AREA ELSEWHERE FOR PROFIT, else you will be in violation of the licenses for
  said code bases, as well as the Mud20 code.
~

0 GRAMMAR~
Grammar Rules For The Unenlightened; Or, How To Write Goodly~
{300}Don't use no double negatives Don't never use no triple negatives. No sentence
fragments Corollary: Complete sentences: important. Stamp out and eliminate
redundancy. Avoid cliches like the plague. All generalizations are bad.
Corollary: All statements must be specific. Never listen to advice. Take
care that your verb and subject is in agreement. A preposition is a bad
thing to end a sentence with. Down with categorical imperatives. Avoid those
run-on sentences that just go on, and on, and on, they never stop, they just
keep rambling, and you really wish the person would just shut up, but no,
they just keep going, they're worse than the Energizer Bunny, they babble
incessantly, and these sentences, they just never stop, they go on
forever...if you get my drift... Never contradict yourself always. You
should never use the second person. When dangling, watch your participles.
Never go off on tangents, which are lines that intersect a curve at only one
point and were discovered by Euclid, who lived in the sixth century, which
was an era dominated by the Goths, who lived in what we now know as
Poland... As Ralph Waldo Emerson once said, 'I hate quotations.' Excessive
use of exclamation points can be disastrous!!!!! Remember to end each
sentence with a period Don't use commas, which aren't necessary. Don't use
question marks inappropriately? Don't be terse. Don't obfuscate your theses
with extraneous verbiage. Never use that totally cool, radically groovy
out-of-date slang. Avoid tumbling off the cliff of triteness into the black
abyss of overused metaphors. Keep your ear to the grindstone, your nose to
the ground, take the bull by the horns of a dilemma, and stop mixing your
metaphors. Avoid those abysmally horrible, outrageously repellent
exaggerations. Avoid any awful aggravating antediluvian alliterations.
~

0 WIZTIME~
Wiztime~
{200}Syntax: wiztime [player]
{078}
WIZTIME echoes background processes as you execute them. With this mode active,
you can see the execution time of each command you make, dice rolls and check
results, as well as the lines of an executing mud program.

An admin can set this mode for another player by targeting the player.
~

0 EDIT~
The Game Editor~
{078}Mud20 features a complete menu-driven online editor, which allows you to create
an entire area - mobiles, rooms, and objects. The same engine also allows for
online creation and editing of races and deities for your setting. Using the
EDIT command with the proper arguments opens all these possibilities. 

While in an editor, available options for any given editor field will be given
by typing that editor field with no argument. For example, typing RACE with no
argument in the Mobile Editor will pull up a list of available races.
{000}
{200}  [{178}A{200}] {300}Editor Syntax Overview

{200}  [{178}B{200}] {300}Room Editor         {200}  [{178}C{200}] {300}Mobile Editor       {200}  [{178}D{200}] {300}Object Editor
{200}  [{178}E{200}] {300}Shop Editor         {200}  [{178}F{200}] {300}Inn Editor          {200}  [{178}G{200}] {300}Stable Editor
{200}  [{178}H{200}] {300}Help Editor         {200}  [{178}I{200}] {300}Area Editor         {200}  [{178}J{200}] {300}Reset Editor
{200}  [{178}K{200}] {300}Program Editor      {200}  [{178}L{200}] {300}Race Editor         {200}  [{178}M{200}] {300}God Editor
{a}'EDITOR SYNTAX'
{b}'ROOM EDITOR'
{c}'MOBILE EDITOR'
{d}'OBJECT EDITOR'
{e}'SHOP EDITOR'
{f}'INN EDITOR'
{g}'STABLE EDITOR'
{h}'HELP EDITOR'
{i}'AREA EDITOR'
{j}'RESET EDITOR'
{l}'RACE EDITOR'
{m}'GOD EDITOR'
~

0 'EDITOR SYNTAX'~
Game Editor Syntax~
{078}
  Syntax: edit room   [create|delete|dupe] [vnum]  Activates the room editor
  Syntax: edit mob    [create|delete|list] <vnum>  Activates the mobile editor
  Syntax: edit obj    [create|delete|list] <vnum>  Activates the object editor
  Syntax: edit shop   [create|delete|list] <vnum>  Activates the shop editor
  Syntax: edit inn    [create|delete|list] <vnum>  Activates the inn editor
  Syntax: edit stable [create|delete|list] <vnum>  Activates the stable editor
  Syntax: edit help   [create|delete|list] <name>  Activates the help editor
  Syntax: edit area   [check|assign|list]  [name]  Activates the area editor
  Syntax: edit reset                       [vnum]  Activates the resets editor
  Syntax: edit mprog  [stat]               <vnum>  Activates the program editor
  Syntax: edit oprog  [stat]               <vnum>  Activates the program editor
  Syntax: edit rprog  [stat]               <vnum>  Activates the program editor
  Syntax: edit race                        <name>  Activates the race editor
  Syntax: edit god                         <name>  Activates the deity editor
{-}EDIT
~

0 'RESET EDITOR'~
Reset Editor~
{200}Syntax: edit reset [room vnum]
{078}
The reset editor allows you to set where objects, mobiles and other elements
go in your area. Resets determine where items load at startup, and where they
reappear at every area reset. Without an argument, the editor begins to edit
the room you are in. You may optionally add the vnum of a room in your assigned
area to edit it. Once you are in the editor, you have the options to:

SET    - Creates a new reset. Add the number of an existing reset to add other
         resets below it.
DELETE - Deletes the reset number you target.
LIST   - Pulls up a list of the existing resets for the room you are editing.

Using the < and > keys will switch to the previous or next room's reset list
without having to exit the editor. Typing DONE exits the editor. 
{a}EDIT
{b}'RESET TYPES'
{c}INSTAROOM INSTAZONE
~

0 'RESET TYPES'~
Types of Resets~
Each type of reset has a specific symtax. The different types of resets are:

  {200}Mobile: {078}Loads a mobile into the specified room vnum.
  {200}Object: {078}Loads an object into the specified room vnum.
  {200}Door: {078}Sets the open and/or locked state of a door in the specified direction.
  {200}Equip: {078}Loads an object onto a mobile reset, equipped in the specified wear
    location. This reset overrides any LoadEQ field on the same wear location
    for the mobile, in order to customize specific instances of the NPC.
  {200}Carry: {078}Loads an object onto a mobile reset, carried in its inventory. This
    would be where you would set a shopkeepers inventory as well.
  {200}Content: {078}Loads an object into a container object's reset
  {200}Trap: {078}Sets a trap onto an object or door reset.
{-}EDIT
{a}MOBILERESET
{b}OBJRESET
~

0 MOBILERESET~
Mobile Resets~
{200}Syntax: set mobile <index number> <mobile vnum> <percentage>
{300}
This reset will load the specified mobile vnum into the room you are editing.
If you specify an existing reset index number, it will insert this reset to
load before the targeted reset. The percentage is the chance that the mobile
will load at startup and repop at each reset.
{-}'RESET TYPES'
{a}'RESET EDITOR'
~

0 OBJRESET~
Object Resets~
{200}Syntax: set object <index number> <object vnum> <percentage>
{300}
This reset will load the specified object vnum into the room you are editing.
If you specify an existing reset index number, it will insert this reset to
load before the targeted reset. The percentage is the chance that the object
will load at startup and repop at each reset.
{-}'RESET TYPES'
{a}'RESET EDITOR'
~

0 DOORRESET~
Door Resets~
{200}Syntax: set door <index number> <direction> <open|close|lock>
{300}
This reset will set the closed and/or locked state of a door in the specified
direction at each reset. If you specify an existing reset index number, it will
insert this reset to load before the targeted reset. Door resets will not take
place on a door that has been bashed or opened with the KNOCK spell, so long as
players are in the area.
{-}'RESET TYPES'
{a}'RESET EDITOR'
~

0 CARRYRESET~
Carry Resets~
{200}Syntax: set carry <mob index> <object vnum> <percentage>
{300}
This reset will load the specified object vnum onto a mobile. You must target 
an existing mobile reset's index number. The percentage is the chance that the
object will load at startup and repop at each reset.
{-}'RESET TYPES'
{a}'RESET EDITOR'
~

0 EQUIPRESET~
Carry Resets~
{200}Syntax: set carry <mob index> <object vnum> <percentage> <equip loc>
{300}
This reset will load the specified object vnum onto a mobile. You must target 
an existing mobile reset's index number. The percentage is the chance that the
object will load at startup and repop at each reset.
{-}'RESET TYPES'
{a}LOADEQ
{b}'RESET EDITOR'
~

0 CONTENTRESET~
Content Resets~
{200}Syntax: set content <obj index> <object vnum> <percentage>
{300}
This reset will load the specified object vnum into a object. You must target 
an existing container object reset's index number. The percentage is the chance
that the object will load at startup and repop at each reset.

The object you place this reset into must be some sort of container, sheath,
quiver, or spellpouch.
{-}'RESET TYPES'
{a}'RESET EDITOR'
~

0 TRAPRESET~
Trap Resets~
{200}Syntax: set trap <obj or door index> <trap vnum>
{300}
This reset will set a trap upon an existing object or door reset. The trap will
load armed and hidden from plain view. To control what triggers the trap, you
should configure the trap object in the object editor before setting its reset.
{-}'RESET TYPES'
{a}'RESET EDITOR'
{b}'OBJECT EDITOR'
~

0 INSTAROOM INSTAZONE~
Instaroom & Instazone~
{200}Syntax: instaroom
{200}Syntax: instazone
{078}
INSTAROOM and INSTAZONE provide an easy way to set the resets for an area.

INSTAROOM reads all the current positions, placement and conditions of all the
mobiles and objects in the room you are in, and installs resets for the room.

Any objects equipped on a mobile become the mobile's equipment. Any objects
carried by a mobile are reset as inventory items. Any objects placed in a
container are reset in the container object. Door resets are made for the
current state of any doors in the room.

INSTAZONE does the same for the entire area, and installs the resets for the
entire area. This is not always the best solution, however, as wandering NPCs
will end up being reset wherever they currently stand.

Note that any existing conflicting resets are overwritten.
~

0 'HELP EDITOR'~
Help Editor~
{200}Syntax: edit help   [create|delete] ['keyword']
Syntax: edit help   <'keyword'>
Syntax: edit help list  ['area name']
{078}
The room editor allows you to create, delete, or edit existing rooms using the
editor menu. To select, create or delete a helpfile with a keyphrase (for
example, MAGIC MISSILE), you must enclose the phrase in quotes.

CREATE - Creates a new helpfile in the named area with the given keyword
DELETE - Deletes the chosen helpfile.
LIST   - Pulls up a list of the existing helps in the area you are in. Admins
         can select any area to list the helps for that area.

Typing DONE exits the editor, and saves the area the help file is in.
Typing CANCEL exits the editor without saving the help; if you need to revert
  to the old help entry, you can do so with a COPYOVER.
{a}EDIT
{b}HCREATE
{c}HLIST
~

0 HLIST~
Hlist~
{200}Syntax: hlist [area name]
{078}
HLIST displays a list of all the helps for the named area. Leaving no argument
lists the helps for the area you are presently in. It is a shortcut for typing
the 'edit room list' command.
~

0 HCREATE~
Creating a Helpfile~
{300}The settings for a helpfile include:

  {200}Keywords: {078}Enter any keywords or phrases that should trigger the help. Phrases
  must be enclosed in quotes, else they are entered as separate keywords.
  {200}Level: {078}The minimum level you must be to read a helpfile. This is usually set
  to 0, unless the helpfile is specifically for admins. If you create two helps
  of different levels with the same keywords, the highest level help available
  to the player will be triggered.
  {200}Title: {078}Sets the title of the helpfile. This title is displayed at the top of
  the displayed help, as well as on hyperlinks to the helpfile.
  {200}Desc: {078}Takes you to the text editor, where you can write the main body of the
  helpfile. Color codes here are highly restricted, and should be limited to
  accent color (200), text color (300), and boldface (178).
{-}EDIT
{b}'COLOR TAGS'
~

0 'ROOM EDITOR'~
Room Editor~
{200}Syntax: edit room   [create|delete] [vnum][vnum]
Syntax: edit room   [dupe] [vnum][vnum]
Syntax: edit room   <list>
Syntax: edit room   [vnum]
{078}
The room editor allows you to create, delete, or edit existing rooms using the
editor menu.

CREATE - Creates a new room. Not specifying a vnum after the command will use
the next empty vnum in your asigned vnum range. A range of rooms can also be 
given, and multiple rooms in that range will be created.
DELETE - Deletes the chosen room and all links to and contents in it.
DUPE   - Will duplicate the room you stand in to the vnum or vnum range given.
LIST   - Pulls up a list of the existing rooms in your assigned area.

Typing EDIT ROOM with no argument edits the room you are presently in.
{a}EDIT
{b}RCREATE
{c}RSTAT
{d}RPSTAT
{e}RLIST
~

0 RLIST~
Rlist~
{200}Syntax: rlist
{078}
RLIST displays a list of all the rooms for the area you are in. It is a shortcut
for typing the 'edit room list' command.
~

0 RSTAT~
Rstat~
{200}Syntax: rstat [room vnum]
{078}
RSTAT shows you all the settings and stats for a given room vnum. Leave the
vnum blank to give you the stats of the room you are in.
~

0 RPSTAT~
Rpstat~
{200}Syntax: rpstat [room vnum]
{078}
RPSTAT lists the active mud programs for the room specified. Leaving the vnum
blank will list the progs for the room you are in.
~

0 RCREATE~
Creating a Room~
{300}The settings for a room include:

  {200}N,S,E,W,U,D: {078}Any cardinal direction will edit or create an exit in the given
  direction. (See below).
  {200}Name: {078}This is the name seen while standing in the room. Do NOT use color
  codes on a room name.
  {200}Desc: {078}Takes you to the text editor, where you can write the description of
  the room as it is seen when you stand in the room. Color codes may be used 
  here, and are in fact encouraged as they may add to the feeling and flavor 
  of a room.
  {200}Night: {078}Again places you in the text editor, and allows you to write another
  description that will be seen only at night. If you do not write a night
  description, then the normal description will be shown at night time.
  {200}Listen: {078}Allows you to write a description that is "heard", rather than seen
  when someone uses the LISTEN command, either inside the room, or from the 
  next room when they listen in the direction of your room.
  {200}Sect: {078}Sets the room sector of the room. Pick the closest type of terrain
  that matches the room. See below for a menu of room sectors to pick.
  {200}Flags: {078}Sets the room flags for the room. Any or all of these flags may be
  set on the room, as appropriate. See the menu of room flags below.
  {200}ED: {078}Sets extra descs for the room, which display to someone who uses the
  LOOK command with the keyword(s) set for the desc. 
{-}EDIT
{b}'SECTOR FLAGS'
{c}'ROOM FLAGS'
{d}'EXTRA DESCS'
{e}'COLOR TAGS'
{f}'EXIT FIELDS'
~

0 'COLOR TAGS'~
Color Tags in Text~
{300}You can use color tags to add color to text. A tag is a 3 digit number enclosed
in {}'s like so: {xxx}.

The following colors are achieved using the following tags:

{078}008 - Black on black text (ie, invisible)  {078}108 - {108}Visible black text
{078}018 - {018}Dark red                             {078}118 - {118}Bright red
{078}028 - {028}Dark green                           {078}128 - {128}Bright green
{078}038 - {038}Dark yellow (Brown)                  {078}138 - {138}Bright yellow
{078}048 - {048}Dark blue                            {078}148 - {148}Bright blue
{078}058 - {058}Dark magenta (Purple)                {078}158 - {158}Bright magenta
{078}068 - {068}Dark cyan                            {078}168 - {200}Bright cyan
{078}078 - {078}Light grey                           {078}178 - {178}Bright white
{078}
You can also use 300, which will use the viewer's default text color.
{a}EDIT
~

0 'EXIT FIELDS'~
Editing Exits~
{200}Syntax: <direction> <link> <room number> [both]
{200}Syntax: <direction> <delete> [both]
{200}Syntax: <direction> <desc> <short description>
{200}Syntax: <direction> <flag> <exit flags>
{200}Syntax: <direction> <key> <key vnum|-2>
{200}Syntax: <direction> <size> <size flag>
{078}
While in the room editor, you can type a direction to set, edit or delete exits
from that room. The choices for fields you can edit are:

<direction> LINK: Value is room vnum to link to. Add BOTH after the vnum to 
   create an exit in the reverse direction in the other room.
<direction> DELETE: Deletes the exit and all pointers to it. Add BOTH to delete
   the opposite exit from the other room.
<direction> DESC: Follow with a short description a player sees when looking
   in the direction of the exit.
<direction> NAME: Name for the exit (ex: double doors).
<direction> FLAG: List exit flags here to toggle them on or off for the exit.
<direction> KEY: Object vnum of key used to lock/unlock. Or use -2 for a door
   that can be locked/unlocked without a key (like a bar or latch).
<direction> SIZE: If set, then a creature of larger than the door size cannot
   enter the door.
<direction> CLIMBDC: If the CLIMB exit flag is set, this is the DC required
   to successfully climb to the next room.
<direction> DIST: If the JUMP exit flag is set, then this is the distance that
   must be traversed with a jump check to cross the exit. If the CLIMB flag is
   set, then this is the distance up/down to the next room.
{a}'ROOM EDITOR'
{b}'EXIT FLAGS'
~

0 'EXIT FLAGS'~
Exit Flags~
{300}The following are the possible flags for an exit, and the characteristics
of each:

  {200}Isdoor: {078}The exit has a door that can be opened/closed.
  {200}Closed: {078}The door is presently closed.
  {200}Locked: {078}The door is locked, and must be unlocked to open.
  {200}Hidden: {078}Requires a Search check to locate.
  {200}Pickproof: {078}The lock of the door cannot be picked.
  {200}Bashproof: {078}The door cannot be bashed open.
  {200}Magicproof: {078}The door cannot be opened with a Knock spell.
  {200}Climb: {078}Requires a CLIMB check to get to the next room.
  {200}Jump: {078}Requires a JUMP check to go to the next room.
  {200}Fly: {078}You must be flying to reach the next room.
  {200}Barred: {078}Door is barred, adds +5 to bash DC.
  {200}Passproof: {078}Cannot be passed by incorporeal creatures.
  {200}Magical_lock: {078}Wizard locked door, +10 DC to bash, impossible to pick.
  {200}Easy_pick: {078}Very low DC to pick lock.
  {200}Hard_pick: {078}Higher DC than normal to pick lock.
  {200}Amazing_pick: {078}Almost impossible DC to pick lock.
  {200}Weak_door: {078}Thin, fragile door - base DC 13 to bash.
  {200}Heavy_door: {078}Base DC 23 to bash, versus 18.
  {200}Iron_door: {078}Thick metal door - base DC 28 to bash.
  {200}Window: {078}Door can be seen through.
{a}'EXIT FIELDS'
{b}'ROOM EDITOR'
~

0 'EXTRA DESCS'~
Setting Extra Descs~
{200}Syntax: ed <keywords>
{078}
When you set an extra desc for a room, object or mobile, you choose one or more
keywords that a player will LOOK at to view the description. For example, if
the mobile is wearing a holy symbol, you might want to set a desc for that holy
symbol for the player to look at.

Once you've typed the ED command, followed by the keywords that will trigger
the desc, you will be taken to the text editor to write the desc.

When setting keywords, use logical words a player would use to look at. For
multi-word phrases, use single quotes around the phrase. For example, the above
mentioned holy symbol you might type "ed symbol holy 'holy symbol'."
{a}EDIT
~

0 'SECTOR FLAGS'~
Sector Flags~
{300}The following are the possible sector flags for a room, and the characteristics
of each:

  {200}Inside: {078}An indoor, lighted room. Sheltered from weather.
  {200}City: {078}An outdoor, lighted street. Use for any outdoor lighted area.
  {200}Road: {078}An outdoor, non-lit area that is solid and heavily traveled.
  {200}Field: {078}Grassy, mostly level outdor area. Not lighted at night.
  {200}Forest: {078}Any wilderness area that is outdoors and overgrown. Would also be
  used for jungles, etc.
  {200}Hills: {078}Low altitude, vegitated, low incline areas, lowlands and foothills.
  {200}Mountain: {078}Mostly barren, high altitude, rocky terrain with steep inclines.
  {200}Lake: {078}Calm water that requires a swim check to traverse on foot.
  {200}River: {078}A river, stream, or other shallow water that does not require a
  swim check to traverse.
  {200}Ocean: {078}Very deep, turbulent water that requires a swim check with penalties
  to traverse without a boat or other vessel.
  {200}Air: {078}Any room without surrounding walls or floor that requires flight or
  other means to stay aloft and traverse.
  {200}Desert: {078}Any dry, arid area with little moisture, will require more checks
  for food and drink and survival skills.
  {200}Lava: {078}Fiery, molten areas that will deal damage to those not resistant.
  {200}Ethereal: {078}Ethereal plane - requires etherealness to traverse.
  {200}Astral: {078}Astral plane - requires astralness to traverse.
  {200}Underwater: {078}Requires Water Breathing or Aquatic type to avoid drowning.
  {200}Underground: {078}An indoor, barren area with rock on all sides.
  {200}Deep_earth: {078}An indoor barren area inaccessible to astral travel, like the
  Underdark.
  {200}Swamp: {078}Any soggy, damp, marsh-like area.
  {200}Beach: {078}A humid, sandy area near a body of water.
  {200}Tundra: {078}A cold, frozen area with ice and snow which deals cold damage to
  those not protected against the elements or resistant to cold.
  {200}Barren: {078}A low-lying, rocky area devoid of plant life.
{a}EDIT
{b}RCREATE
~

0 'ROOM FLAGS'~
Room Flags~
{300}Any or all of these flags can be set on a room, and the room will take on the
characteristics of the flag:

  {200}Indoors: {078}Sheltered from weather and cannot see the weather.
  {200}Dark: {078}Cannot see in the room without darkvision.
  {200}Fog: {078}Vision is partially obscured and misty, those in room have concealment
  with a 25% miss chance.
  {200}Nomob: {078}Mobiles will not wander into this room. Mobiles can still enter the
  room by a prog, as can guards responding to trouble.
  {200}Noastral: {078}No one can teleport into or out of the room.
  {200}Storeroom: {078}Objects in the room save over a copyover or server reboot.
  {200}Nomagic: {078}Cannot cast or use any magical commands in the room. All temporary
  affects on a character are negated upon entering.
  {200}Private: {078}Only two characters can be in the room at once.
  {200}Safe: {078}Non-PVP room - no fighting or aggressive actions will happen.
  {200}Solitary: {078}Only one character can be in the room at a time.
  {200}Petshop: {078}Room is a petshop, PCs can buy pets in the room with the LIST
  command.
  {200}Norecall: {078}Word of Recall does not function in the room.
  {200}Morgue: {078}Newbies can purchase their corpse from this room.
  {200}Inn: {078}PCs recover 10x quicker when resting.
  {200}Nofloor: {078}PCs will fall into room in down direction when entering.
  {200}Noscry: {078}Room cannot be scried by any means. Arcane eyes cannot enter.
  {200}Nocover: {078}There's nowhere to HIDE without special abilities.
  {200}Noteboard: {078}Can view the noteboard from this room.
  {200}Ice: {078}Ground is covered with ice, requires Tumble checks to stay footed.
{a}EDIT
{b}RCREATE
~

0 'AREA EDITOR'~
Area Editor~
{200}Syntax: edit area   assign <character> [<start vnum> <end vnum>]
Syntax: edit area   check [name|fix|mobiles|rooms|objects]
Syntax: edit area   <list>
{078}
The area editor allows an admin to create a new area and assign it to a player,
and also to edit the settings and flags for the area you are editing.

ASSIGN - Creates a new area with the specified vnum range, and assigns it to
  a player. Only a full admin can assign new areas. Areas should be assigned
  in blocks divisable by 100 (eg, X00-X99). For smaller areas, it is acceptable
  to assign 50 vnum blocks (X00-X49 or X50-X99). If you leave the vnum range
  blank, it removes any area assignment from the builder.
CHECK  - Checks the area for errors using various criteria.
LIST   - Pulls up a list of the existing areas in the game.

Typing EDIT ROOM with no argument edits the room you are presently in.
{a}EDIT
{b}AEDIT
{c}ASTAT
{e}ALIST
~

0 AEDIT~
Editing an Area~
{300}The settings for a room include:

  {200}Name: {078}The name of the area.
  {200}Author: {078}The player name who creates the area. Can be more than one player.
  {200}Popmsg: {078}Set the echo for when the area resets. Color tags can be used.
  {200}Flags: {078}Toggles the area flags for the room. Any or all of these flags may be
  set on the area, as appropriate. See the menu of flags below.
  {200}Wind, Rain, Winter, Summer, Daily: {078}Sets weather ranges for the area.
  {200}Softlo, Softhi: {078}Sets the recommended level ranges for the area.
  {200}Hardlo, Hardhi: {078}Sets level restrictions for the area. Characters above or
  below these limits cannot enter.
  {200}Olclo, Olchi: {078}The low and hi vnum for the area. Only settable by a full
  admin and initially set during area assign.
  {200}Courtrm: {078}Sets the room vnum for an area courtroom used in the justice system.
  {200}Dungeon: {078}Sets the room vnum for the dungeon used in the justice system.
  {200}Impound: {078}Sets the room vnum for the storeroom used in the justice system.
  {200}Judge: {078}Sets the NPC vnum for the judge used in the justice system.
  {200}Guard: {078}Sets the NPC vnum for the guard used in the justice system.
  {200}Theft, Assault, Mkill, Pkill: {078}Sets the punishment for the specified crime.
{-}EDIT
{b}'AREA FLAGS'
{d}JUSTICE AREAJUSTICE
{e}'COLOR TAGS'
~

0 JUSTICE AREAJUSTICE~
Area Justice System~
The area justice system is used to enforce laws within civilized areas. Actions
against NPCs flagged as citizens will trigger the justice system and posts
bounties against the criminal. Area guards will respond to incidents, as well
as pursue and apprehend violators. The settings for the system are:

  {200}Courtroom: {078}This is the room that houses the area judge.
  {200}Dungeon: {078}The room that prisoners are held in. This room should ideally have
  no exits, and should be flagged with appropriate room flags to prevent escape
  unless the builder wishes to design a dungeon that can, in fact, be escaped.
  {200}Impound: {078}The room for storing confiscated items. This room should be flagged
  as a storeroom so it saves over reboots, and flagged against scrying and
  astral transport.
  {200}Guard: {078}This is the vnum of a standard NPC mobile that serves as the guard
  who answers crimes in the area. This NPC must be flagged ACT_GUARD, and while
  you can have more than one type of guard flagged as guards, this is the vnum
  that will be spawned during an incident.

The fields for the punishment flags are:
  {200}Theft: {078}Sets the punishment for ptheft, or theft from a NPC citizen
  when the player is caught in the act.
  {200}Assault: {078}Sets the punishment for threatening, attacking or injuring
  an area citizen.
  {200}Mkill: {078}Sets the punishment for killing an NPC area citizen.
  {200}Pkill: {078}Sets the punishment for killing another player. This penalty is only
  triggered by a player set bounty upon another player.
  
Each crime has a single punishment flag which determines the penalty for all of
that type of crime committed in an area:
  {200}None: {078}This crime is not punished in the area.
  {200}Death: {078}Guards will attack to kill when a criminal is caught. Player bounty
  hunters will sever the head upon defeat of the character.
  {200}Sever: {078}Guards will sever a hand from the criminal when caught. Player bounty
  hunters sever a hand when defeating the character.
  {200}Jail: {078}When caught, criminal is transferred to the dungeon for the remainder
  of the bounty expiration time.
  {200}Confiscate: {078}Guards take a random item from the criminal when caught. Player
  can pay a fine at the area courtroom of a third of the item's value to get it back.
{a}EDIT
{b}AEDIT
~

0 'AREA FLAGS'~
Area Flags~
{300}Any or all of these flags can be set on an area:

  {200}Noteleport: {078}Cannot teleport into or out of the area.
  {200}Norecall: {078}Cannot recall out of the area.
  {200}Nocastle: {078}Cannot build a player residence or guildhall in the area.
  {200}Norip: {078}Dimensional rips, like Secure Shelter, are not allowed in the area.
  {200}Nosummon: {078}Characters cannot be summoned into the area by another player.
  {200}Weather: {078}Area uses the weather flags to determine weather changes.
  
The following flags set the size of the area if it is a civilized area. It
affects factors like reselling prices, urban tracking modifiers, and other
factors. If the area is one of these, set the appropriate flag.
  {200}Village: {078}The area is a tiny, civilized area.
  {200}Town: {078}The area is a small, civilized area.
  {200}City: {078}The area is a large, civilized area.
  {200}Metropolis: {078}The area is a huge, civilized area.
{a}EDIT
{b}AEDIT
~

0 ALIST~
Alist~
{200}Syntax: alist
{078}
ALIST displays a list of all the areas in the game and their vnum ranges.
~

0 ASTAT~
Astat~
{200}Syntax: astat [area name]
{078}
ASTAT shows you all the settings and stats for a given area. Leave the argument
blank to give you the stats of the area you are in.
~

0 'MOBILE EDITOR'~
The Mobile Editor~
{200}Syntax: edit mobile   [create|delete] <vnum|mobile name>
Syntax: edit mobile   <list>
Syntax: edit mobile   <vnum|mobile name>
{078}
The mobile editor allows you to create, delete, or edit existing mobiles (NPCs)
using the editor menu. When selecting a mobile, you can either use its vnum or
target a mobile in the same room as you.

CREATE - Creates a new mobile. Not specifying a vnum after the command will use
the next empty vnum in your asigned vnum range.
DELETE - Deletes the chosen mobile and all links to and contents in it.
LIST   - Pulls up a list of the existing mobiles in your assigned area.
{a}EDIT
{b}MCREATE
{c}MOBILES NPCS
{d}MSTAT
{e}MPSTAT
{f}MLIST
~

0 MLIST~
Mlist~
{200}Syntax: mlist
{078}
MLIST displays a list of all the mobiles for the area you are in.
~

0 MSTAT~
Mstat~
{200}Syntax: mstat <name|vnum>
{078}
MSTAT shows you all the settings and stats for a given mobile. You can specify
a name, or a vnum for a more precise selection.
~

0 MPSTAT~
Mpstat~
{200}Syntax: mpstat <name|vnum>
{078}
RPSTAT lists the current mud programs for the NPC specified. You can specify
a name, or a vnum for a more precise selection.
~

0 MOBILES NPCS~
Types of Mobiles~
{078}There are three basic types of mobiles:

* Simple Mobiles draw almost entirely upon the race data for the NPC for its
  statistics. This is a good choice for mundane citizens, animals or disposable
  mooks that don't need a lot of attention.
* Unique Mobiles still draw upon the race of the NPC, but allow you to further
  customize things like the NPCs stats, alignment, languages, and even set a
  different size category than the race normally uses. Best used for specific
  characters, and those you want complete control all of its specs.
* Generic Mobiles do not draw on a race file at all, and are completely custom
  with the ability to set its racial type, subtypes, natural attacks and wear
  locations. You create a generic mobile by setting the race of a unique mobile
  to NONE. Use this when you need to create a creature not found in the coded
  racial database.
{a}EDIT
{b}MCREATE
~

0 MCREATE~
Creating a Mobile~
{300}The settings for all mobiles include:

  {200}Name: {078}This is the keywords for targeting the mobile. They do not have to be
  words in the actual descriptions, but should be logical. The code will also 
  always put the vnum of the mobile in the name.
  {200}Short: {078}The short desc of the mobile is its visible name - what you will see
  in the tactical display, and what will echo when the mobile echoes to anyone. 
  It should be no longer than 24 characters.
  {200}Long: {078}The long desc is the phrase that the mobile displays when
  viewed in a room - can include poses. This desc supports color tags.
  {200}Desc: {078}This is the full description of the mobile. When you look at the mobile, 
  this is the desc that you see. This is written in the text editor and can be
  several lines long. It also supports color tags.
  {200}Reset: {078}The reset message echoes whenever the mobile respawns.
  {200}ED: {078}Sets extra descs for the mobile, which display to someone who uses the
  LOOK command with the keyword(s) set for the desc. 
  {200}Level: {078}What level and/or number of hit dice is the mobile.
  {200}Class: {078}What active class is the mobile. Monsters that do not have class levels
  should always have MONSTER set as their class.
  {200}Race: {078}What race is the mobile. If you wish to make a mobile that is not of a
  coded race, you must make it a UNIQUE mobile (see below).
  {200}Sex: {078}What gender is the mobile (male, female, or neutral).
  {200}Pos: {078}What position is the mobile in (sitting, sleeping, etc).
  {200}God: {078}Assigns a coded deity to the mobile as a patron.
  {200}Act: {078}Sets the act flags for the mobile. Any or all of these flags may be
  set on the mobile, as appropriate. See the menu of act flags below.
  {200}Mclass: {078}What multiclasses the NPC has and what level (cleric 5, etc).
  {200}Unique: {078}Unique mobiles allow for more customization options (see below.)
  {200}Skill: {078}For hard coded feats and skill ranks possessed by the NPC.
  {200}Affect: {078}For setting hard coded affects and applies on the NPC.
  {200}Equip: {078}Equips item of speficied vnum on the wear location specified.
{a}EDIT
{b}'EXTRA DESCS'
{c}'ACT FLAGS'
{d}LOADEQ
{e}MCREATE2
~

0 MCREATE2~
Unique Mobiles~
{300}The following options are also available to code NPCs that are set as unique:

  {200}Armor: {078}Sets the NPC as wearing a virtual full suit of the armor specified.
  For mobiles that you don't want to drop armor when they die, this is a good
  option and also will simplify the need for coding armor objects.
  {200}Speaks: {078}The native language of the NPC.
  {200}Langs: {078}The additional languages spoken and understood by the NPC.
  {200}STR, DEX, CON, INT, WIS, CHA: {078}Sets the stat specified.
  {200}Align: {078}Sets the alignment of the NPC.
  {200}Size: {078}What size category is the creature in?
  
Further options with a generic NPC (race set to NONE):

  {200}Natac: {078}Natural armor bonus.
  {200}Rtype: {078}The racial type of the creature (humanoid, aberration, etc).
  {200}Rspecs: {078}The subtypes of the creature (aquatic, quadruped, etc).
  {200}Wear: {078}The wear locations of the creature.
  {200}Attack: {078}Natural Attacks (Syntax: attack <attack part> <number>).
  {200}Affect: {078}For setting hard coded affects and applies on the NPC.
  {200}Skill: {078}Hard set the racial abilities needed for the creature.
{-}MCREATE
{a}'RACE TYPES'
{b}'RACIAL SUBTYPES'
{c}'ATTACK PARTS'
{d}'WEAR LOCATIONS'
{e}APPLIES APPLYS
~

0 'ACT FLAGS'~
Act Flags~
{300}Act flags control how mobiles behave. The possible flags include:

  {200}Aggressive: {078}The mobile will not retreat, will pursue an attacker if they flee
  from combat, and may even randomly attack a player on sight.
  {200}Bank: {078}The mobile is a banker and understands banking commands.
  {200}Citizen: {078}Affects reputation, area criminal record if stolen from or slain.
  {200}Day: {078}Mobile only repops in daytime, and purges itself at night.
  {200}Drunk: {078}The mobile acts as a player would if drunk.
  {200}Guard: {078}Mobile acts as a guard in its area, enforces justice system.
  {200}Ishealer: {078}Mobile is a healer for hire that will respond to HEAL commands.
  {200}Mobinvis: {078}Mobile is invisible to non-GMs.
  {200}Night: {078}Mobile only repops at night, and purges itself at dawn.
  {200}Noassist: {078}Will not assist others in combat. Will only fight if engaged first.
  {200}Nocorpse: {078}The mobile leaves no corpse when it is killed.
  {200}Nofight: {078}Mobile will not attack, even if attacked. Fight progs will still 
  trigger each round.
  {200}Nowander: {078}The mobile will only wander with rooms of the same sector.
  {200}Request: {078}Will honor REQUEST commands. NEVER use this on merchant NPCs!
  {200}Scavenger: {078}Picks up stray objects from the ground.
  {200}Secretive: {078}The mobile's actions do not echo, a permanent state of MPQUIET.
  {200}Sentinel: {078}The mobile will not wander from its reset room, unless pursuing
  someone or otherwise forced from the reset room.
  {200}Stayarea: {078}The mobile will not wander outside his own area.
  {200}Subdual: {078}Mobile will fight using nonlethal damage, rather than lethal force.
  {200}Summoned: {078}Summoned creature - can be dispelled, held at bay by protection from
  alignment spells, and other wards against summoned beings.
  {200}Train: {078}PCs can train with this mobile using the TRAIN command.
  {200}Weak: {078}The mobile cannot carry anything in inventory.
  {200}Wimpy: {078}The NPC will not attack of its own volition, flees if it sustains more
  than half its hit points.
{a}EDIT
~

0 LOADEQ~
Equipment Locations~
{300}When setting loading equipment for a mobile, each piece must be equipped on one
of the following locations (only one piece on each):

  {178}none, float, head, face, ears, neck1, neck2, arms, wrist1, wrist2,
  hands, finger1, finger2, about, body, saddle, back, waist, belt1, belt2,
  belt3, legs, ankle1, ankle2, feet, shield, wield, dual-wield, both, hold.
{a}EDIT
~

0 'ATTACK PARTS'~
Attack Parts~
{300}You can set any number of the following natural attack forms for a race or
a custom NPC. Damage is calculated automatically based the creature's size and
the attack part, per the d20 universal monster rules:

  {178}Bite, Claw, Gore, Hoof, Kick, Pincer, Punch, Rake, Slam, Sting, Tail,
  Talon, Tentacle, Wing, Other, Touch.
{078}  
The PUNCH attack form is not a natural attack, and does nonlethal damage,
but creatures with this attack form can hold weapons.
The OTHER attack form is untyped damage not covered by the other attack forms.
The TOUCH attack form does no physical damage, rather delivers a special touch
attack such as Rusting Touch, Petrifying Touch, etc.
~

0 'WEAR LOCATIONS'~
Wear Locations~
{300}When you code a race, or a custom mobile, or set the load equipment for the
mobile, it can have any or all of these wear locations:

  {178}Head, face, ears, neck, arms, wrist, hands, finger, body, about, back,
  waist, belt, legs, ankle, feet, saddle.
{300}
If you are going to set load equipment for the mobile also, make sure you pick 
a wear location the mobile would actually have, based on the above flags.

Objects may have the above flags to indicate where they can be worn, and these
further locations:

  {178}Take (allows item to be picked up, held), float, shield, wield.
~

0 'OBJECT EDITOR'~
The Object Editor'~
{200}Syntax: edit object   [create|delete] <vnum>
Syntax: edit object   <list>
Syntax: edit object   <vnum>
{078}
The mobile editor allows you to create, delete, or edit existing objects using
the editor menu.

CREATE - Creates a new object. Not specifying a vnum after the command will use
the next empty vnum in your asigned vnum range.
DELETE - Deletes the chosen object and all links to and contents in it.
LIST   - Pulls up a list of the existing objects in your assigned area.
{a}EDIT
{b}OCREATE
{c}OSTAT
{d}OPSTAT
{e}OLIST
~

0 OLIST~
Olist~
{200}Syntax: olist
{078}
OLIST displays a list of all the objects for the area you are in.
~

0 OSTAT~
Ostat~
{200}Syntax: ostat <name|vnum>
{078}
OSTAT shows you all the settings and stats for a given object. You can specify
a name, or a vnum for a more precise selection.
~

0 OPSTAT~
Opstat~
{200}Syntax: opstat <name|vnum>
{078}
OPSTAT lists the current mud programs for the object specified. You can specify
a name, or a vnum for a more precise selection.
~

0 OCREATE~
Creating an Object~
{300}The settings for all objects include:

  {200}Name: {078}These is the keywords for targeting the object. They do not have to be
  words in the actual descriptions, but should be logical. The code will also 
  always put the vnum of the object in the name.
  {200}Short: {078}The short desc of the object is its visible name - what you will see
  in the tactical display and echoes. It should be no longer than 24 characters.
  NOTE: Never put crunch words of an object in its desc (ie, +5 holy avenger),
  always use a visual physical description of the object, and let things like
  the identify string speak for the crunch.
  {200}Long: {078}The long desc is the phrase that the object displays when
  viewed in a room on the ground. This desc supports color tags.
  {200}Desc: {078}This is the full description of the object. When you look at the object, 
  this is the desc that you see. This is written in the text editor and can be
  several lines long. It also supports color tags.
  {200}ED: {078}Sets extra descs for the object, which display to someone who uses the
  LOOK command with the keyword(s) set for the desc. 
  {200}Level: {078}What level the object is. This is only useful when the game settings
  for item/owner level restrictions are enabled.
  {200}Class: {078}This toggles class restrictions for the item. If the value is empty
  then there are no restrictions.
  {200}Idname: {078}This is the title of the object visible when it is identified and
  examined. Here is where any proper name for the item should be.
  {200}Iddesc: {078}A verbal description of the item for identification. Crunch terms
  and even item lore can be in this desc.
  {200}Flags: {078}Toggles item flags for the object.
  {200}Wear: {078}Wear locations for the item. If you intend the item to be picked up
  and held, it needs at the very least to have the TAKE flag set.
  {200}Material: {078}What material is the item made out of.
  {200}Size: {078}What size is the object? (See below for common sizes).
  {200}Cost: {078}Calculated automatically while editing, but can be overridden.
  {200}Weight: {078}Calculated automatically based on material and item type.
  {200}V0, v1, v2, etc: {078}Sets raw numeric values for item value fields 1-7. Most
  of these are edited by further contextual menu choices based on item type.
  {200}Affect: {078}Sets permanent affects and applies on the object.
{a}EDIT
{b}'EXTRA DESCS'
{c}'ITEM TYPES'
{d}'ITEM FLAGS'
{e}'WEAR LOCATIONS'
{f}'MATERIAL TYPES'
{g}'OBJECT SIZES'
~

0 'MATERIAL TYPES'~
Material Types~
{300}Objects can be made of various materials. Each of these materials has affect on
the qualities of the object in game terms as well, and how resistant they are
to being damaged. If a material is immune to a damage type, it takes no damage
at all, no matter how many hit points it is. If it is vulnerable to a damage
type, it takes double damage. The Hardness of a substance is how many hitpoints
it absorbs from a physical attack before any damage actually is dealt to the
item. Adamantine weapons bypass this hardness.

  Material            Hardness  1/2 dmg   1/4 dmg   Immune   Vulnerable
  Hardwood                5      Elect     Cold        -       Fire  
~

0 'ITEM FLAGS'~
Item Flags~
{300}Item flags control how objects behave. The possible flags include:

  {200}Glow: {078}Object glows as a torch.
  {200}Evil: {078}Evil aura, zaps good characters when held.
  {200}Good: {078}Good aura, zaps evil characters when held.
  {200}Lawful: {078}Lawful aura, zaps chaotic characters when held.
  {200}Chaotic: {078}Chaotic aura, zaps lawful characters when held.
  {200}Neutral: {078}zaps good and evil characters when held.
  {200}Unconcerned: {078}Zaps lawful and chaotic characters when held.
  {200}Invis: {078}Item is affected by invisibility.
  {200}Magic: {078}Object has a magic aura.
  {200}Noremove: {078}Cursed item can't be removed once equipped.
  {200}Nodrop: {078}Cannot be dropped, sold or given away.
  {200}Inventory: {078}Stays in inventory, even when dead.
  {200}Burning: {078}Item is burning, gives off light, heat.
  {200}Autoengrave: {078}Object becomes owned by character when equipped.
  {200}Ethereal: {078}Object can't be seen by mortals.
  {200}Hidden: {078}Object is hidden in a room. Use v7 to set search DC to find.
  {200}Concealed: {078}Object is concealed on a character's person.
  {200}Masterwork: {078}Masterwork item, bonuses to quality, can be enchanted.
  {200}Noscry: {078}Object cannot be scried or located by divination.
  {200}Broken: {078}Object is broken and cannot be used unless repaired.
  {200}Buried: {078}Object is buried underground and has to be dug up to be seen/taken.
  {200}Transparent: {078}Shows items layered undearneath on same wear location.
{a}EDIT
~

0 'OBJECT SIZES'~
Object Sizes~
{300}Common modern objects and what size class they are in:

  {200}Colossal: {078}jetliner, house, large ship.
  {200}Gargantuan: {078}army tank, schooner ship.
  {200}Huge: {078}typical car, sailboat, wagon.
  {200}Large: {078}full-size bed, chariot.
  {200}Medium-size: {078}bicycle, cot, couch.
  {200}Small: {078}chair, large sack, hiking pack.
  {200}Tiny: {078}laptop computer, purse, spellbook.
  {200}Diminutive: {078}paperback book, beltpouch.
  {200}Fine: {078}pencil, ring.
  
Note: Taken from d20 Modern SRD.
{a}EDIT
~

0 'ITEM TYPES'~
Item Types~
{300}The following flags are the possible types for an object:

  {200}[{178}X{200}] {078}Ammo
  {200}[{178}X{200}] {078}Armor
  {200}[{178}X{200}] {078}Boat
  {200}[{178}X{200}] {078}Book
  {200}[{178}X{200}] {078}Component
  {200}[{178}X{200}] {078}Container
  {200}[{178}X{200}] {078}Drinkcon
  {200}[{178}X{200}] {078}Fire
  {200}[{178}X{200}] {078}Food
  {200}[{178}X{200}] {078}Fountain
  {200}[{178}X{200}] {078}Furniture
  {200}[{178}X{200}] {078}Light
  {200}[{178}X{200}] {078}Map
  {200}[{178}X{200}] {078}Money
  {200}[{178}X{200}] {078}Paper
  {200}[{178}X{200}] {078}Piece
  {200}[{178}X{200}] {078}Pill
  {200}[{178}X{200}] {078}Portal
  {200}[{178}X{200}] {078}Potion
  {200}[{178}X{200}] {078}Quiver
  {200}[{178}X{200}] {078}Scroll
  {200}[{178}X{200}] {078}Sheath
  {200}[{178}X{200}] {078}Spellbook
  {200}[{178}X{200}] {078}Spellpouch
  {200}[{178}X{200}] {078}Staff
  {200}[{178}X{200}] {078}Symbol
  {200}[{178}X{200}] {078}Tools
  {200}[{178}X{200}] {078}Totem
  {200}[{178}X{200}] {078}Trap
  {200}[{178}X{200}] {078}Trash
  {200}[{178}X{200}] {078}Treasure
  {200}[{178}X{200}] {078}Wand
  {200}[{178}X{200}] {078}Weapon
  {200}[{178}X{200}] {078}Window
{a}EDIT
~

0 ITEM_TYPE_TRASH~
Trash Item Type~
{300}This is a catch-all item type for unremarkable objects that do not fit into any
other item type. There are no additional menu choices for this item, but the
object value fields can be used in mud progs for if checks.
{a}EDIT
~

0 ITEM_TYPE_TREASURE~
Treasure Item Type~
{300}Treasure is any valuable, or magical item that doesn't fit into the other item
types offered. Wondrous magical items, jewelry, and the like are this item type.
The additional menu options are:

  {200}Tflags: {078}Toggles treasure flags for the object.
  {200}Layer: {078}The wear layer of the item, if worn on a layered location.
  {200}Comptype: {078}Component type, for gems and jewels that can also be components.
  {200}Setting: {078}For jewel setting, the vnum of a gem set into the item.
{a}EDIT
~

0 'TREASURE FLAGS'~
Treasure Flags~
{300}These determine behavior and special qualities of a treasure object. NOTE that
only ONE of these flags can be on a given treasure object:

  {200}spell_storing: {078}Stores up to three spells using the SPELL menu command that
  can be cast from the ring, and recharged by casting new spells on the item.
  {200}counterspell: {078}Ring stores a spell using the SPELL menu command, and will
  automatically counterspell that same spell later. Can be recharged by casting
  a new spell on the item.
  {200}spell_recast: {078}Set a spell using the SPELL menu command, use CHARGES to set
  the number of times per day it will work.
  {200}spell_charges: {078}Set a spell using the SPELL menu command, use CHARGES to set
  the current and max charges (Syntax: charges <current>/<max>).
  {200}absorption: {078}Yet to be coded, do not use yet.
{a}EDIT
~

0 ITEM_TYPE_SPELLBOOK~
Spellbook Item Type~
{300}Wizards must possess a spellbook in order to scribe the spells they learn and
to prepare the spells for casting. If the wizard does not have his spellbook,
he cannot prepare any spells and can only cast cantrips. These can be found
during the course of adventuring, and the spells therein copied into a wizard's
own spellbook to bolster his own repertoire. The additional menu option is:

  {200}Scribed: {078}Type the name of a spell to toggle the spell as scribed or not.
{a}EDIT
~

0 ITEM_TYPE_ARMOR~
Armor Item Type~
{300}Armor includes actual worn armor, shields, as well as mundane clothing, which
is basically coded as armor with no AC bonus. When editing an armor object, the
following options become available:

  {200}Armor: {078}Sets the type of armor for the item.
  {200}Layer: {078}What layer the item is worn on. This only works for clothing
  (AC 0) items, as all actual armor with a bonus is worn on the armor layer.
  {200}Aflags: {078}Toggles armor flags for the item.
  {200}Wearsize: {078}Sets what size creature the armor is made for. This is different
  than the actual size of the object. A helmet sized for a medium humanoid would
  itself be tiny in size.
{a}EDIT
{b}'ARMOR TYPES'
{c}'ARMOR FLAGS'
{d}'ITEM LAYERS'
~

0 'ITEM LAYERS'~
Wear Layers~
{300}A clothing item, sheath, or container that is worn on the body, arms or legs can
be set to layers 1 to 5. When looking at a person equipped with such, only the
topmost layer is visible, unless the topmost item is flagged transparent.

Layer 1 should be used for undergarments and items worn very close to the skin.
  This could include things like garter sheaths, wrist sheaths and other
  concealed containers.
Layer 2 should be standard clothing items - shirts, pants tunics, etc.
Layer 3 is for overgarments that would still be worn beneath armor - coats,
  vests and the like.
Layer 4 is the armor layer, and any actual armor is always on this layer.
Layer 5 is for surcoats, mantles, sheaths, other items that should be layered
  atop of everything else. This would also be the recommended layer for body
  pouches, leg sheaths, and such that would be worn atop of other items.
  
Note that items like cloaks, that simply wrap about the body, should be set to
the ABOUT wear location, which is only one layer - rather than the body. Thus
the issue with layering such items is moot.
Backpacks and back scabbards likewise should be set to the BACK wear location,
again rendering layering concerns moot.
{a}EDIT
~

0 'ARMOR FLAGS'~
Armor Flags~
{300}These determine behavior and special qualities of a piece of armor or clothing:

  {200}Arrow catching: {078}Shields only, provides +1 bonus to AC against missiles.
  {200}Arrow deflecting: {078}Shields only, allows wearer to deflect missiles as if
  they had the feat, and without having an open hand.
  {200}Bashing: {078}Shield only, Doubles base damage done by a shield bash.
  {200}Etheralness: {078}Wearer can go ethereal, use obj value 2 for number of charges.
  {200}Ghost touch: {078}Armor protects against incorporeal attacks.
  {200}Reflecting: {078}Reflects spells like Spell Turning. Obj value 2 is the number
  of charges/levels it can reflect.
  {200}Hooded: {078}Has a hood, that can be worn while item is equipped.
{a}EDIT
~

0 'ARMOR TYPES'~
Armor Types~
{300}Below are the possible types of armor available in Mud20, and their bonuses and
penalties. These numbers assume a complete suit of a particular armor type.
You can mix and match pieces of different types, and the code calculates the
final bonuses and adjustments.

  {178}Type                Weight     AC Bonus   Dex Max   Penalty  Spell Fail
  {078}Cloth               None          -          -         -          -
  Padded              Light         1          8         -          5
  Leather             Light         2          6         -         10
  Studded Leather     Light         3          5        -1         15
  Elven Chain         Light         6          4        -2         20
  Hide                Medium        4          4        -3         20
  Scalemail           Medium        5          3        -4         25
  Chainmail           Medium        6          2        -5         30
  Splint Mail         Heavy         7          0        -7         40
  Banded Mail         Heavy         7          1        -6         35
  Full Plate          Heavy         9          1        -6         35
  Buckler             Shield        1          -         -          5
  Light Shield        Shield        1          -        -1          5
  Heavy Shield        Shield        2          -        -2         15
  Tower Shield        Tower Shield  4          -       -10         50
  
Weight: The type of armor proficiency needed to wear this armor.
Dex Max: The maximum Dex mod to your AC gained while wearing this armor.
Penalty: Wearing this armor causes all STR and DEX skill checks, as well as
Swim checks, to suffer this penalty. If you are not proficient in the armor
you are wearing, it also applies to your attack rolls and Reflex saves.
Spell Fail: Arcane casters have this percent chance of their casting to fail
when wearing this armor while using their spells.
{a}ARMOR2
~

0 ARMOR2~
Wearing Piecemeal Armor~
{300}The way armor is treated in Mud20 isn't so much of a variant from normal d20,
so much as it is the game code doing the math for you on creating your own suit
of armor. You have the freedom to assemble your suit with just the pieces you
want, and your AC and armor adjustments will total accordingly.

For example, to get a chain shirt, only wear a chainmail tunic and sleeves. To
get platemail, combine chain legs and arms with plate pieces elsewhere. Your
EQUIPMENT list will show your current armor stats at the bottom of the list so
there's no guesswork.

Enhancement armor bonuses (+1, +2, etc) will only ever be found on the body
piece of your armor, and will enhance the entire suit. Armor qualities will
also only ever be found upon the body location, and again affect the character
over his whole body.
~

0 ITEM_TYPE_BOOK~
Book Item Type~
{300}This is a multi-page, written book, which can be read page by page. Selecting
this item type allows the following additional menus:

  {200}Language: {078}Sets the language the book is written in.
  {200}Page <number>: {078}Adds a page of the specified number and puts you in the text
  editor for writing the page. The code will make you add pages in sequential
  order, beginning with page 1.
  {200}Rmpage: {078}Removes the specified page number.
{a}EDIT
~

0 ITEM_TYPE_COMPONENT~
Component Item Type~
{300}This item is used for any consumable ingredient, including a spell component,
crafting materials and etc. Selecting this item type adds these menu options:

  {200}Comptype: {078}Sets the type of component it is.
  {200}Uses: {078}Sets the number of uses, or units of the component.
{a}EDIT
~

0 ITEM_TYPE_CONTAINER ITEM_TYPE_SHEATH ITEM_TYPE_SPELLPOUCH ITEM_TYPE_QUIVER~
Container Item Types~
{300}Container items, very simply, hold other items. This could be a backpack, belt
pouch, or some other sort of container. There are three specialized container
types as well - sheaths, quivers, and spellpouches. Sheaths and quivers carry
weapons and ammo, respectively, and spellpouches only hold components. Only
weapons in sheaths are found using the DRAW and SHEATH command. Only ammo
in a quiver can be automatically drawn during shooting, and only spellpouches
will serve up your components automatically while casting a spell.

These item types have the following additional editor menus:

  {200}Carry: {078}How much weight can the container hold.
  {200}Conflags: {078}Toggles the container flags for the object.
  {200}Key: {078}Sets the item vnum for the key required to lock/unlock (container only).
  {200}Max: {078}Maximum number of items the container can fit. (This includes sheaths
  because a bandolier can, for example, carry multiple weapons.)
{a}EDIT
{b}'CONTAINER FLAGS'
~

0 'CONTAINER FLAGS'~
Container Flags~
{300}The following flags determine the behavior of the container:

  {200}Closeable: {078}The container has a lid that can be opened/closed.
  {200}Closed: {078}The lid is presently closed.
  {200}Locked: {078}The lid is locked, and must be unlocked to open.
  {200}Pickproof: {078}The lock of the lid cannot be picked.
  {200}Bashproof: {078}The container cannot be bashed open.
  {200}Passproof: {078}Cannot be passed by incorporeal creatures.
  {200}Magical_lock: {078}Wizard locked, +10 DC to bash, impossible to pick.
  {200}Easy_pick: {078}Very low DC to pick lock.
  {200}Hard_pick: {078}Higher DC than normal to pick lock.
  {200}Amazing_pick: {078}Almost impossible DC to pick lock.
  {200}Weak: {078}Thin, fragile container - base DC 13 to bash.
  {200}Strong: {078}Base DC 23 to bash, versus 18.
  {200}Holding: {078}Weighs a fixed weight of 1/16th the carry weight of the container.
{a}EDIT
~

0 ITEM_TYPE_DRINKCON ITEM_TYPE_FOUNTAIN~
Drink Container and Fountain Item Types~
{300}Any object that contains a liquid. Usually this is intended to drink, but drink
containers can also use used for oil flasks. The following additional menus are
available with these item types:

  {200}Liquid: {078}What kind of liquid is in it?
  {200}Charges: {078}How many drams are in the it (drink containers only).
  {200}Poison: {078}Setting this poisons the liquid for anyone who drinks it. This can
  be any available poison type that is ingested or by contact.
{a}EDIT
{b}'LIQUID TYPES'
{b}'LIQUID POISONS'
~

0 'LIQUID TYPES'~
Liquid Types~
{300}The following liquids can be found in a drink container or fountain:

  {178}water, beer, wine, ale, darkale, whisky, lemonade, firebreather,
  strong_ale, strong_wine, milk, tea, coffee, blood, saltwater, oil, juice,
  brandy, icewine, rum, vodka, champagne.
  
Each liquid has its own affects on a user's thirst, hunger and drunkenness.
{a}EDIT
~

0 'LIQUID POISONS'~
Food and Liquid Poisons~
{300}The following poisons are valid for poisoning liquids and food - only those that
take effect by touch or ingestion are applicable:

  {178}none, nitharit, sassone, malyss_root, terinav_root, black_lotus,
  dragon_bile, toadstool, arsenic, id_moss, lich_dust.
{a}EDIT
~

0 ITEM_TYPE_FIRE~
Fire Item Type~
{300}Fires are stationary objects, they give off light and heat. They are suitable
for use in crafts, and for burning other items:

  {200}Hours: {078}The number of game hours it will burn before junking itsemf. -1 means
  the fire will burn infinitely. You will usually want a fire set to -1 if it
  is loading on reset. Only set a duration if its loaded by a prog.
{a}EDIT
~

0 ITEM_TYPE_FOOD~
Food Item Type~
{300}Food items can be eaten by players, and usually satisfy their hunger to some
extent. The following additional menus can be set:

  {200}Fill: {078}How much the food fills you up. Also determines the number of bites
  needed with the EAT command to consume it totally.
  {200}Cooked: {078}(yes or no) Is the food already cooked or not.
  {200}Poison: {078}Setting this poisons the food for anyone who eats it. This can
  be any available poison type that is ingested or by contact.
{a}EDIT
{b}'LIQUID POISONS'
~

0 ITEM_TYPE_FURNITURE~
Furniture Item Type~
{300}Basically, any type of object that is a prop that can be interacted with, that
is a fixture in a room. This could be an altar, a table, a statue, or anything
else that you can think of. The following extra menus are available:

  {200}Users: {078}How many people can interact (pose with) the furniture at once. If
  the value is 0, there is no limit.
  {200}Poses: {078}Toggles what poses you can use with the object, and what your pose
  will echo when you use the furniture with the pose. These actions will also
  trigger use_progs set on the object.
{a}EDIT
{b}'FURNITURE FLAGS'
~

0 'FURNITURE FLAGS'~
Furniture Flags~
{300}The following flags determine the behavior of the furniture:

  {200}sleep_in: {078}Can be slept in. Echos you are sleeping in the object.
  {200}sleep_on: {078}Can be slept on. Echos you are sleeping on the object.
  {200}rest_in: {078}Can be rested in. Echos you are resting in the object.
  {200}rest_on: {078}Can be rested on. Echos you are resting on the object.
  {200}sit_in: {078}Can be sat in. Echos you are sitting in the object.
  {200}sit_on: {078}Can be sat on. Echos you are sitting on the object.
  {200}sit_at: {078}Can be sat at (like a table). Echos you are sitting at the object.
  {200}stand_in: {078}Can be stood in. Echos you are standing in the object.
  {200}stand_on: {078}Can be stood on. Echos you are standing on the object.
  {200}kneel_at: {078}Can be knelt at. Echos you are kneeling at the object.
  {200}place_on: {078}Other objects can be placed on the object.
{a}EDIT
~

0 ITEM_TYPE_LIGHT~
Light Item Type~
{300}Lights can either be stationary or carried/held. Any light object affects the
lighting of the room it is in:

  {200}Light: {078}(1-3)How many steps will the light increase in the room. This should
  usually be limited to 1, at the most 2 for a bright light. 3 is equivalent
  to a Daylight spell, and should only be found on rare magical items.
  {200}Refill: {078}(true or false) If true, you can refill the light with oil (like a
  lantern) from a flask of oil. Otherwise, the item junks when it runs out.
  {200}Charges: {078}The number of turns (10 rounds) the light burns. -1 means the light
  never runs out.
  {200}Ignite: {078}(true or false) True means the light ignites and is burning when
  you equip it.
{a}EDIT
~

0 ITEM_TYPE_MAP~
Map Item Type~
{300}This object allows the holder to get the overland view of the area they are in,
so long as they are carrying a map of the area. The additional menus are:

  {200}Lovnum: {078}The lowest room vnum the map will draw.
  {200}Hivnum: {078}The highest room vnum the map will draw.
{a}EDIT
~

0 ITEM_TYPE_MONEY~
Money Item Type~
{300}Quite simply, this is a pile of money:

  {200}Gold: {078}The number of gold in the pile.
  {200}Silver: {078}The number of silver in the pile.
  {200}Copper: {078}The number of copper in the pile.
{a}EDIT
~

0 ITEM_TYPE_PILL~
Pill Item Type~
{300}A pill is an object that places spell affects upon the person who eats it. This
action does not draw attacks of opportunity, unlike potions, and it can affect
up to three spells in its consumption.

  {200}Spell: {078}spell <caster level> <'spell name'> <'spell name'> <'spell name'>
{a}EDIT
~

0 ITEM_TYPE_POTION~
Potion Item Type~
{300}A potion is imbibed by the DRINK command. It can affect a single spell upon the
person who drinks it:

  {200}Spell: {078}spell <caster level> <'spell name'>
  
If the spell is left blank, then the potion is an empty potion flask, and can
be used with the Create Potion feat to make a new potion. Flasks emptied by
drinking can also be used again to make new potions.
{a}EDIT
~

0 ITEM_TYPE_SCROLL~
Scroll Item Type~
{300}A scroll is recited to complete the spell. The end result is as if the person
cast the spell themselves. The scroll is consumed in the process:

  {200}Spell: {078}spell <caster level> <'spell name'>
  {200}Class: {078}Sets whether the scroll is arcane, or divine.
{a}EDIT
~

0 ITEM_TYPE_PAPER~
Paper Item Type~
{300}Any blank substrate (paper, parchment, slab of bark, etc) that can be written
upon. Type what you want to be written on the paper as the long description of
the object.

  {200}Written: {078}(true or false) Has the paper been written on.
  {200}Sealed: {078}(true or false) Has the paper been sealed with a wax seal.
  {200}Language: {078}What language is the document written in.
{a}EDIT
~

0 ITEM_TYPE_PIECE~
Piece Item Type~
{300}These are objects that are pieces of other objects, and assembled using the JOIN
command. The additional menu commands are:

  {200}Piece1: {078}Object vnum of the first piece to be joined.
  {200}Piece2: {078}Object vnum of the second piece to be joined.
  {200}Creates: {078}Object vnum of the item the two pieces create.
  {200}Skill: {078}Skill required to assemble, if any.
  {200}Skilldc: {078}DC of skill roll to successfully assemble.
  
Both pieces to be joined must be pieces, the final object can be any item type,
even another piece, thus making for very complex items that must be assembled.
{a}EDIT
~

0 ITEM_TYPE_PORTAL~
Portal Item Type~
{300}Typically used for a magical portal, but can be used for a mundane passage as
well. A character uses the portal with the ENTER command. A portal has these
additional menu options:

  {200}Charges: {078}Number of uses before purging. Set to -1 for infinite.
  {200}Enter: {078}Toggles the portal flags for the object.
  {200}Toroom: {078}What room vnum the portal leads to.
  {200}Key: {078}Key to unlock locked portal. Use -1 for no lock.
{a}EDIT
{b}'PORTAL FLAGS'
~

0 'PORTAL FLAGS'~
Portal Flags~
{300}The following flags determine the behavior of the portal:

  {200}teleport_world: {078}User is sent to a random room vnum anywhere.
  {200}gowith: {078}The portal goes with the person who enters it.
  {200}noflee: {078}The portal can not be used when fleeing combat.
  {200}stepthrough: {078}Echoes you stepping through the portal.
  {200}stepinto: {078}Echoes you stepping into the portal.
  {200}teleport_area: {078}User is sent to a random room in the same area.
  {200}closeable: {078}Portal has a door that can be open/closed.
  {200}closed: {078}Portal has a door that is closed, and must be open.
  {200}locked: {078}Portal has a door that is locked.
  {200}no_enter: {078}You can not enter the portal from this side.
  {200}pickproof: {078}Lock cannot be picked.
  {200}easy_pick: {078}Low lock DC to pick.
  {200}hard_pick: {078}High lock DC to pick.
  {200}amazing_pick: {078}Almost impossible lock DC to pick.
{a}EDIT
~

0 ITEM_TYPE_STAFF ITEM_TYPE_WAND~
Staff and Wand Item Types~
{300}A staff or wand is a charged magic item. Wands store a single spell while staves
can store multiple spells. Each use of a spell costs a charge or charges off of
the item. These items have these additional menu options:

  {200}Charges (X/X): {078}Maximum and current charges of the object.
  {200}Spell: {078}spell <caster level> <'spell name'> (add up to 3 more for a staff.)
{a}EDIT
~

0 ITEM_TYPE_SYMBOL~
Symbol Item Type~
{300}This is a holy symbol for a divine caster when the holy symbol is required as
a component, and for turning and commanding undead and other creatures:

  {200}God: {078}What god is this the holy symbol of.
  {200}Bonus (0-5): {078}Adds a bonus to any turn or command check by the wearer.
{a}EDIT
~

0 ITEM_TYPE_WEAPON ITEM_TYPE_AMMO~
Weapon and Ammo Types~
{300}Weapons and ammo have the following additional fields to edit:

  {200}Weapon: {078}Sets the type of weapon for the item.
  {200}Wflags: {078}Toggles weapon flags for the item.
  {200}Dammsg: {078}Sets a custom damage noun for the weapon. For example, 'crushing
  blow'.
  
If the weapon has the Bane or Slaying weapon flag, you can also set:

  {200}Racetype: {078}For the race type the weapon is against.
  {200}Subtype: {078}For the subtype the weapon is against.
  
If it has the spell storing weapon flag, you can also set:

  {200}Spell: {078}The spell that is cast when the weapon hits.
{a}EDIT
{b}'WEAPON TYPES'
{c}'WEAPON FLAGS'
~

0 'WEAPON TYPES'~
Weapon Item Type~
Below are the lists of available weapons and their specs:
{000}
  {200}[{178}X{200}] {078}Simple Weapons
  {200}[{178}X{200}] {078}Martial Weapons
  {200}[{178}X{200}] {078}Exotic Weapons
{a}WEAPONSIMPLE
{b}WEAPONMARTIAL
{c}WEAPONEXOTIC
~

0 'WEAPON FLAGS'~
Weapon Flags~
{300}These determine behavior and special qualities of a magical weapon:

  {200}Anarchic: {078}Does +2d6 vs. Lawful, drains level of lawful attempting to wield.
  {200}Axiomatic: {078}Does +2d6 vs. Chaotic, drains level of chaotic attempting to wield.
  {200}Bane: {078}Does +2d6 vs. race type on obj value 2 and subtype on obj value 3.
  {200}Disruption: {078}Undead struck must make WILL save or be destroyed.
  {200}Distance: {078}Double the range of a ranged weapon.
  {200}Flaming: {078}Does +1d6 fire damage on hit.
  {200}Flaming Burst: {078}Does +1d6 fire damage on hit. Or +critmod d6 on crit hit.
  {200}Frost: {078}Does +1d6 cold damage on hit.
  {200}Ghost Touch: {078}Can hit incorporeal creatures with no miss chance.
  {200}Holy: {078}Does +2d6 vs. Evil, drains level of evil attempting to wield.
  {200}Icy Burst: {078}Does +1d6 cold damage on hit. Or +critmod d6 on crit hit.
  {200}Keen: {078}Double critical threat range of weapon.
  {200}Ki Focus: {078}Monk can use Ki strike ability while wielding this weapon.
  {200}Merciful: {078}Does nonlethal damage instead of lethal, +1d6 damage.
  {200}Returning: {078}Weapon returns when thrown once per round.
  {200}Seeking: {078}Ammo only. Strikes target without error.
  {200}Shock: {078}Does +1d6 electrical damage on hit.
  {200}Shocking Burst: {078}Does +1d6 elect damage on hit. Or +critmod d6 on crit hit.
  {200}Speed: {078}Gain extra iterative attack while wielding.
  {200}Spell Storing: {078}Casts spell on obj val 2 upon hit. Obj val 3 is caster level.
  {200}Thundering: {078}+1d8+crit multiplier damage upon critical hit.
  {200}Unholy: {078}Does +2d6 vs. Good, drains level of good attempting to wield.
  {200}Venomous: {078}Poisons target (like spell) upon hit.
  {200}Vampiric: {078}Heals wielder of obj value 2 hit points upon hitting target.
  {200}Vorpal: {078}Beheads target upon critical hit.
  {200}Wounding: {078}Causes bleeding on critical hit.
  {200}Slaying: {078}If victim racetype on obj value 2 and subtype on obj val 3 match, 
  must make a FORT save or die. Can only be placed on ammo.
  {200}Caustic: {078}+1d6 acid damage on hit.
{a}EDIT
~

0 'SHOP EDITOR'~
'shop editor'~
{178}
The Shop Editor{200}
==============={200}
Syntax: edit shop   [create|delete] <vnum|mobile name>
Syntax: edit shop   <list>
Syntax: edit shop   <vnum|mobile name>
{078}
The shop editor allows you to create, delete, or edit an existing shop using
the editor menu.

CREATE - Creates a new shop and tags it to the mobile specified. Either use
the vnum of the mobile, or target a mobile in the same room as you.
DELETE - Deletes a shop from the selected mobile.
LIST   - Pulls up a list of the existing shops in your assigned area.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Creating a Shop
{a}EDIT
{b}SCREATE
~

0 SCREATE~
screate~
{178}
Creating a Shop{200}
==============={300}
When you create a shop, you tag it to a mobile. This mobile needs items in his
inventory, which becomes the inventory of his shop. The settings for each store
include:

  {200}Open/Close: {078}The shop opens at the beginning of the selected hour, and closes
  at the end of the hour selected as the closing hour. Time is set in 24-hour
  format. If the open hour is 0 and the close hour 23, it never closes.
  {200}Buy: {078}The percentage of an item's worth you can buy it for.
  {200}Sell: {078}The percentage of an item's worth you can sell it for.
  {200}Flags: {078}Sets the shop flags for the merchant.
  {200}Item (1-4): {078}The item types the merchant will buy. Use some common sense. A
  blacksmith merchant might buy armor and weapons, but not jewelry, etc.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Shop Flags
{a}EDIT
{b}'SHOP FLAGS'
~

0 'SHOP FLAGS'~
'shop flags'~
{178}
Shop Flags{200}
=========={300}
Any or all of these flags can be set on a room, and the room will take on the
characteristics of the flag:

  {200}Identify: {078}Shopkeeper will IDENTIFY items for PCs.
  {200}Temple: {078}Only sells to members of his faith and faith allys.
  {200}Clanstore: {078}Only sells to members of a clan (shop must be in clanhall).
  {200}Xenophobe: {078}Only sells to those of the shopkeeper's race subtype.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Creating a Shop
{a}EDIT
{b}SCREATE
~

0 'INN EDITOR'~
'inn editor'~
{178}
The Shop Editor{200}
==============={200}
Syntax: edit inn   [create|delete] <vnum|mobile name>
Syntax: edit inn   <list>
Syntax: edit inn   <vnum|mobile name>
{078}
The inn editor allows you to create, delete, or edit an existing inn using
the editor menu. 

CREATE - Creates a new inn and tags it to the mobile specified. Either use
the vnum of the mobile, or target a mobile in the same room as you.
DELETE - Deletes an existing inn from the selected mobile.
LIST   - Pulls up a list of the existing inns in your assigned area.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Creating an Inn
{a}EDIT
{b}INNCREATE
~

0 INNCREATE~
inncreate~
{178}
Creating an Inn{200}
==============={300}
To create an inn, you need both the innkeeper, and the rooms created that he
will rent. These rooms should be flagged ROOM_INN in order to gain the benefits
of resting in them. You will also want to link the rooms to a way out. As the
RENT command will send a player to the room, but they still have to exit it
when done. The settings for each inn include:

  {200}Open/Close: {078}The inn opens at the beginning of the selected hour, and closes
  at the end of the hour selected as the closing hour. Time is set in 24-hour
  format. If the open hour is 0 and the close hour 23, it never closes.
  {200}Room (1-5): {078}Sets the vnum for the specified room, and the rent for
  the room in copper. One innkeeper can rent up to 5 different rooms.
  {200}Flags: {078}Sets the shop flags for the innkeeper.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Shop Flags
{a}EDIT
{b}'SHOP FLAGS'
~

0 'STABLE EDITOR'~
'stable editor'~
{178}
The Stable Editor{200}
================={200}
Syntax: edit stable  [create|delete] <vnum|mobile name>
Syntax: edit stable  <list>
Syntax: edit stable  <vnum|mobile name>
{300}
The stable editor allows you to create, delete, or edit an existing stable
using the editor menu. 

CREATE - Creates a new stable and tags it to the mobile specified. Either use
the vnum of the mobile, or target a mobile in the same room as you.
DELETE - Deletes an existing stable from the selected mobile.
LIST   - Pulls up a list of the existing stables in your assigned area.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Creating a Stable
{a}EDIT
{b}STABLECREATE
~

0 STABLECREATE~
stablecreate~
{178}
Creating a Stable{200}
================={300}
To create a stable, you need both the stablekeeper, and a room that serves as
a storage room for the animals that are checked in. This room should be flagged
such that it is inaccessible to a player, and have no links to other rooms.
The settings for each inn include:

  {200}Open/Close: {078}The inn opens at the beginning of the selected hour, and closes
  at the end of the hour selected as the closing hour. Time is set in 24-hour
  format. If the open hour is 0 and the close hour 23, it never closes.
  {200}Vnum: {078}Sets the vnum of the storage room.
  {200}Rent: {078}Sets the cost to stable your pet, in copper.
  {200}Flags: {078}Sets the shop flags for the innkeeper.

{200}  [{178}A{200}] {300}Game Editor       {200}  [{178}B{200}] {300}Shop Flags
{a}EDIT
{b}'SHOP FLAGS'
~

0 'GOD EDITOR'~
'god editor'~
{178}
The God Editor{200}
=============={200}
Syntax: edit god  <'name'>
Syntax: edit god  <list>
{078}
The god editor allows you to edit the gods in the deity list. The following
fields are editable using the Game Editor:

  {200}Name: {078}Sets the name of the deity. Use quotes for multi-word names.
  {200}Align/Ethos: {078}Sets the align (Good/Neutral/Evil) and the ethos (Lawful/Neutral/
  Chaotic) for the deity.
  {200}Weapon: {078}Sets the weapon of choice for the deity.
  {200}Domains: {078}Toggles domains on and off, you may enter multiple domains at once.
  {200}AlignHi/AlignLo/EthosHi/EthosLo: {078}Sets range of alignments for a follower of
  the deity (any follower, not just priests, as priests will never verge from 
  the one-place-removed rule.)
  {200}Race: {078}Sets the racial pantheon of the deity. Leave blank for a god that 
  accepts any race, or set multiple race types if it allows more than one.
  {200}Unproven/Acolyte/Prelate/InnerCircle/Chosen: {078}Sets the titles for a faith's
  heirarchy. Leave blank to use the default titles. Note this is formal church
  ranking, which a given PC may, or may not have at all ICly.
  {200}FaithEnemy/FaithAlly: {078}Toggle the opposing and allied faiths for the god's 
  church. Multiple faiths may be entered at once for each field.
  
Type DONE to exit the editor, or use the < and > keys to page to the previous
or next god in the list.
~

0 'RACE EDITOR'~
The Race Editor~
{200}Syntax: edit race  <'name'>
Syntax: edit race  <list>
{078}
The race editor allows you to edit the races in the database. The following
fields are editable using the Game Editor:

  {200}Name: {078}Sets the name of the race. Use quotes for multi-word names.
  {200}Hitdice: {078}Racial hit dice.
  {200}ParentRace: {078}For subraces, set the main race as its parent.
  {200}Height: {078}Longest measurement in inches.
  {200}Weight: {078}Weight in pounds.
  {200}Size: {078}Size category.
  {200}PCRace: {078}Can a player choose this race. This is usually NO.
  {200}Land/Burrow/Climb/Fly/Swim: {078}Speed of each travel mode.
  {200}Armor: {078}Natural armor bonus.
  {200}Deflection: {078}Defection AC bonus.
  {200}FavClass: {078}Favored Class for race.
  {200}Statadj: {078}modifier for (in order) STR DEX CON INT WIS CHA
  {200}Nonabilities: {078}Which abilities are non-abilities for race.
  {200}Racetype: {078}Set racetype for race.
  {200}Subtype: {078}Toggle subtypes for race.
  {200}Apply: {078}Racial applies (Syntax: apply <flag> <value>).
  {200}Vulnerable: {078}Toggles vulnerabilities (150% damage) to energy types.
  {200}Speaks: {078}Native language.
  {200}Understands: {078}Automatic languages.
  {200}BonusLangs: {078}Bonus languages.
  {200}Attacks: {078}Natural Attacks (Syntax: attacks <body part flag> <number>).
  {200}Poison: {078}Poison attack (Syntax: poison <body flag> <poison name>).
  {200}Disease: {078}Disease attack (Syntax: disease <body flag> <disease name>).
  {200}Sectors: {078}Toggles native habitat sectors for race.
  {200}Skills: {078}Default skill ranks (skill <'skill name'> <rank>).
  {200}Abilities: {078}Racial Abilities (ability <'skill name'> <level acquired>).
  {200}SpellLike: {078}Spell-Like Abilities (ability <'spell name'> <value>) Set value 
    to AW for castable at-will, or give a number of castings per day.
  
Type DONE to exit the editor, or use the < and > keys to page to the previous
or next race in the list.
{000}
{200}  [{178}A{200}] {300}Racial Types       {200}  [{178}B{200}] {300}Racial Subtypes   {200}  [{178}C{200}] {300}Sector Flags
{200}  [{178}D{200}] {300}Apply Types        {200}  [{178}E{200}] {300}Body Part Flags   {200}  [{178}F{200}] {300}Poison Types
{200}  [{178}D{200}] {300}Disease Types
{a}'RACE TYPES'
{b}'RACIAL SUBTYPES'
{c}'SECTOR FLAGS'
{d}APPLIES APPLYS
{e}'ATTACK PARTS'
~

0 MPROGS000 'MUD PROGS'~
Mud Progs~
{300}Though originally called 'mob progs', or mobile programs, it is more fitting to
dub them mud progs now, because the programs can also run on rooms, and objects
as well as mobiles. This programming language gives a lot of power to a builder
without having to delve into the hardcore realm of C programming.
{000}
{200}  [{178}A{200}] {300}Mobile Triggers   {200}  [{178}B{200}] {300}Object Triggers    {200}  [{178}C{200}] {300}Room Triggers
{200}  [{178}D{200}] {300}Variables         {200}  [{178}E{200}] {300}Variable Expansion {200}  [{178}F{200}] {300}Control Flow
{200}  [{178}G{200}] {300}Operators         {200}  [{178}H{200}] {300}If Checks          {200}  [{178}I{200}] {300}MP Commands

{200}  [{178}-{200}] {300}Return
{a}MPROGS100
{b}OPROGS100
{c}RPROGS100
{d}MPROGS200
{e}MPROGS202
{f}MPROGS300
{g}MPROGS400
{h}'IF CHECKS' 'MPROG IF CHECKS'
{i}MPROGS700 MPCOMMANDS
{-}BUILDER OLC
~

0 MPROGS100~
Mobile Triggers~
{178}
Triggers which work on mobiles
{000}
{200}  [{178}A{200}] {300}act_prog          {200}  [{178}B{200}] {300}all_greet_prog     {200}  [{178}C{200}] {300}arrival_prog
{200}  [{178}D{200}] {300}bribe_prog        {200}  [{178}E{200}] {300}buy_prog           {200}  [{178}F{200}] {300}cast_prog
{200}  [{178}G{200}] {300}death_prog        {200}  [{178}H{200}] {300}delay_prog         {200}  [{178}I{200}] {300}desc_prog
{200}  [{178}J{200}] {300}do_greet_prog     {200}  [{178}K{200}] {300}entry_prog         {200}  [{178}L{200}] {300}exit_prog
{200}  [{178}M{200}] {300}fight_prog        {200}  [{178}N{200}] {300}give_prog          {200}  [{178}O{200}] {300}greet_prog
{200}  [{178}P{200}] {300}group_greet_prog  {200}  [{178}Q{200}] {300}hitprcnt_prog      {200}  [{178}R{200}] {300}hit_prog
{200}  [{178}S{200}] {300}intercept_prog    {200}  [{178}T{200}] {300}kill_prog          {200}  [{178}U{200}] {300}rand_prog
{200}  [{178}V{200}] {300}range_prog        {200}  [{178}W{200}] {300}repop_prog         {200}  [{178}X{200}] {300}sayto_prog
{200}  [{178}Y{200}] {300}social_prog       {200}  [{178}Z{200}] {300}speech_prog        {200}  [{178}1{200}] {300}time_prog
{200}  [{178}2{200}] {300}trap_prog         {200}  [{178}3{200}] {300}trigger_prog

{200}  [{178}-{200}] {300}Return to Mud Progs
{a}ACT_PROG
{b}ALL_GREET_PROG
{c}ARRIVAL_PROG
{d}BRIBE_PROG
{e}BUY_PROG
{f}CAST_PROG
{g}DEATH_PROG
{h}DELAY_PROG
{i}DESC_PROG
{j}DO_GREET_PROG
{k}ENTRY_PROG
{l}EXIT_PROG
{m}FIGHT_PROG
{n}GIVE_PROG
{o}GREET_PROG
{p}GROUP_GREET_PROG
{q}HITPRCNT_PROG
{r}HIT_PROG
{s}INTERCEPT_PROG
{t}KILL_PROG
{u}RAND_PROG
{v}RANGE_PROG
{w}REPOP_PROG
{x}SPEECH_PROG SAYTO_PROG
{y}SOCIAL_PROG
{z}SPEECH_PROG SAYTO_PROG
{1}TIME_PROG
{2}TRAP_PROG
{3}TRIGGER_PROG
{-}MPROGS000 'MUD PROGS'
~

0 OPROGS100~
Object Triggers~
{178}
Triggers which work on objects
{000}
{200}  [{178}A{200}] {300}act_prog          {200}  [{178}B{200}] {300}all_greet_prog     {200}  [{178}C{200}] {300}cast_prog
{200}  [{178}D{200}] {300}damage_prog       {200}  [{178}E{200}] {300}desc_prog          {200}  [{178}F{200}] {300}drop_prog
{200}  [{178}G{200}] {300}fight_prog        {200}  [{178}H{200}] {300}get_prog           {200}  [{178}I{200}] {300}give_prog
{200}  [{178}J{200}] {300}greet_prog        {200}  [{178}K{200}] {300}group_greet_prog   {200}  [{178}L{200}] {300}hit_prog
{200}  [{178}M{200}] {300}intercept_prog    {200}  [{178}N{200}] {300}rand_prog          {200}  [{178}O{200}] {300}remove_prog
{200}  [{178}P{200}] {300}repop_prog        {200}  [{178}Q{200}] {300}sac_prog           {200}  [{178}R{200}] {300}speech_prog
{200}  [{178}S{200}] {300}time_prog         {200}  [{178}T{200}] {300}trap_prog          {200}  [{178}U{200}] {300}trigger_prog
{200}  [{178}V{200}] {300}use_prog          {200}  [{178}W{200}] {300}wear_prog

{200}  [{178}-{200}] {300}Return
{a}ACT_PROG
{b}ALL_GREET_PROG
{c}CAST_PROG
{d}DAMAGE_PROG
{e}DESC_PROG
{f}DROP_PROG GET_PROG
{g}FIGHT_PROG
{h}DROP_PROG GET_PROG
{i}GIVE_PROG
{j}GREET_PROG
{k}GROUP_GREET_PROG
{l}HIT_PROG
{m}INTERCEPT_PROG
{n}RAND_PROG
{o}WEAR_PROG REMOVE_PROG
{p}REPOP_PROG
{q}SAC_PROG
{r}SPEECH_PROG SAYTO_PROG
{s}TIME_PROG
{t}TRAP_PROG
{u}TRIGGER_PROG
{v}USE_PROG
{w}WEAR_PROG REMOVE_PROG
{-}MPROGS000 'MUD PROGS'
~

0 RPROGS100~
Room Triggers~
{178}
Triggers which work on rooms
{000}
{200}  [{178}A{200}] {300}act_prog          {200}  [{178}B{200}] {300}cast_prog          {200}  [{178}C{200}] {300}death_prog
{200}  [{178}D{200}] {300}desc_prog         {200}  [{178}E{200}] {300}entry_prog         {200}  [{178}F{200}] {300}exit_prog
{200}  [{178}G{200}] {300}fight_prog        {200}  [{178}H{200}] {300}greet_prog         {200}  [{178}I{200}] {300}group_greet_prog
{200}  [{178}J{200}] {300}intercept_prog    {200}  [{178}K{200}] {300}kill_prog          {200}  [{178}L{200}] {300}rand_prog
{200}  [{178}M{200}] {300}speech_prog       {200}  [{178}N{200}] {300}time_prog

{200}  [{178}-{200}] {300}Return
{a}ACT_PROG
{b}CAST_PROG
{c}DEATH_PROG
{d}DESC_PROG
{e}ENTRY_PROG
{f}EXIT_PROG
{g}FIGHT_PROG
{h}GREET_PROG
{i}GROUP_GREET_PROG
{j}INTERCEPT_PROG
{k}KILL_PROG
{l}RAND_PROG
{m}SPEECH_PROG SAYTO_PROG
{n}TIME_PROG
{-}MPROGS000 'MUD PROGS'
~

0 ACT_PROG~
act_prog~
{178}
Act Programs
{200}
>act_prog [p|k] <argument>
{300}
The argument is a list of keywords separated by spaces. If the first word is
the character 'p' by itself then the rest of the word list is considered to
be a phrase.  If the first word is the character 'k' by itself then the rest of
the word list is considered to be a set of keywords which all must be matched.
The trigger is activated whenever a keyword (or the phrase) is contained in the
act() message. Both the phrase and keywords are not case sensitive.

The act_prog will trigger on every action made by a player, it ignores mobs
~

0 SPEECH_PROG SAYTO_PROG~
speech_prog sayto_prog~
{178}
Speech Programs
{200}
>speech_prog [p|k] <argument>
>sayto_prog  [p|k] <argument>
{300}
The argument is a list of keywords separated by spaces. If the first word is
the character 'p' by itself then the rest of the word list is considered to
be a phrase.  If the first word is the character 'k' by itself then the rest of
the word list is considered to be a set of keywords which all must be matched.
The trigger is activated whenever a keyword (or the phrase) is contained in the
say message. Both the phrase and keywords are not case sensitive.

The speech_prog will trigger on every speech command made by a player. The
whisper command will only trigger it if a mobile with the program is targeted.
The trigger ignores mobs. speech_progs also work upon objects and rooms.

The sayto_prog will trigger only if a mobile with the program is targeted
with 'sayto', which helps to avoid accidental triggers. 
~

0 SOCIAL_PROG~
social_prog~
{178}
Social Programs
{200}
>social_prog <argument>
{300}
The argument is a social listed in the social list.

The social_prog will trigger on every social made by a player or mob, where
the mobile with the program must be the target.
~

0 RAND_PROG~
rand_prog~
{178}
Rand Programs
{200}
>rand_prog <percentage>
{300}
The argument is a number between 1 and 100.

This trigger is checked every second and if the argument is greater than a
percentage roll the trigger is activated. If there is no $r variable in the
program of the rand_prog this will happen even if there is no PC in the room
with the mob. It will never trigger if there are no players in the area.

Mobs can have multiple rand_progs, but only 1 can trigger each second. So you
have to order them from highest percentage to least.
~

0 CAST_PROG~
cast_prog~
{178}
Cast Programs
{200}
>cast_prog <'argument'>
{300}
The argument is the name of a spell.

This trigger will be activated if the player casts the named spell in the same
room as the mobile, obj, or room with the prog. The potential for this trigger
is myriad, allowing a mobile to react to the caster with speech, counter spells
of its own, hostile reactions, etc. This prog does not interrupt the spell,
only triggers in reaction to it.
~

0 FIGHT_PROG~
fight_prog~
{178}
Fight Programs
{200}
>fight_prog <percentage>
{300}
The argument is a number between 1 and 100.

This trigger is checked every combat round and if the argument is greater than
a percentage roll the trigger is activated. 

A mobile will not act according to their coded AI when a fight_prog on it is
triggered.

When placed on an object, it will only trigger if the PC holding or wearing it
is actively engaged in combat.

When placed on a room, it triggers at the end of each combatant's turn, with
that player as the actor.

A single mob/obj/room can have multiple fight_progs, but only 1 can trigger
each combat round, so you need to order the fight_progs in descending order to
give each of them a chance to trigger.
~

0 HITPRCNT_PROG~
hitprcnt_prog~
{178}
Hitprcnt Programs
{200}
>hitprcnt_prog <percentage>
{300}
The argument is a number between 1 and 100.

This trigger is checked every combat round and if the argument is greater than
the mobile's current hit points the trigger is activated.

Mobs can have multiple hitprcnt_progs, but only the first succesful one will
trigger each combat round. Multiple hitprcnt_progs should be listed in
increasing order of percent since a 40 will always be activated before a 20.

Be aware that a fight_prog and hitprcnt_prog can both trigger in a round.
~

0 HIT_PROG~
hit_prog~
{178}
Hit Programs
{200}
>hit_prog <percentage>
{300}
The argument is a number between 1 and 100.

When placed upon a mobile, this trigger is checked every time the mobile takes
damage, and if the argument is greater than a percentage roll the trigger is
activated.

When placed upon an object, this trigger is checked every time the wearer takes
damage, and if the argument is greater than a percentage roll the trigger is
activated. The hit_prog only triggers if a PC is wearing the object.

Mobs and objects can have multiple hit_progs, but only the first succesful one
will trigger each combat round. Multiple hit_progs should be listed in
increasing order of percent since a 40 will always be activated before a 20.
~

0 GREET_PROG~
greet_prog~
{178}
Greet Programs
{200}
>greet_prog <percentage>
{300}
The argument is a number between 1 and 100

This trigger is checked every time a PC enters the room with the mobile, object
or room with the prog. This prog will trigger whether or not the character can
be seen.

The greet_prog will not trigger when a mobile with the trigger is fighting.
~

0 ALL_GREET_PROG~
all_greet_prog~
{178}
All Greet Programs
{200}
>all_greet_prog <percentage>
{300}
the all_greet_prog has been deprecated in Mud20. With the advent of do_greet
and group_greet progs, there's no real reason to not let a standard greet_prog
do the job of an all_greet_prog as well.
~

0 DESC_PROG~
desc_prog~
{178}
Desc Programs
{200}
>desc_prog <percentage>
{300}
The argument is a number between 1 and 100.

Triggers whenever someone looks at the mobile, object or room with the prog.
This can be used to give a random desc to something or someone, or to trigger
a reaction, or other possibilities.
~

0 DO_GREET_PROG~
do_greet_prog~
{178}
Do Greet Programs
{200}
>do_greet_prog <percentage>
{300}
The argument is a number between 1 and 100

This trigger is checked when a PC actively greets a mobile using the 'greet'
command. This effectively restricts the trigger to someone actively trying to
interact with the mobile. This is quite shamelessly borrowed from the cues of
online games with NPCs that trigger when interacted with. Like sayto triggers,
handy for preventing accidental triggers.

The do_greet_prog will not trigger when the mobile is fighting.
~

0 GROUP_GREET_PROG~
group_greet_prog~
{178}
Group Greet Programs
{200}
>group_greet_prog <percentage>
{300}
The argument is a number between 1 and 100

This trigger is checked every time a PC enters the room with the mobile and
if the argument is greater than a percentage roll the trigger is activated.

The mobile must be able to see the person walking in, otherwise the prog will
not trigger. If a group enters all at once, the prog is only triggered once,
rather than once for each person in the group. Use this when writing quests
that are meant to be taken as a group, so the mobile doesn't spam the room when
PCs enter.

The group_greet_prog will not trigger when the mobile is fighting.
~

0 ENTRY_PROG~
entry_prog~
{178}
Entry Programs
{200}
>entry_prog <percentage>
{300}
The argument is a number between 1 and 100.

This trigger is checked every time a mobile walks into a room and if the
argument is greater than a percentage roll the trigger is activated. If there
is no $r variable in the program of the entry_prog this will happen even if
there is no PC in the room with the mob.

Mobs can have multiple entry_progs, but only 1 can trigger each time. So progs
must be arranged in decreasing order of percentage.

If applied to a room, the program triggers every time a mobile walks into the
room with the program.
~

0 ARRIVAL_PROG~
arrival_prog~
{178}
Arrival Programs
{200}
>arrival_prog <vnum>
{300}
The argument is a room vnum.

Triggered when a mobile enters the final room after doing MPWALKTO, and also
when arriving back at it's reset room. If the check matches the vnum of the
room presently in, the program activates.
~

0 GIVE_PROG~
give_prog~
{178}
Give Programs
{200}
>give_prog <argument>
{300}
When placed on a mobile, the argument must be the name of an object. When
placed upon an object, the argument is a percentage from 1 to 100.

This trigger is checked every time a mobile with the program is given an
object. The argument should always be used with the 'I' format for item vnums,
unless you truly want any object with another keyword to trigger the program.

Example: A ball of light is vnum 21, so use: give_prog i25

When placed on an object, the give_prog triggers any time the object is given
from one PC to a mobile or another PC.

$o in the prog will refer to the triggering object.
~

0 DROP_PROG GET_PROG~
drop_prog get_prog~
{178}
Drop/Get Programs
{200}
>drop_prog <percentage>
>get_prog <percentage>
{300}
The argument is a number between 1 and 100.

These triggers are checked when an object with the program is dropped, or
picked up. If the argument is greater than a percentage roll the trigger is
activated.
~

0 SAC_PROG~
sac_prog~
{178}
Sacrifice Programs
{200}
>sac_prog <percentage>
{300}
The argument is a number between 1 and 100.

This program triggers when an object with the program is sacrificed. If the
argument is greater than a percentage roll the trigger is activated.
~

0 DAMAGE_PROG~
damage_prog~
{178}
Damage Programs
{200}
>damage_prog <percentage>
{300}
The argument is a number between 1 and 100.

This program triggers when an object with the trigger is equipped by a player
and that player does damage with an attack.
~

0 BUY_PROG~
buy_prog~
{178}
Buy Programs
{200}
>buy_prog <argument>
{300}
The argument must be the name of an object.

This trigger is checked every time a an object is bought from a mobile with the
program. The argument should always be used with the 'i' format for item vnums.

Example: A ball of light is vnum 21, so use: buy_prog i25

$o in the prog will refer to the triggering object.
~

0 BRIBE_PROG~
bribe_prog~
{178}
Bribe Programs
{200}
>bribe_prog <argument>
{300}
The argument must be a number.

This trigger is checked whenever money is given to the mobile. If the
amount given equals or exceeds the number, the program will be executed.
The number is the value in copper pieces.

Only one bribe_prog can be triggered each time an amount of coin is given.
Multiple progs should be listed in order from largest to smallest,
because a bribe prog of 1 copper will trigger whether the amount given is
one or a thousand. A prog of a larger amount, if not triggered, will fall to
the prog with the next largest amount, and so on.
~

0 DEATH_PROG~
death_prog~
{178}
Death Programs
{200}
>death_prog <percentage>
{300}
The argument is a number between 1 and 100.

This triggers when the mobile is about to die, before the corpse is made. If
the amount given is greater than a percentage roll the program is triggered.

The position of the mobile is temporarily set to standing.

If applied to a room, the prog triggers whenever an NPC is killed by a PC in
the room with the program.
~

0 TRAP_PROG~
trap_prog~
{178}
Trap Programs
{200}
>trap_prog <percentage>
{300}
The argument is a number between 1 and 100.

This can be set upon a mobile or object that's summoned by a trap using the
TRAP_TYPE_MLOAD or TRAP_TYPE_OLOAD flags. The combination of this flag and the
mob prog trigger can make for very elaborate and complex traps and trap
effects.
~

75 KILL_PROG~
kill_prog~
{178}
Kill Programs
{200}
>kill_prog <percentage>
{300}
The argument is a number between 1 and 100.

This triggers when the mobile kills a player, before the corpse is made and
the player transferred to the death room.

It is possible, for example, to use this program to set a bit on the player
that causes him to fail a quest should he get killed by the mobile while on
that quest.

If applied to a room, the program triggers whenever a PC is killed by an NPC
in the room with the program.
~

0 RANGE_PROG~
range_prog~
{178}
Range Programs
{200}
>range_prog <percentage>
{300}
The argument is a number between 1 and 100.

This triggers when a mobile is hit by a range weapon from another room. The
shotfrom ifcheck can be used to see the direction the shot came from.
~

0 TIME_PROG~
time_prog~
{178}
Time Programs
{200}
>time_prog  <hour>
>day_prog   <day of month>
>month_prog <month of year>
{300}
The argument for time_prog is a number between 0 and 23. This is checked every
mud hour, if the given hour matches the mud hour the program will be executed.
If you use the number 24, the program will be triggered every mud hour.

The argument for day_prog is a number between 0 and 29. This is checked every
mud day, if the given day matches the mud day the program will be executed. If
you use the number 30, the program will be triggered every mud day.

The argument for month_prog is a number between 0 and 11. This is checked every
mud month, if the given month matches the mud month the program will be
executed. If you use the number 24, the program will be triggered every mud
month.
~

0 REPOP_PROG~
repop_prog~
{178}
Repop Programs
{200}
>repop_prog <percentage>
{300}
The argument is a number between 1 and 100.

This triggers when a mobile or object repops after dying or after reset. One
possible use for this is to echo a  more rational reason for its reappearance
than simply reappearing where the original one disappeared. It could also be
used to give a nasty surprise to a player who was hanging around waiting for
another go at a mobile, by making the mobile do something unexpected.
~

0 DELAY_PROG~
delay_prog~
{178}
Delay Programs
{200}
>delay_prog <index>
{300}
The index is a number between -100 and 100, if the index is below 0, the delay
program will be carried out even if the mobile is not awake.
{200}
Syntax: mpdelay <target> <seconds> <index> [argument]
{300}
-Seconds is the time in seconds of the delay, if the given time is equal or
 greater than 60, instead of being second based the delay will become mud
 hours based.
-The index is the index of the delay_prog that should be triggered when the
 delay expires.
-The argument can be any valid $* argument, or something of your own choice,
 or leave it blank if you don't want the mob to remember anything.
 You can read out this argument at anytime using $X.
{300}
-You can check if the target is already delayed using: if delayed ($*)
~

0 EXIT_PROG~
exit_prog~
{178}
Exit Programs
{200}
>exit_prog <direction>
{300}
The argument is either one of: north, south, east, west, up, down.

This trigger is checked every time a PC leaves the room with the mobile or room
program. A mobile with the program must be able to see the person walking out,
otherwise the exit_prog will not trigger. A room program will always see the
person leaving.

The exit_prog on a mobile will not trigger when the mobile is fighting.

Note exit_progs do not stop the person from leaving the room. Use an intercept
program on the direction if you wish to halt the player in their tracks.
~

0 TRIGGER_PROG~
trigger_prog~
{178}
Trigger Programs
{200}
>trigger_prog [p k] <argument>
{300}
The argument is a list of keywords separated by spaces. If the first word is
the character 'p' by itself then the rest of the word list is considered to
be a phrase.  If the first word is the character 'k' by itself then the rest of
the word list is considered to be a set of keywords which all must be matched.
The trigger is activated whenever a keyword (or the phrase) is contained in the
mptrigger message. Both the phrase and keywords are not case sensitive.

The trigger_prog can only be triggered with the mptrigger <string> command.
It is useable both on mobiles, and objects.
~

0 INTERCEPT_PROG~
intercept_prog~
{178}
Intercept Programs
{200}
>intercept_prog [p k] <argument>
{300}
The intercept program is a special sort of word trigger that intercepts any
command that triggers it. This can either be an unknown command or a known
command. A known command is overridden, and only passed when an mpunintercept
command is also found in the same program.

The argument is a list of keywords separated by spaces. If the first word is
the character 'p' by itself then the rest of the word list is considered to
be a phrase.  If the first word is the character 'k' by itself then the rest of
the word list is considered to be a set of keywords which all must be matched.
The trigger is activated whenever a keyword (or the phrase) is contained in the
intercept message. Neither the phrase or keywords are case sensitive.
{a}MPUNINTERCEPT
~

0 USE_PROG~
use_prog~
{178}
Use Programs
{200}
>use_prog <percentage>
{300}
The argument is a number between 1 and 100.

Triggers on an object when activated with the USE command. This basically
allows you to create a plethora of trigger-use items beyond the typical wand,
staff or whatever. Note a use_prog overrides any other result of the USE
command when it triggers, so it's not advised to use it on other use items, 
unless a random event during said item's use (a backfire, a curse, etc) is what
you're after.
~

0 WEAR_PROG REMOVE_PROG~
wear_prog remove_prog~
{178}
Wear/Remove Programs
{200}
>wear_prog <percentage>
>remove_prog <percentage>
{300}
The argument is a number between 1 and 100.

The program activates if the value exceeds a percentage roll.

a wear_prog triggers on an object with the program is equipped. A remove_prog
on an object triggers when the object is unequipped.
~

0 MPROGS200~
Variables~
{300}Variables are used to target certain mobiles or objects in a program as it
runs. The possible targets are:

  $i    mobile running the mob program
  $n    mobile or PC who triggered the prog
  $t    mobile or PC if checked for during prog
  $r    random PC selected in a random prog
  $c    object selected during if check in prog
  $o    object running or triggering an obj prog
{000}
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}MPROGS210
{>}MPROGS201
{-}MPROGS000 'MUD PROGS'
~

0 MPROGS201~
Variables - Cont'd~
{300}
  $D    name of door direction
  $d    number of door direction
  $x    number generated by if checks
  $X    string set to remember by mob
  $1    first word of trigger of speech/act/intercept program
  $9    ninth word of trigger of speech/act/intercept program
  $$    will print a single $

  self  a direct reference to the mob with the prog
{000}
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}MPROGS200
{>}MPROGS202
{-}MPROGS000 'MUD PROGS'
~

0 MPROGS202~
Variable Expansion~
{300}When printing a string, mud progs can expand the target of the prog into 
different words depending on the case and character used after the '$' symbol.

  variable           mob     actor     vict     rand    objif   obj

  name                $i       $n       $t       $r      $c      $o
  short desc*         $I       $N       $T       $R      $C      $O
  he/she/it           $j       $e       $E       $J      --      --
  him/her/it          $k       $m       $M       $K      --      --
  his/hers/its        $l       $s       $S       $L      --      --
  
  * When expanding the short desc, if $n is a PC, either the adjective, or name
  of the PC is printed to each onlooker in the room, dependant upon whether the
  onlooker has the PC greeted or not.
{000}
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}MPROGS201
{>}MPROGS210
{-}MPROGS000 'MUD PROGS'
~

0 MPROGS210~
Variable Expansion - Cont'd~
{300}The prog code has the ability to expand certain aspects of a variable into a
text string, by tagging the aspect after the variable with a '.':
{178}
  $n.name   returns the name of the target.
  $n.adj    returns the ungreeted adjective of the target.
  $n.sex    returns the sex of the target.
  $n.class  returns the current class of the target.
  $n.race   returns the race of the target.
  $n.god    returns the deity of the target.
  $n.level  returns the level of the target.
  $o.type   returns the item type of an object.
{000}
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}MPROGS202
{>}MPROGS200
{-}MPROGS000 'MUD PROGS'
~

0 MPROGS300~
Control Flow~
{300}The following commands are available to control the flow in a mobile program:

if            checks for a condition  example : if level ($n) > 10
or            checks for a condition  example : or level ($n) < 50

else          is called when the result of the if/or checks are false
endif         ends an if check

break         bails out of the entire mobile program

switch        checks for a condition  example : switch level ($n)
case          checks for a specific value of the switch
default       checks if no case value has been found
endswitch     ends a switch

mpquiet on    all commands are executed unseen
mpquiet off   ends the quiet mode

mpunintercept passes the command that triggers an intercept_prog
~

0 APPLIES APPLYS~
Affect Applys~
{300}A comprehensive (and exhaustive) list of applies for use in object affects,
spell affects, racial modifiers and etc:
{178}
 editor string      flag                  modifier{300}
 str                APPLY_STR             strength
 dex                APPLY_DEX             dexterity
 int                APPLY_INT             intelligence
 wis                APPLY_WIS             wisdom
 con                APPLY_CON             constitution
 cha                APPLY_CHA             charisma
 sex                APPLY_SEX             sex
 race               APPLY_RACE            race
 level              APPLY_LEVEL           level
 size               APPLY_SIZE            size
 mana               APPLY_MANA            spell points
 hp                 APPLY_HIT             hit points
 move               APPLY_MOVE            endurance
 save_fort          APPLY_SAVING_FORT     circumstance to FORT
 save_refl          APPLY_SAVING_REFL     circumstance to REFL
 
{200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{>}APPLYS02
{-}APPLIES APPLYS
~

0 APPLYS02~
Affect Applys 2~
{178} editor string      flag                  modifier{300}
 save_will          APPLY_SAVING_WILL     circumstance to WILL
 saves              APPLY_SAVES           circumstance to saves
 deflect            APPLY_DEFLECT         deflection AC
 dodge              APPLY_DODGE           dodge AC
 shield             APPLY_SHIELD          shield AC
 armor              APPLY_ARMOR           armor bonus
 comp_skill         APPLY_COMP_SKILL      competence to skills
 comp_tohit         APPLY_COMP_TOHIT      competence to hit
 comp_dam           APPLY_COMP_DAMG       competence to damage
 comp_fort          APPLY_COMP_FORT       competence to FORT
 comp_refl          APPLY_COMP_REFL       competence to REFL
 comp_will          APPLY_COMP_WILL       competence to WILL
 comp_saves         APPLY_COMP_SAVES      competence to saves
 enhance_ac         APPLY_ENHANCE_AC      enhancement to AC
 tohit              APPLY_HITROLL         enhancement to hit
 dam                APPLY_DAMROLL         enhancement to damage
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLIES APPLYS
{>}APPLYS03
{-}APPLIES APPLYS
~

0 APPLYS03~
Affect Applys 3~
{178} editor string      flag                  modifier{300}
 insight_ac         APPLY_INS_AC          insight to AC
 insight_tohit      APPLY_INS_TOHIT       insight to hit
 insight_fort       APPLY_INS_FORT        insight to FORT
 insight_refl       APPLY_INS_REFL        insight to REFL
 insight_will       APPLY_INS_WILL        insight to WILL
 insight_saves      APPLY_INS_SAVES       insight to saves
 insight_skill      APPLY_INS_SKILL       insight to skills
 luck_skill         APPLY_LUCK_SKILL      luck to skills
 luck_tohit         APPLY_LUCK_TOHIT      luck to hit
 luck_dam           APPLY_LUCK_DAMG       luck to damage
 luck_fort          APPLY_LUCK_FORT       luck to FORT
 luck_refl          APPLY_LUCK_REFL       luck to REFL
 luck_will          APPLY_LUCK_WILL       luck to WILL
 luck_saves         APPLY_LUCK_SAVES      luck to save
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS02
{>}APPLYS04
{-}APPLIES APPLYS
~

0 APPLYS04~
Affect Applys 4~
{178} editor string      flag                  modifier{300}
 morale_tohit       APPLY_MOR_TOHIT       morale to hit
 morale_dam         APPLY_MOR_DAMG        morale to damage
 morale_fort        APPLY_MOR_FORT        morale to FORT
 morale_refl        APPLY_MOR_REFL        morale to REFL
 morale_will        APPLY_MOR_WILL        morale to WILL
 morale_saves       APPLY_MOR_SAVES       morale to saves
 morale_skill       APPLY_MOR_SKILL       morale to skills
 natural_ac         APPLY_NATURAL_AC      natural armor
 resist_vs_good     APPLY_RES_GOOD        saves vs. good
 resist_vs_evil     APPLY_RES_EVIL        saves vs. evil
 resist_vs_law      APPLY_RES_LAW         saves vs. law
 resist_vs_chaos    APPLY_RES_CHAOS       saves vs. chaos
 resist_vs_saves    APPLY_RES_SAVES       to all saves
 save_vs_spell      APPLY_RES_SPELL       saves vs. spells
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS03
{>}APPLYS05
{-}APPLIES APPLYS
~

0 APPLYS05~
Affect Applys 5~
{178} editor string      flag                  modifier{300}
 appraise           APPLY_APPRAISE        to appraise skill
 bluff              APPLY_BLUFF           to bluff skill
 climb              APPLY_CLIMB           to climb skill
 concentration      APPLY_CONCENTRATE     to concentration skill
 decipher           APPLY_DECIPHER        to decipher skill
 diplomacy          APPLY_DIPLOMACY       to diplomacy skill
 disable_device     APPLY_DISABLE         to disable device skill
 disguise           APPLY_DISGUISE        to disguise skill
 escape             APPLY_ESCAPE          to escape artist skill
 first_aid          APPLY_FIRST_AID       to first aid skill
 streetwise         APPLY_GATHER_INFO     to gather info skill
 handle_animal      APPLY_HANDLE_ANIM     to handle animal skill
 hide               APPLY_HIDE            to hide skill
 intimidate         APPLY_INTIMIDATE      to intimidate skill
 jump               APPLY_JUMP            to jump skill
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS04
{>}APPLYS06
{-}APPLIES APPLYS
~

0 APPLYS06~
Affect Applys 6~
{178} editor string      flag                  modifier{300}
 listen             APPLY_LISTEN          to sound perception
 mount              APPLY_MOUNT           to mount skill
 pick_lock          APPLY_OPEN_LOCK       to pick lock skill
 perform            APPLY_PERFORM         to perform skill 
 search             APPLY_SEARCH          to search skill
 sneak              APPLY_SNEAK           to sneak skill
 sense_motive       APPLY_SENSE_MOT       to sense motive skill
 sleight_of_hand    APPLY_SLEIGHT         to sleight of hand
 spellcraft         APPLY_SPELLCRAFT      to spellcraft skill
 spot               APPLY_SIGHT           to sight perception
 survival           APPLY_SURVIVAL        to survival skill
 swim               APPLY_SWIM            to swim skill
 tumble             APPLY_TUMBLE          to tumble skill
 use_magic          APPLY_USE_MAGIC       to use magic skill
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS05
{>}APPLYS07
{-}APPLIES APPLYS
~

0 APPLYS07~
Affect Applys 7~
{178} editor string      flag                  modifier{300}
 alchemy            APPLY_CRAFT_ALCHEMY   to alchemy skill
 armorsmithing      APPLY_CRAFT_ARMOR     to armorsmithing skill
 bowmaking          APPLY_CRAFT_BOWS      to bowmaking skill
 cooking            APPLY_CRAFT_COOKING   to cooking skill
 fletching          APPLY_CRAFT_FLETCHING to fletching skill
 jewelry            APPLY_CRAFT_JEWELRY   to jewelcrafting skill
 leathermaking      APPLY_CRAFT_LEATHER   to leathermaking skill
 mining             APPLY_CRAFT_MINING    to mining skill
 poisoncrafting     APPLY_CRAFT_POISON    to poisoncraft skill
 tailoring          APPLY_CRAFT_TAILOR    to tailoring skill
 trapmaking         APPLY_CRAFT_TRAPS     to trapmaking skill
 weaponsmithing     APPLY_CRAFT_WEAPONS   to weaponsmithing skill
 spell_slot_1       APPLY_SPELL_SLOTS_1   1st circle spell slot
 spell_slot_2       APPLY_SPELL_SLOTS_2   2nd circle spell slot
 spell_slot_3       APPLY_SPELL_SLOTS_3   3rd circle spell slot
 spell_slot_4       APPLY_SPELL_SLOTS_4   4th circle spell slot
 spell_slot_5       APPLY_SPELL_SLOTS_5   5th circle spell slot
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS06
{>}APPLYS08
{-}APPLIES APPLYS
~

0 APPLYS08~
Affect Applys 8~
{178} editor string      flag                  modifier{300}
 str_damage         APPLY_STR_DAMAGE      STR damage
 dex_damage         APPLY_DEX_DAMAGE      DEX damage
 con_damage         APPLY_CON_DAMAGE      CON damage
 int_damage         APPLY_INT_DAMAGE      INT damage
 wis_damage         APPLY_WIS_DAMAGE      WIS damage
 cha_damage         APPLY_CHA_DAMAGE      DEX damage
 str_drain          APPLY_STR_DRAIN       STR drain
 dex_drain          APPLY_DEX_DRAIN       DEX drain
 con_drain          APPLY_CON_DRAIN       CON drain
 int_drain          APPLY_INT_DRAIN       INT drain
 wis_drain          APPLY_WIS_DRAIN       WIS drain
 cha_drain          APPLY_CHA_DRAIN       DEX drain
 save_vs_acid       APPLY_SAVE_ACID       save vs. acid
 save_vs_air        APPLY_SAVE_AIR        save vs. air spells
 save_vs_chaotic    APPLY_SAVE_CHAOTIC    save vs. chaotic spells
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS07
{>}APPLYS09
{-}APPLIES APPLYS
~

0 APPLYS09~
Affect Applys 9~
{178} editor string      flag                  modifier{300}
 save_vs_charm      APPLY_SAVE_CHARM      save vs. charm spells
 save_vs_cold       APPLY_SAVE_COLD       save vs. cold
 save_vs_compulsion APPLY_SAVE_COMPULSION save vs. compulsion spells
 save_vs_darkness   APPLY_SAVE_DARKNESS   save vs. darkness spells
 save_vs_death      APPLY_SAVE_DEATH      save vs. death magic
 save_vs_disease    APPLY_SAVE_DISEASE    save vs. disease
 save_vs_earth      APPLY_SAVE_EARTH      save vs. earth spells
 save_vs_electric   APPLY_SAVE_ELECTRIC   save vs. electricity
 save_vs_evil       APPLY_SAVE_EVIL       save vs. evil spells
 save_vs_fear       APPLY_SAVE_FEAR       save vs. fear
 save_vs_fire       APPLY_SAVE_FIRE       save vs. fire
 save_vs_force      APPLY_SAVE_FORCE      save vs. force spells
 save_vs_good       APPLY_SAVE_GOOD       save vs. good spells
 save_vs_illusion   APPLY_SAVE_ILLUSION   save vs. illusion
 save_vs_lawful     APPLY_SAVE_LAWFUL     save vs. lawful spells
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS08
{>}APPLYS10
{-}APPLIES APPLYS
~

0 APPLYS10~
Affect Applys 10~
{178} editor string      flag                  modifier{300}
 save_vs_light      APPLY_SAVE_LIGHT      save vs. light spells
 save_vs_magic      APPLY_SAVE_MAGIC      save vs. magic
 save_vs_mind       APPLY_SAVE_MIND       save vs. mind affects
 save_vs_negative   APPLY_SAVE_NEGATIVE   save vs. negative energy
 save_vs_paralysis  APPLY_SAVE_PARALYSIS  save vs. paralysis
 save_vs_petri      APPLY_SAVE_PETRI      save vs. pretification
 save_vs_poison     APPLY_SAVE_POISON     save vs. poison
 save_vs_healing    APPLY_SAVE_HEALING    save vs. healing energy
 save_vs_sleep      APPLY_SAVE_SLEEP      save vs. sleep
 save_vs_sonic      APPLY_SAVE_SONIC      save vs. sonic spells
 save_vs_water      APPLY_SAVE_WATER      save vs. water spells
 immune_acid        APPLY_IMM_ACID        immunity vs. acid
 immune_air         APPLY_IMM_AIR         immunity vs. air spells
 immune_chaotic     APPLY_IMM_CHAOTIC     immunity vs. chaotic spells
 immune_charm       APPLY_IMM_CHARM       immunity vs. charm spells
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS09
{>}APPLYS11
{-}APPLIES APPLYS
~

0 APPLYS11~
Affect Applys 11~
{178} editor string      flag                  modifier{300}
 immune_cold        APPLY_IMM_COLD        immunity vs. cold
 immune_compulsion  APPLY_IMM_COMPULSION  immunity vs. compulsion spells
 immune_darkness    APPLY_IMM_DARKNESS    immunity vs. darkness spells
 immune_death       APPLY_IMM_DEATH       immunity vs. death magic
 immune_disease     APPLY_IMM_DISEASE     immunity vs. disease
 immune_earth       APPLY_IMM_EARTH       immunity vs. earth spells
 immune_electric    APPLY_IMM_ELECTRIC    immunity vs. electricity
 immune_evil        APPLY_IMM_EVIL        immunity vs. evil spells
 immune_fear        APPLY_IMM_FEAR        immunity vs. fear
 immune_fire        APPLY_IMM_FIRE        immunity vs. fire
 immune_force       APPLY_IMM_FORCE       immunity vs. force spells
 immune_good        APPLY_IMM_GOOD        immunity vs. good spells
 immune_illusion    APPLY_IMM_ILLUSION    immunity vs. illusion
 immune_lawful      APPLY_IMM_LAWFUL      immunity vs. lawful spells
 immune_light       APPLY_IMM_LIGHT       immunity vs. light spells
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS10
{>}APPLYS12
{-}APPLIES APPLYS
~

0 APPLYS12~
Affect Applys 12~
{178} editor string      flag                  modifier{300}
 immune_magic       APPLY_IMM_MAGIC       immunity vs. magic
 immune_mind        APPLY_IMM_MIND        immunity vs. mind affects
 immune_negative    APPLY_IMM_NEGATIVE    immunity vs. negative energy
 immune_paralysis   APPLY_IMM_PARALYSIS   immunity vs. paralysis
 immune_petri       APPLY_IMM_PETRI       immunity vs. pretification
 immune_poison      APPLY_IMM_POISON      immunity vs. poison
 immune_healing     APPLY_IMM_HEALING     immunity vs. healing energy
 immune_sleep       APPLY_IMM_SLEEP       immunity vs. sleep
 immune_sonic       APPLY_IMM_SONIC       immunity vs. sonic
 immune_water       APPLY_IMM_WATER       immunity vs. water spells
 spell_res          APPLY_SPELL_RES       spell resistance
 sr_vs_chaos        APPLY_SR_CHAOS        spell resist vs. chaotic
 sr_vs_evil         APPLY_SR_EVIL         spell resist vs. evil
 sr_vs_good         APPLY_SR_GOOD         spell resist vs. good
 sr_vs_law          APPLY_SR_LAW          spell resist vs. lawful
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS11
{>}APPLYS13
{-}APPLIES APPLYS
~

0 APPLYS13~
Affect Applys 13~
{178} editor string      flag                  modifier{300}
 fast_healing       APPLY_FAST_HEALING    fast healing
 regeneration       APPLY_REGENERATION    regeneration
 turn_resistance    APPLY_TURN_RESIST     turn resistance
 darkvision         APPLY_DARKVISION      darkvision
 lowlight_vision    APPLY_LOWLIGHT_VISION lowlight vision
 concealment        APPLY_CONCEALMENT     concealment
 fortification      APPLY_FORTIFICATION   fortification
 dr_bash            APPLY_DR_BASH         DR/bashing
 dr_pierce          APPLY_DR_PIERCE       DR/piercing
 dr_slash           APPLY_DR_SLASH        DR/slashing
 dr_magic           APPLY_DR_MAGIC        DR/magic
 dr_good            APPLY_DR_GOOD         DR/good
 dr_evil            APPLY_DR_EVIL         DR/evil
 dr_law             APPLY_DR_LAW          DR/law
 dr_chaos           APPLY_DR_CHAOS        DR/chaos
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS12
{>}APPLYS14
{-}APPLIES APPLYS
~

0 APPLYS14~
Affect Applys 14~
{178} editor string      flag                  modifier{300}
 dr_iron            APPLY_DR_IRON         DR/iron
 dr_silver          APPLY_DR_SILVER       DR/silver
 dr_adamantine      APPLY_DR_ADAMANTINE   DR/adamantine
 dr_none            APPLY_DR_NONE         DR/-
 dr_acid            APPLY_DR_ACID         acid resistance
 dr_cold            APPLY_DR_COLD         cold resistance
 dr_electric        APPLY_DR_ELECTRIC     electric resistance
 dr_fire            APPLY_DR_FIRE         fire resistance
 dr_sonic           APPLY_DR_SONIC        sonic resistance
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}>{200}] {300}Next Page          {200}  [{178}-{200}] {300}Return
{<}APPLYS13
{>}APPLYS15
{-}APPLIES APPLYS
~

0 APPLYS15~
Affect Applys 15~
{078}The following applies can only be applied to object affects, and cannot be
used for racial or mobile applies.
{178}
 editor string      flag                  modifier{300}
 weapon_flag        APPLY_WEAPON_FLAG     adds weapon flag
 objval_0           APPLY_OBJVAL_0        applies to objval 0
 objval_1           APPLY_OBJVAL_1        applies to objval 1
 objval_2           APPLY_OBJVAL_2        applies to objval 2
 objval_3           APPLY_OBJVAL_3        applies to objval 3
 objval_4           APPLY_OBJVAL_4        applies to objval 4
 objval_5           APPLY_OBJVAL_5        applies to objval 5
 objval_6           APPLY_OBJVAL_6        applies to objval 6
 objval_7           APPLY_OBJVAL_7        applies to objval 7
 room_sector        APPLY_ROOM_SECTOR     room sector value
 room_light         APPLY_ROOM_LIGHT      room lighting
 
{200}  [{178}<{200}] {300}Previous Page      {200}  [{178}-{200}] {300}Return
{<}APPLYS14
{-}APPLIES APPLYS
~

0 MPROGS400~
Operators~
{300}
Numeric Operators:

 ==   equals
 !=   does not equal
  >   bigger than
  <   smaller than
 >=   bigger or equal than
 <=   smaller or equal than

String Operators: (not case sensitive)

 ==   equals
 !=   does not equal
 /    contains
 !/   does not contain
~

0 'IF CHECKS' 'MPROG IF CHECKS'~
Mprog If Checks~
{178}These are the conditions that can be checked using the IF and OR control flow
in a mud prog.

{200}  [{178}A{200}] {300}General
{200}  [{178}B{200}] {300}Mobile
{200}  [{178}C{200}] {300}Player
{200}  [{178}D{200}] {300}Character
{200}  [{178}E{200}] {300}Group
{200}  [{178}F{200}] {300}Skills
{200}  [{178}G{200}] {300}Statistics
{200}  [{178}H{200}] {300}Object
{200}  [{178}I{200}] {300}Room

{200}  [{178}-{200}] {300}Return
{-}MPROGS000 'MUD PROGS'
{a}MPROGS510
{b}MPROGS540
{c}MPROGS570
{d}MPROGS600
{e}GROUPIFCHECKS
{f}SKILLIFCHECKS
{g}STATIFCHECKS
{h}MPROGS630
{i}MPROGS660
~

0 MPROGS510~
General If Checks~
{200}  [{178}A{200}] {300} areaquest
{200}  [{178}B{200}] {300} day
{200}  [{178}C{200}] {300} existsarea
{200}  [{178}D{200}] {300} existsroom
{200}  [{178}E{200}] {300} isday
{200}  [{178}F{200}] {300} isnight
{200}  [{178}G{200}] {300} month
{200}  [{178}H{200}] {300} number
{200}  [{178}I{200}] {300} numberrange
{200}  [{178}J{200}] {300} rand           
{200}  [{178}K{200}] {300} time

{200}  [{178}-{200}] {300} Return
~

0 'IF RAND'~
Rand~
{200}Syntax: if rand (percentage)
{300}
The rand if check will generate a value between 1 and 100 and check if
the that value is smaller or equal to the given percentage.

$x will hold the generated percentage.
~

0 'IF NUMBER'~
Number~
{200}Syntax: if number ($*) == integer
{300}
The number if check can be used for the $n $r $t $o $c $x and $X variable.

In the case of objects and mobiles it will compare the vnum of given variable.

$x will hold the compared value.
~

0 'IF NAME'~
Name~
{200}Syntax: if name ($*) == string
{300}
The name if check can be used for the $n $r $t $o $c and $X variable.
~

0 'IF TIME'~
Time~
{200}Syntax: if time () == hour
{300}
The time will compare the given hour to the current mud hour.

$x will hold the current mud hour.
~

0 'IF DAY'~
day~
{200}Syntax: if day () == [1-30]
{300}
Compares the given numeric day of the month to the current game day.

$x will hold the current day of the game month.
~

0 'IF MONTH'~
month~
{200}Syntax: if month () == [1-12]
{300}
The time will compare the given numeric month to the current game month.

$x will hold the current game month.
~

0 'IF ISDAY'~
isday~
{200}Syntax: if isday ()
{300}
Checks if the mud time is between 5am and 7pm.
~

0 'IF ISNIGHT'~
isnight~
{200}Syntax: if isnight ()
{300}
Checks if the mud time is between 8pm and 4am.
~

0 'IF EXISTSROOM'~
Existsroom~
{200}Syntax: if existsroom ($*|obj|mob|plr|string)
{300}
The existsroom if check can be used for the $n $r $o and $X variable, it can
also be used to check for a provided name of a mob, obj, or player you expect
to be in the room, or not to be. Returns TRUE if the target is in the same
room as the mob with the prog.

The obj, mob, and plr argument will select a random obj, mob, or player in
the room.

$t will refer to the found character using 'plr', 'mob' or a name.
$c will refer to the found object using the 'obj' variable or a name.
~

0 'IF EXISTSAREA'~
Existsarea~
{200}Syntax: if existsarea ($*|string)
{300}
The existsarea if check can be used for the $n $r $o and $X variable, it can
also be used to check for a provided name of a mob, obj, or player you expect
to be in the area, or not to be. Returns TRUE if the target is in the same
area as the mob with the prog.
~

0 'IF NUMBERRANGE~
Numberrange~
{200}Syntax: if numberrange(low,high) == integer
{300}
The numberrange if check can be used to generate a random number between the
given range.

$x will hold the generated random number.
~

0 'IF AREAQUEST'~
Areaquest~
{300}Syntax: if areaquest (startBit, numBits, $*) == integer

Checks if the quest bits of area of $i $c or $o equals integer.

The quest checked will be of the area the mob or obj belongs to.

$x will hold the value of the checked bits
~

0 MPROGS540~
Mobile If Checks~
{200}  [{178}A{200}] {300} delayed
{200}  [{178}B{200}] {300} iscompanion
{200}  [{178}C{200}] {300} isfamiliar
{200}  [{178}D{200}] {300} ishorse
{200}  [{178}E{200}] {300} ispet
{200}  [{178}F{200}] {300} shotfrom

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF ISCOMPANION'~
iscompanion~
{200}Syntax: if iscompanion ($*)
{300}
Checks whether $i $n $t $r is an animal companion.

$t will refer to the target's master if it is a companion.
~

0 'IF ISFAMILIAR'~
isfamiliar~
{200}Syntax: if isfamiliar ($*)
{300}
Checks whether $i $n $t $r is a familiar.

$t will refer to the target's master if it is a familiar.
~

0 'IF ISHORSE'~
isfamiliar~
{200}Syntax: if ishorse ($*)
{300}
Checks whether $i $n $t $r is a bonded warhorse.

$t will refer to the target's master if it is a warhorse.
~

0 'IF ISPET'~
ispet~
{200}Syntax: if ispet ($*)
{300}
Checks whether $i $n $t $r is a pet.

$t will refer to the target's master if it is a pet.
~

0 'IF SHOTFROM'~
Shotfrom~
{200}Syntax: if shotfrom ($i) == direction
{300}
The shotfrom ifcheck will compare given direction to the attacker's direction.

$D will hold the name of the direction the mob was attacked from.
~

0 'IF DELAYED'~
Delayed~
{200}Syntax: if delayed ($*)
{300}
The delayed if check can be used for the $i $n $r and $t variable.

$x will hold the total delay in either seconds or mud hours for mobiles.
   if the target is a player it will hold their current lag timer.
~

0 MPROGS570~
Player If Checks~
{200}  [{178}A{200}] {300} class     
{200}  [{178}B{200}] {300} hasadj
{200}  [{178}C{200}] {300} hasdesc
{200}  [{178}D{200}] {300} iscriminal
{200}  [{178}E{200}] {300} isdovoted
{200}  [{178}F{200}] {300} iskiller
{200}  [{178}G{200}] {300} isthief
{200}  [{178}H{200}] {300} mclass     
{200}  [{178}I{200}] {300} pcsinarea
{200}  [{178}J{200}] {300} pcsinroom
{200}  [{178}K{200}] {300} questr
{200}  [{178}L{200}] {300} reputation
{200}  [{178}M{200}] {300} whichgod

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF REPUTATION'~
reputation~
{200}Syntax: if reputation ($*) == value
{300}
Compares the reputation score of $n $r or $t to the given value.

$x will hold the actual reputation score of the player.
~

0 'IF ISDEVOTED'~
isdevoted~
{200}Syntax: if isdevoted ($*)
{300}
Checks if $n $r or $t has a patron deity or not.

$x will hold the actual deity of the player.
~

0 'IF ISCRIMINAL'~
Iscriminal~
{200}Syntax: if iscriminal ($*)
{300}
Checks if $n $r or $t has a criminal record or bounty set in the mob's area.
~

0 'IF HASDESC'~
hasdesc~
{200}Syntax: if hasdesc ($*)
{300}
Checks if $n $r or $t has a player description set or not.
~

0 'IF HASADJ'~
hasadj~
{200}Syntax: if hasadj ($*)
{300}
Checks if $n $r or $t has a player adjective set or not.
~

0 'IF ISKILLER'~
Iskiller~
{200}Syntax: if iskiller ($*)
{300}
Checks if $n $r or $t has the pkill flag set.
~

0 'IF ISTHIEF'~
Isthief~
{200}Syntax: if isthief ($*)
{300}
Checks if $n $r or $t has the player thief flag set.
~

0 'IF CLASS'~
Class~
{200}Syntax: if class ($*) == bitvector
{300}
This compares the class of $n $r or $t to given class name or bitvector.

$x will hold the compared value - either the actual class of the character, or
the compared class if the player in fact has levels in the given class.
~

0 'IF MCLASS'~
Class~
{200}Syntax: if mclass ($*, classname) == level
{300}
Compares the class level of $n $r or $t in the given class to the value.

$x will hold the class level in the given class.
~

0 'IF WHICHGOD'~
Whichgod~
{200}Syntax: if whichgod ($*) == bitvector
{300}
This compares the god of $n $r or $t to given name or bitvector.

$x will hold the actual deity of the player.
~

0 'IF PCSINAREA'~
Pcsinarea~
{200}Syntax: if pcsinarea (roomvnum) == integer
{300}
If the roomvnum is left blank it will use the current room the mob is in,
you can also use $x if it holds a room vnum.

This compares the amount of players in the area of given room to given
value.

$x will hold the actual number of players in the area.
~

0 'IF PCSINROOM'~
Pcsinroom~
{200}Syntax: if pcsinroom (roomvnum) == integer
{300}
If the roomvnum is left blank it will use the current room the mob is in,
you can also use $x if it holds a room vnum.

This compares the amount of players in the room of given room to given
value.

$x will hold the actual number of players in the room.
~

0 'IF QUESTR'~
Questr~
{200}Syntax: if questr (roomvnum, startBit, numBit, $*) == integer
{300}
This checks the questbits of $i $n $t $r for the area of the given roomvnum

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 MPROGS600~
Character if Checks~
{200}  [{178}A{200}] {300} align
{200}  [{178}B{200}] {300} cancarry
{200}  [{178}C{200}] {300} cansee
{200}  [{178}D{200}] {300} ethos
{200}  [{178}E{200}] {300} gold
{200}  [{178}F{200}] {300} hitprcnt
{200}  [{178}G{200}] {300} isaffected
{200}  [{178}H{200}] {300} ischaotic
{200}  [{178}I{200}] {300} isevil
{200}  [{178}J{200}] {300} isfight
{200}  [{178}K{200}] {300} isfollow
{200}  [{178}L{200}] {300} isgood
{200}  [{178}M{200}] {300} isimmort
{200}  [{178}N{200}] {300} islawful
{200}  [{178}O{200}] {300} isneutral
{200}  [{178}P{200}] {300} isnpc
{200}  [{178}Q{200}] {300} ispc
{200}  [{178}R{200}] {300} ispolymorph
{200}  [{178}S{200}] {300} isunconcerned
{200}  [{178}T{200}] {300} isundead
{200}  [{178}U{200}] {300} level
{200}  [{178}V{200}] {300} postion
{200}  [{178}W{200}] {300} quest
{200}  [{178}X{200}] {300} race
{200}  [{178}Y{200}] {300} sex

{200}  [{178}-{200}] {300} Return
{-}MPROGS000 'MUD PROGS'
~

0 'IF ISNPC'~
Isnpc~
{200}Syntax: if isnpc ($*)
{300}
Checks if $n $r or $t is a mobile.
~

0 'IF ISIMMORT'~
isimmort~
{200}Syntax: if isimmort ($*)
{300}
Checks if $n $r or $t is an immortal.
~

0 'IF ISPC'~
Ispc~
{200}Syntax: if ispc ($*)
{300}
Checks if $n $r or $t is a player.
~

0 'IF ISUNDEAD'~
isundead~
{200}Syntax: if isundead ($*)
{300}
Checks if $n $r or $t is undead.
~

0 'IF ISGOOD'~
Isgood~
{200}Syntax: if isgood ($*)
{300}
Checks if $i $n $r or $t is of good alignment.
~

0 'IF ISEVIL'~
Isevil~
{200}Syntax: if isevil ($*)
{300}
Checks if $i $n $r or $t is of evil alignment.
~

0 'IF ISNEUTRAL'~
Isneutral~
{200}Syntax: if isneutral ($*)
{300}
Checks if $i $n $r or $t is of neutral alignment.
~

0 'IF ISCHAOTIC'~
Ischaotic~
{200}Syntax: if ischaotic ($*)
{300}
Checks if $i $n $r or $t is of chaotic ethos.
~

0 'IF ISLAWFUL'~
Islawful~
{200}Syntax: if islawful ($*)
{300}
Checks if $i $n $r or $t is of lawful ethos.
~

0 'IF ISUNCONCERNED'~
Isunconcerned~
{200}Syntax: if isunconcerned ($*)
{300}
Checks if $i $n $r or $t is of neutral ethos
~

0 'IF CANSEE'~
Cansee~
{200}Syntax: if cansee ($*)
{300}
Checks if mobile can see $n $r or $t.
~

0 'IF CANCARRY'~
Cancarry~
{200}Syntax: if cancarry ($*)
{300}
Checks if $i $n $r or $t is capable of carrying any more items.
~

0 'IF ISPOLYMORPH'~
ispolymorph~
{200}Syntax: if ispolymorph ($*)
{300}
Checks if $i $n $r or $t is under a polymorph or shapechange affect.

$x will store the actual race of the target.
~

0 'IF ISAFFECTED'~
Isaffected~
{200}Syntax: if isaffected ($*) == 'skill name'
{300}
Checks if $i $n $r or $t is affected by given spell, skill or ability.
~

0 'IF HITPRCNT'~
Hitprcnt~
{200}Syntax: if hitprcnt ($*) == percentage
{300}
Checks how current hit points of $i $n $r or $t compares to a given percentage
of their maximum hit point total.

$x will hold the target's hitpoints percentage.
~

0 'IF ALIGN'~
align~
{200}Syntax: if align ($*) == number
{300}
Checks alignment of $i $n $r or $t against a given value (-1000 to 1000).

$x will hold the target's actual alignment score.
~

0 'IF ETHOS'~
ethos~
{200}Syntax: if ethos ($*) == number
{300}
Checks ethos of $i $n $r or $t against a given value (-1000 to 1000).

$x will hold the target's actual ethos score.
~

0 'IF SEX'~
Sex~
{200}Syntax: if sex ($*) == bitvector
{300}
Checks if gender of $i $n $r or $t matches given bitvector.

$x will hold the target's actual gender. This compares actual gender - not that
gained by any applies.
~

0 'IF POSITION'~
Position~
{200}Syntax: if position ($*) == bitvector
{300}
Checks if position of $i $n $r or $t matches given bitvector.

$x will hold the target's actual position.
~

0 'IF LEVEL'~
Level~
{200}Syntax: if level ($*) == integer
{300}
Compares the character level of $i $n $r or $t to a given integer.

$x will hold the target's level.
~

0 'IF RACE'~
Race~
{200}Syntax: if race ($*) == bitvector
{300}
Compares the race of $i $n $r or $t to the given bitvector. This compares
against the victim's current race - including polymorph affects.

$x will hold the target's current race.
~

0 'IF GOLD'~
Gold~
{200}Syntax: if gold ($*) == integer
{300}
Compares the gold of $i $n $r or $t against an integer, in copper.

$x will hold the target's actual wealth in copper.
~

0 'IF QUEST'~
Quest~
{200}Syntax: if quest (startBit, numBits, $*) == integer

Checks if the quest bits of $i $n $r or $t equals integer.

The bits checked will be for the area of the mob/obj/room running the prog.

$x will hold the value of the checked bits.

{200}  [{178}I{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF ISFIGHT'~
Isfight~
{200}Syntax: if isfight ($*)
{300}
Checks if $i $n $r or $t is fighting someone.

$t will refer to the oponent the target is fighting
~

0 'IF ISFOLLOW'~
Isfollow~
{200}Syntax: if isfollow ($*)
{300}
Checks if $i $n $r or $t is following someone.

$t will refer to the character the target is following
~

0 GROUPIFCHECKS~
Group If Checks~
{200}  [{178}X{200}] {300} groupquest           
{200}  [{178}X{200}] {300} groupquestr
{200}  [{178}X{200}] {300} group_size
{200}  [{178}X{200}] {300} group_levels
{200}  [{178}X{200}] {300} hascompanion
{200}  [{178}X{200}] {300} hasfamiliar
{200}  [{178}X{200}] {300} hashorse
{200}  [{178}X{200}] {300} haspet
{200}  [{178}X{200}] {300} ismounted

{200}  [{178}-{200}] {300} Return
~

0 'IF GROUPQUEST'~
groupquest~
{200}Syntax: if groupquest (startBit, numBit, $*) == integer
{300}
This compares the questbits of all PCs in the group of $i $n $t $r for the
area the mobile with program is from.

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF GROUPQUESTR'~
groupquestr~
{200}Syntax: if groupquestr (roomvnum, startBit, numBit, $*) == integer
{300}
This compares the questbits of all PCs in the group of $i $n $t $r for the
given area vnum

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF GROUP_SIZE'~
group_size~
{200}Syntax: if group_size ($*) == integer
{300}
This compares the number PCs in the group of $i $n $t $r.

$x will store the actual number of PCs in the group.

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF GROUP_LEVELS'~
group_levels~
{200}Syntax: if group_levels ($*) == integer
{300}
This compares the total character levels of all PCs in the group of $i $n $t $r.

$x will store the actual total group levels.

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF HASCOMPANION'~
hascompanion~
{200}Syntax: if hascompanion ($*)
{300}
Checks whether $n $t $r has an animal companion.

$t will refer to the target's found companion.
~

0 'IF HASFAMILIAR'~
hasfamiliar~
{200}Syntax: if hasfamiliar ($*)
{300}
Checks whether $n $t $r has a familiar.

$t will refer to the target's found familiar.
~

0 'IF HASHORSE'~
hasfamiliar~
{200}Syntax: if hashorse ($*)
{300}
Checks whether $n $t $r has a bonded warhorse.

$t will refer to the target's found warhorse.
~

0 'IF HASPET'~
haspet~
{200}Syntax: if haspet ($*)
{300}
Checks how many pets $n $t $r has.

$x will store the number of pets.
~

0 'IF ISMOUNTED'~
ismounted~
{200}Syntax: if ismounted ($*)
{300}
Checks whether $i $n $t $r is riding a mount.

$t will refer to the target's mount.
~

0 MPROGS630~
Object If Checks~
{200}  [{178}H{200}] {300} actorhasobjnum
{200}  [{178}I{200}] {300} actortypewear
{200}  [{178}I{200}] {300} actorwearsobjnum
{200}  [{178}A{200}] {300} objtype
{200}  [{178}G{200}] {300} hasobj
{200}  [{178}B{200}] {300} objval0, objval1, objval2, objval3, objval4, et al...
{200}  [{178}H{200}] {300} hasobjnum
{200}  [{178}I{200}] {300} wearsobjnum
{200}  [{178}F{200}] {300} objquest
{200}  [{178}F{200}] {300} ownsmark
{200}  [{178}F{200}] {300} weapontypewield

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF OBJTYPE'~
Objtype~
{200}Syntax: if objtype ($*) == bitvector
{300}
Checks if objtype of $c or $o equals given bitvector

$x will hold the object's object type
~

0 'IF OWNSMARK'~
ownsmark~
{200}Syntax: if ownsmark ($*)
{300}
Compares the object ownership mark of an object with the prog against the pvnum
of $t $n or $r.

$x will hold the actual ownsmark of the object.
~

0 'IF OBJQUEST'~
Objquest~
{178}
objquest
{200}
Syntax: if objquest (startBit, numBits, $*) == integer
{300}
Compares the quest bits of $c or $o against a given value.

$x will hold the value of the checked bits.

{200}  [{178}A{200}] {300}More information on quest bits
{a}QUESTBITS
~

0 'IF HASOBJ'~
Hasobj~
{200}Syntax: if hasobj ($*) == name
{300}
Checks if $* has an object with given name.

NOTE: It's always better to use HASOBJNUM and to use the VNUM of the object
being checked for - unless you REALLY want to check for any object whose name
matches the given string.

$c will refer to the found object.
~

0 'IF HASOBJNUM'~
Hasobjnum~
{200}Syntax: if hasobjnum ($*) == objvnum
{300}
Checks if $* has an object with given vnum.

$c will refer to the found object.
~

0 'IF WEARSOBJNUM'~
Wearsobjnum~
{200}Syntax: if wearsobjnum ($*) == objvnum
{300}
Checks if $* has an object with the given vnum, only if the object is worn.

$c will refer to the found object.
~

0 'IF WEAPONTYPEWIELD'~
weapontypewield~
{200}Syntax: if weapontypewield ($*) == weapon type flag
{300}
Checks if $t $n $i or $r is wielding a weapon of the specified type. The value
can either be the flag or bitvector of the weapon type.

$c will refer to the found object.
$x will hold the actual weapon type wielded (if any).
~

0 'IF ACTORHASOBJNUM'~
actorhasobjnum~
{200}Syntax: if actorhasobjnum (vnum) 
{300}
Checks if the character triggering the prog has an object with given vnum.

$c will refer to the found object.
~

0 'IF ACTORTYPEWEAR'~
actortypewear~
{200}Syntax: if actortypewear (bitvector) 
{300}
Checks if the character triggering the prog wears an object with given item
type bitvector.

$c will refer to the found object.
~

0 'IF ACTORWEARSOBJNUM'~
actorwearsobjnum~
{200}Syntax: if actorwearsobjnum (vnum)
{300}
Checks if character triggering the prog has an object with the given vnum, only
if the object is worn.

$c will refer to the found object.
~

0 STATIFCHECKS~
Statistic If Checks~
All checks to reference a target's primary stats:

In all cases, $x will store the actual roll of the target.

{200}  [{178}D{200}] {300} cha_check
{200}  [{178}D{200}] {300} con_check
{200}  [{178}D{200}] {300} dex_check
{200}  [{178}D{200}] {300} int_check
{200}  [{178}D{200}] {300} str_check
{200}  [{178}D{200}] {300} wis_check
{200}  [{178}D{200}] {300} curr_cha
{200}  [{178}D{200}] {300} curr_con
{200}  [{178}D{200}] {300} curr_dex
{200}  [{178}D{200}] {300} curr_int
{200}  [{178}D{200}] {300} curr_str
{200}  [{178}D{200}] {300} curr_wis
{200}  [{178}D{200}] {300} perm_cha
{200}  [{178}D{200}] {300} perm_con
{200}  [{178}D{200}] {300} perm_dex
{200}  [{178}D{200}] {300} perm_int
{200}  [{178}D{200}] {300} perm_str
{200}  [{178}D{200}] {300} perm_wis

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF CHA_CHECK' 'IF CON_CHECK' 'IF DEX_CHECK' 'IF INT_CHECK' 'IF STR_CHECK' 'IF WIS_CHECK' ~
Stat Checks~
{200}Syntax: if cha_check ($*) == DC or $opponent
{200}Syntax: if con_check ($*) == DC or $opponent
{200}Syntax: if dex_check ($*) == DC or $opponent
{200}Syntax: if int_check ($*) == DC or $opponent
{200}Syntax: if str_check ($*) == DC or $opponent
{200}Syntax: if wis_check ($*) == DC or $opponent
{300}
The target of the prog makes a stat check (1d20 + stat mod). The value is
either a fixed DC if the value is numeric, or the opposing stat check of an
$opponent.

$x will hold the actual stat roll for the target.
~

0 'IF CURR_CHA' 'IF CURR_CON' 'IF CURR_DEX' 'IF CURR_INT' 'IF CURR_STR' 'IF CURR_WIS' ~
Stat Checks~
{200}Syntax: if curr_cha ($*) == value
{200}Syntax: if curr_cha ($*) == value
{200}Syntax: if curr_dex ($*) == value
{200}Syntax: if curr_int ($*) == value
{200}Syntax: if curr_str ($*) == value
{200}Syntax: if curr_wis ($*) == value
{300}
Compares the current stat score (with affects) with the specified value.

$x will hold the actual current stat score for the target.
~

0 'IF PERM_CHA' 'IF PERM_CON' 'IF PERM_DEX' 'IF PERM_INT' 'IF PERM_STR' 'IF PERM_WIS' ~
Stat Checks~
{200}Syntax: if perm_cha ($*) == value
{200}Syntax: if perm_cha ($*) == value
{200}Syntax: if perm_dex ($*) == value
{200}Syntax: if perm_int ($*) == value
{200}Syntax: if perm_str ($*) == value
{200}Syntax: if perm_wis ($*) == value
{300}
Compares the permanent stat score with the specified value.

$x will hold the actual permanent stat score for the target.
~

0 SKILLIFCHECKS~
Skill If Checks~
There is a complete set of if checks to run skill checks in mud progs. All
of the checks can be made against a fixed DC, and many can be made against
an opposing character, when specified in each description.

In all cases, $x will store the actual skill roll of the target.

{200}  [{178}D{200}] {300} bluff_check
{200}  [{178}D{200}] {300} climb_check
{200}  [{178}D{200}] {300} concentration_check
{200}  [{178}D{200}] {300} decipher_script_check
{200}  [{178}D{200}] {300} diplomacy_check
{200}  [{178}D{200}] {300} disable_device_check
{200}  [{178}D{200}] {300} disguise_check
{200}  [{178}D{200}] {300} escape_artist_check
{200}  [{178}D{200}] {300} first_aid_check
{200}  [{178}D{200}] {300} handle_animal_check
{200}  [{178}D{200}] {300} hide_check
{200}  [{178}D{200}] {300} intimidate_check
{200}  [{178}D{200}] {300} jump_check
{200}  [{178}D{200}] {300} know_arcana_check
{200}  [{178}D{200}] {300} know_dungoneering_check
{200}  [{178}D{200}] {300} know_geography_check
{200}  [{178}D{200}] {300} know_history_check
{200}  [{178}D{200}] {300} know_local_check
{200}  [{178}D{200}] {300} know_nature_check
{200}  [{178}D{200}] {300} know_nobility_check
{200}  [{178}D{200}] {300} know_planes_check
{200}  [{178}D{200}] {300} know_religion_check
{200}  [{178}D{200}] {300} level_check
{200}  [{178}D{200}] {300} mount_check
{200}  [{178}D{200}] {300} perception_check
{200}  [{178}D{200}] {300} pick_lock_check
{200}  [{178}D{200}] {300} search_check
{200}  [{178}D{200}] {300} sense_motive_check
{200}  [{178}D{200}] {300} skilllevel
{200}  [{178}D{200}] {300} slieght_of_hand_check
{200}  [{178}D{200}] {300} sneak_check
{200}  [{178}D{200}] {300} spellcraft_check
{200}  [{178}D{200}] {300} streetwise_check
{200}  [{178}D{200}] {300} survival_check
{200}  [{178}D{200}] {300} swim_check
{200}  [{178}D{200}] {300} tumble_check
{200}  [{178}D{200}] {300} use_magic_check

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF SKILLLEVEL'~
skilllevel~
{200}Syntax: if skilllevel ($*, 'skill name') == value
{300}
Compares the ranks of $t $i $r or $n in the given skill to a given number.

$x will hold the actual ranks in the skill for the target.
~

0 'IF LEVEL_CHECK'~
level_check~
{200}Syntax: if level_check ($*) == DC or $opponent
{300}
The target of the prog makes a level check (1d20 + hit dice). The value is
either a fixed DC if the value is numeric, or the opposing level check of an
$opponent.

$x will hold the actual level check roll for the target.
~

0 'IF BLUFF_CHECK'~
bluff_check~
{200}Syntax: if bluff_check ($*) == DC or $opponent
{300}
The target of the prog makes a bluff check. The value is either a fixed DC if
the value is numeric, or the sense motive roll of an $opponent.

Example:

if bluff_check($n) == $i
  This will oppose the bluff roll of the actor with the sense motive roll
  of the mob with the prog ($i).
  
if bluff_check($n) == 20
  This makes the check against a fixed opposing DC of 20.

$x will hold the actual bluff roll for the target.
~

0 'IF CLIMB_CHECK'~
climb_check~
{200}Syntax: if climb_check ($*) == DC
{300}
The target of the prog makes a climb check against the specified DC.

$x will hold the actual climb roll for the target.
~

0 'IF CONCENTRATION_CHECK'~
concentration_check~
{200}Syntax: if concentration_check ($*) == DC
{300}
The target of the prog makes a concentration check against the specified DC.
Note that DC for standard distractions as noted in the D-20 SRD (including
weather, being mounted, or in water) have already been factored into the code.
The check will pick the higher DC of the set value of the if check, versus the
DC for conditions.

$x will hold the actual concentration roll for the target.
~

0 'IF DECIPHER_SCRIPT_CHECK'~
decipher_script_check~
{200}Syntax: if decipher_script_check ($*) == DC
{300}
The target of the prog makes a decipher script check against the specified DC.

$x will hold the actual decipher script roll for the target.
~

0 'IF DIPLOMACY_CHECK'~
diplomacy_check~
{200}Syntax: if diplomacy_check ($*) == DC
{300}
The target of the prog makes a diplomacy check against the specified DC.

$x will hold the actual diplomacy roll for the target.
~

0 'IF DISGUISE_CHECK'~
disguise_check~
{200}Syntax: if disguise_check ($*) == DC or $opponent
{300}
The target of the prog makes a disguise check against the specified DC.

NOTES: If $target is a PC, then the value can either be a fixed numeric DC, or
the spot roll of an $opponent. If the if check targets the mobile ($i), then
the value must be numeric, as it sets the disguise roll of the NPC, which is
then opposed by the spot check of the actor triggering the prog. Also, if the
check is made by a PC, and the PC has no disguise, the check will always fail.

Example:

if disguise_check($n) == $i
  This will oppose the disguise roll of the actor with the spot roll of
  the triggered mob ($i).
  
if disguise_check($i) == 20
  This sets the mob as being disguised, with a disguise roll of 20. The
  actor's spot roll with have to match or beat this value to see through
  the disguise.

$x will hold the actual disguise roll for the target.
~

0 'IF DISABLE_DEVICE_CHECK'~
disable_device_check~
{200}Syntax: if disable_device_check ($*) == DC
{300}
The target of the prog makes a disable device check against the specified DC.

$x will hold the actual disable device roll for the target.
~

0 'IF ESCAPE_ARTIST_CHECK'~
escape_artist_check~
{200}Syntax: if escape_artist_check ($*) == DC
{300}
The target of the prog makes a escape artist check against the specified DC.

$x will hold the actual escape artist roll for the target.
~

0 'IF FIRST_AID_CHECK'~
first_aid_check~
{200}Syntax: if first_aid_check ($*) == DC
{300}
The target of the prog makes a first aid check against the specified DC.

$x will hold the actual first aid roll for the target.
~

0 'IF STREETWISE_CHECK'~
streetwise_check~
{200}Syntax: if streetwise_check ($*) == DC
{300}
The target of the prog makes a streetwise check against the specified DC.

$x will hold the actual streetwise roll for the target.
~

0 'IF HANDLE_ANIMAL_CHECK'~
handle_animal_check~
{200}Syntax: if handle_animal_check ($*) == DC
{300}
The target of the prog makes a handle animal check against the specified DC.

$x will hold the actual handle animal roll for the target.
~

0 'IF HIDE_CHECK'~
hide_check~
{200}Syntax: if hide_check ($*) == DC or $opponent
{300}
The target of the prog makes a stealth check to remain unseen. The value is
either a specified DC or against the perception roll of an $opponent.

If the actor is not currently stealthed, the check will always fail.

$x will hold the actual stealth roll for the target.
~

0 'IF INTIMIDATE_CHECK'~
intimidate_check~
{200}Syntax: if intimidate_check ($*) == $opponent
{300}
The target of the prog makes an intimidate check against another target. The
value must be an opponent, and cannot be a fixed DC, as Intimidate is always
an opposed roll.

$x will hold the actual intimidate roll for the target.
~

0 'IF JUMP_CHECK'~
jump_check~
{200}Syntax: if jump_check ($*) == DC
{300}
The target of the prog makes a jump check against the specified DC.

$x will hold the actual jump roll for the target.
~

0 'IF MOUNT_CHECK'~
mount_check~
{200}Syntax: if mount_check ($*) == DC
{300}
The target of the prog makes a mount check against the specified DC.

$x will hold the actual mount roll for the target.
~

0 'IF PERCEPTION_CHECK'~
perception_check~
{200}Syntax: if perception_check ($*) == DC
{300}
The target of the prog makes a perception check against the specified DC.

$x will hold the actual perception roll for the target.
~

0 'IF PICK_LOCK_CHECK'~
pick_lock_check~
{200}Syntax: if pick_lock_check ($*) == DC
{300}
The target of the prog makes a pick lock check against the specified DC.

$x will hold the actual pick lock roll for the target.
~

0 'IF SEARCH_CHECK'~
search_check~
{200}Syntax: if search_check ($*) == DC
{300}
The target of the prog makes a search check against the specified DC.

$x will hold the actual search roll for the target.
~

0 'IF SENSE_MOTIVE_CHECK'~
sense_motive_check~
{200}Syntax: if sense_motive_check ($*) == DC
{300}
The target of the prog makes a sense motive check against the specified DC.

$x will hold the actual sense motive roll for the target.
~

0 'IF SLEIGHT_OF_HAND_CHECK'~
slieght_of_hand_check~
{200}Syntax: if slieght_of_hand_check ($*) == DC or $opponent
{300}
The target of the prog makes a sleight of hand check. The value is either a
fixed DC if the value is numeric, or the perception roll of an $opponent.

Example:

if slieght_of_hand_check($n) == $i
  This will oppose the slieght of hand roll of the actor with the perception
  roll of the mob with the prog ($i).
  
if slieght_of_hand_check($n) == 20
  This makes the check against a fixed opposing DC of 20.

$x will hold the actual slieght of hand roll for the target.
~

0 'IF SNEAK_CHECK'~
sneak_check~
{200}Syntax: if sneak_check ($*) == DC or $opponent
{300}
The target of the prog makes a stealth check to move silently. The value is
either a fixed DC if the value is numeric, or the perception roll of an
$opponent.

Example:

if sneak_check($n) == $i
  This will oppose the steath roll of the actor with the perception roll
  of the mob with the prog ($i).
  
if sneak_check($n) == 20
  This makes the check against a fixed opposing DC of 20.

$x will hold the actual stealth roll for the target.
~

0 'IF SPELLCRAFT_CHECK'~
spellcraft_check~
{200}Syntax: if spellcraft_check ($*) == DC
{300}
The target of the prog makes a spellcraft check against the specified DC.

$x will hold the actual spellcraft roll for the target.
~

0 'IF SURVIVAL_CHECK'~
survival_check~
{200}Syntax: if survival_check ($*) == DC
{300}
The target of the prog makes a survival check against the specified DC.

$x will hold the actual survival roll for the target.
~

0 'IF SWIM_CHECK'~
swim_check~
{200}Syntax: if swim_check ($*) == DC modifier
{300}
The target of the prog makes a survival check against the specified DC.

$x will hold the actual swim roll for the target.
~

0 MPROGS660~
Room If Checks~
{200}  [{178}A{200}] {300} validexit      {128}
{200}  [{178}B{200}] {300} findpath       {128}
{200}  [{178}C{200}] {300} charinroom     {128}
{200}  [{178}C{200}] {300} inroom         {128}
{200}  [{178}C{200}] {300} inarea         {128}
{200}  [{178}D{200}] {300} roomsector     {128}

{200}  [{178}-{200}] {300} Return
{-}'IF CHECKS' 'MPROG IF CHECKS'
~

0 'IF VALIDEXIT'~
Validexit~
{200}Syntax: if validexit (direction)
{300}
Checks if there is a valid exit in given direction the mobile is allowed
to use.

If no direction is given, the mob will select a random valid exit.

$D will hold the found direction.
$x will hold the room vnum the exit leads to.
~

0 'IF FINDPATH'~
Findpath~
{200}Syntax: if findpath (roomvnum, maxpathlength)
{300}
Checks if there is a path to given room vnum. The max pathlength is a value
between 1 and 100. It is suggested to keep the maxpathlength as low as
possible.

$D will hold the found direction leading 1 step closer toward the room.
$x will hold the length of the found path.
~

0 'IF INROOM'~
inroom~
{200}Syntax: if inroom ($*) == roomvnum
{300}
Compares the current room vnum of $i $n $r or $t to a given vnum.

$x will hold the vnum of the mob's current room vnum.
~

0 'IF INAREA'~
inarea~
{200}Syntax: if inarea ($*) == areavnum
{300}
Compares the current area vnum of $i $n $r or $t to a given vnum.

$x will hold the area vnum of the mob's current area.
~

0 'IF CHARINROOM'~
Inroom~
{200}Syntax: if charinroom ($*) == name
{300}
Compares the characters in the room of $i $n $r or $t to a given name.

$t will refer to the found character (if any).
~

0 'IF ROOMSECTOR'~
Roomsector~
{200}Syntax: if roomsector (vnum) == bitvector
{300}
Compares the sector of given room vnum to a given bitvector.

$x will hold the value of the room's sector.
~

0 QUESTBITS~
Questbits for Dummies~
Every Player has 128 bits allocated for every area, at default those bits
are all set to zero.

The mprog code will allow you to select up to 32 bits at a time from the
total of 128. It is highly suggested (so just do it) that you always select
groups of 4 bits. This being 4, 8, 12, etc bits.

To select a group of bits:

-first select the first bit of the group of bits you want to use, this is
 a number between 0 and 124. The number must dividable by 4, thus
 being 0, 4, 8, 12, 16, etc.
-second select the amount of bits, this is a number between 4 and 32,
 being 4, 8, 12, 16, etc.

Depending on the amount of bits you select you can assign a certain value to
those bits. Here is an overview for the most commonly used amounts of bits:

 4 bits allows you to set a value between 0 and   15
 8 bits allows you to set a value between 0 and  255
12 bits allows you to set a value between 0 and 4095

example:

if quest (0,4,$n) == 6  Checks if bits 0, 1, 2, 3, equal 6
if quest (4,4,$n) == 0  Checks if bits 4, 5, 6, 7, equal 0

Setting a quest bit goes very much the same way.

Example

mpmset $n quest 0 4 9  Sets bits 0, 1, 2, 3, to equal 9
mpmset $n quest 8 8 69 Sets bits 8, 9, 10, 11, 12, 13, 14, 15, to equal 69

Notes:

-mpmadd $n quest 0 4 1  will increase the value of the quest bits, once the
 value becomes 15, and you try to increase the value, the value will become
 0. You can use that behavior to your advantage.

-Quest bits can be set on players, mobs and objects.
~

0 MPROGS700 MPCOMMANDS~
Mprog Commands~
{000}
{200}  [{178}A{200}] {300}mpmset      {200}  [{178}H{200}] {300}mppurge      {200}  [{178}O{200}] {300}mptransfer    {200}  [{178}V{200}] {300}maze
{200}  [{178}B{200}] {300}mpmadd      {200}  [{178}I{200}] {300}loading      {200}  [{178}P{200}] {300}mpat          {200}  [{178}W{200}] {300}rescale
{200}  [{178}C{200}] {300}mposet      {200}  [{178}J{200}] {300}mpswap       {200}  [{178}Q{200}] {300}peace         {200}  [{178}X{200}] {300}echos
{200}  [{178}D{200}] {300}mpoadd      {200}  [{178}K{200}] {300}mpkill       {200}  [{178}R{200}] {300}slay          {200}  [{178}Y{200}] {300}mpdelay
{200}  [{178}E{200}] {300}mpaset      {200}  [{178}L{200}] {300}mpforce      {200}  [{178}S{200}] {300}connect       {200}  [{178}Z{200}] {300}mptrigger
{200}  [{178}F{200}] {300}mpzset      {200}  [{178}M{200}] {300}mpgoto       {200}  [{178}T{200}] {300}doorset       {200}  [{178}1{200}] {300}mpfollow
{200}  [{178}G{200}] {300}mpjunk      {200}  [{178}N{200}] {300}mpgorand     {200}  [{178}U{200}] {300}mpdamage      {200}  [{178}2{200}] {300}mpquiet

{200}  [{178}3{200}] {300}mplog       {200}  [{178}N{200}] {300}mppoison
{200}  [{178}4{200}] {300}mppractice  {200}  [{178}N{200}] {300}mpinfect
{200}  [{178}5{200}] {300}mpsetfeat
{200}  [{178}6{200}] {300}mpclearfeat
{200}  [{178}7{200}] {300}mplock
{200}  [{178}8{200}] {300}mpunlock
{200}  [{178}9{200}] {300}mpunintercept

{200}  [{178}-{200}] {300}Return
{a}MPMSET
{b}MPMADD
{c}MPOSET
{d}MPOADD
{e}MPASET
{f}MPZSET
{g}MPJUNK MPJUNKPERSON
{h}MPPURGE
{i}MPOLOAD MPMLOAD
{j}MPSWAP
{k}MPKILL
{l}MPFORCE
{p}MPAT
{r}SLAY
{s}CONNECT
{t}DOORSET
{u}MPDAMAGE
{v}MAZE
{w}RESCALE
{x}ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND
{y}MPDELAY
{z}MPTRIGGER
{1}MPFOLLOW
{2}MPQUIET
{3}MPLOG
{4}MPPRACTICE
{5}MPSETFEAT MPCLEARFEAT
{6}MPSETFEAT MPCLEARFEAT
{7}MPLOCK MPUNLOCK
{8}MPLOCK MPUNLOCK
{9}MPUNINTERCEPT
{0}MPPOISON
{!}MPINFECT
{-}MPROGS000 'MUD PROGS'
~

0 MPQUIET~
mpquiet~
{200}
Syntax: mpquiet <on|off>
{078}
Use this command to keep a mobile's actions from echoing to others in the room.
For example, you could give or drop an object or coin, and it would not echo
'soandso drops <object>'.

Always remember to turn mpquiet back off at some point in the prog, so that
the mobile echoes as normal when it is supposed to.

MPQUIET ON  Anything the mobile does after this does not echo.
MPQUIET OFF Actions of the mobile echo as normal again.
~

0 MPFOLLOW~
mpfollow~
{200}
Syntax: mpfollow <victim>
Syntax: mpfollow self
{078}
A mobile using this command follows the victim, and becomes a part of the
victim's group. Useful for quests that require a PC to fight along with the
NPC, or the NPC becomes an ally for the quest.

mpfollow self breaks the mobile from the PC's group, and stops following.
~

0 MPLOCK MPUNLOCK~
mplock mpunlock~
{200}
Syntax: mplock <door>
Syntax: mpunlock <door>
{078}
This allows a mob program to lock or unlock a door without needing the key.
This command even works for doors in which there is no key set. This command
produces no echos when it executes.
~

0 MPLOG~
mplog~
{200}
Syntax: mplog <argument>
{078}
This command enters a log entry into the log file, and echoes it to the log
channel. Useful for recoring quest completions, or greet progs to notify when
a character enters a particular area, among other uses.
~

0 MPPRACTICE~
mppractice~
{200}
Syntax: mppractice <victim> <'skill'> <max value>
{078}
Use this command to make a mobile teach a character in a skill, trade, or
language. It bypasses the skill point requirement of TRAIN, and should be used
sparingly as a quest reward for a teaching quest, particularly for trades or
knowledge skills.

The max value sets the maximum rank that the command will teach to a character.
If the character already has that many ranks or higher, it will echo this to
the character, and no improvement will be given.
~

0 MPSETFEAT MPCLEARFEAT~
mpsetfeat mpclearfeat~
{200}
Syntax: mpsetfeat <victim> <'feat'> [ignore]
Syntax: mpclearfeat <victim> <'feat'>
{078}
Use the MPSETFEAT command to make a mobile teach a character a feat or weapon.
If the IGNORE option is not used, then all the prerequisites must be met for
the feat to be trained, including the feat point to spend.

The MPCLEARFEAT command does the opposite, and removes a feat from the list of
known feats for a character, and reimburses them one feat point for it.

Obviously, mpsetfeat with the ignore option should first be cleared by an area
admin before it is used in any mobile prog.
~

0 MPMSET~
mpmset~
{200}Syntax: mpmset <victim> [group] <field>  <argument>
{300}
This syntax sets one of numerous character fields to the given value. Many of
these will affect both players AND NPCs, so always be careful what and who your
prog is setting!

NOTE that you can add this value to an entire group using the GROUP argument
following the target character. Any PC grouped with the target will also be
affected.

{200}Syntax: mpmset <victim> [group] quest             <firstBit> <numBits> <Value>
{200}Syntax: mpmset <victim> [group] questr     <Vnum> <firstBit> <numBits> <Value>
{200}Syntax: mpmset <victim> [group] randquest         <firstBit> <numBits>
{200}Syntax: mpmset <victim> [group] randquestr <Vnum> <firstBit> <numBits>
{300}
These set the questbits for the targeted character. Questr and Randquestr will
set the bits for a different area than the mobile - handy when you want a prog
to impact the targeted character in another area.
~

0 MPWALKTO~
mpwalkto~
{200}
Syntax: mpwalkto <room vnum> [return]
{300}
This command causes a mobile to walk to the specified room vnum. An ARRIVAL
PROGRAM can be used to trigger other actions when a mobile reaches this
destination.

if the RETURN argument is used, then the mobile will return to the room where
the command first triggered once it reaches the destination.
~

0 MPUNINTERCEPT~
mpunintercept~
{200}
Syntax: mpunintercept
{300}
This command is used in an intercept program to pass the original command that
the player typed. For when an intercept program is used to trigger a program
based on a command, but to still let the command pass unaltered.

Using this command in any other program besides an intercept prog does nothing
whatsoever.
{a}INTERCEPT_PROG
~

0 MPMADD~
mpmadd~
{200}
Syntax: mpmadd <victim> [group] <field> <value>
{300}
This syntax adds the given integer to one of numerous character fields. Many of
these will affect both players AND NPCs, so always be careful what and who your
prog is setting!

NOTE that you can add this value to an entire group using the GROUP argument
following the target character. Any PC grouped with the target will also be
affected.

{200}Syntax: mpmadd <victim> [group] quest             <firstBit> <numBits> <value>
{200}Syntax: mpmadd <victim> [group] questr <areaVnum> <firstBit> <numBits> <value>

This syntax increments the given questbit by the given value.
~

0 MPOSET~
mposet~
{200}
Syntax: mposet <object> <field>  <argument>
Syntax: mposet <object> <string> <argument>
{300}
This syntax sets the given argument to one of numerous object fields.

{200}Syntax: mposet <object> quest     <firstBit> <numBits> <newValue>
{200}Syntax: mposet <object> randquest <firstBit> <numBits>

This sets the questbits for the targeted object.
~

0 MPOADD~
mpoadd~
{200}
Syntax: mpoadd <object> <field> <value>
{300}
This syntax adds the given value to the specified field of the specified item.

{200}Syntax: mpoadd <object> quest <firstBit> <numBits> <value>

This syntax adds the given value to the objects questbits.
~

0 MPASET~
mpaset~
{200}
Syntax: mpaset [on $*] <object> <field> <argument> [duration]
{300}
Using this syntax, you can place an affect apply on the targeted object. Adding
the 'on $x' argument will look on the specified target character for the object.
The duration will be permanent, unless a duration is specified.
{a}APPLIES APPLYS
~

0 MPZSET~
mpzset~
{200}
Syntax: mpzset <field> <argument>

{300}Field being one of:
{078}  resetmsg quest

This will set the questbits for the area the prog is in, or set the reset echo
to a specified string.
~

0 MPJUNK MPJUNKPERSON~
mpjunk mpjunkperson~
{200}
Syntax: mpjunk                <object|all|all.item> [target]
{300}
The object must be worn or carried in inventory to be junked. By default, junks
objects on the mobile executing the prog, or supply a target to junk items on
the target.

Use of the 'all.' argument can be used to junk all items with a certain string
or iVNUM keyword. Ex: mpjunk all.i4300, or mpjunk all.ring.

It will not target objects on the floor or in a container. If need be, the
program can use the MPQUIET function to get the item first.
~

0 MPPURGE~
mppurge~
{200}
Syntax: mppurge [object|mobile|all|area]
{300}
The object or mobile must be located in the room the prog executes in.
If the all argument is given every object and mobile in the room will be purged,
except for a mobile running the prog.
mppurge area, will purge the entire area except for the mob that runs the prog.
~

0 MPOLOAD MPMLOAD~
mpoload mpmload~
{200}
Syntax: mpoload <vnum> [room] [wear]
Syntax: mpmload <vnum>
{300}
mpoload will place an object in the inventory of the mobile, if the object
doesn't have the TAKE wear flag or you use the room argument it will go to the
room. The wear argument will silently equip the mob with loaded object.

mpmload will load a mobile in the room.
~

0 MPSWAP~
mpswap~
{200}
Syntax: mpswap <dir1> <dir2>
{300}
mpswap will swap the given directions. This can be used to create mazes
with less limitations than the randomization reset.
~

0 MPKILL~
mpkill~
{200}
Syntax: mpkill <target>
{300}
mpkill makes a mobile initiate combat with another mobile or players, same as
the player FIGHT command, but bypasses all checks and conditions except for
SAFE flags.
~

0 MPDO~
mpdo~
{200}
Syntax: mpdo <argument>
{300}
This will allow the mobile to execute non existing commands. Which in most
cases will be a command stored into a mprog variable such as 'mpdo $C'.
~

0 MPDELAY~
mpdelay~
{200}
Syntax: mpdelay <target> <time> <index> [remember]
{300}
After given 'time' the target's delay_prog with given 'index' will trigger.
Setting a string to be remembered is optional.
A mobile can only have 1 delay program pending, so use the if delayed($*)
check to avoid erasing an already pending delay trigger.
~

0 MPTRIGGER~
mptrigger~
{200}
Syntax: mptrigger <target> <string>
{300}
This will send the given string to the target mob much like mpechoat, if the
target mob has a trigger_prog set that matches the string it will execute that
prog and is able to process the keywords passed along as well. This is useful
for object programs to trigger mobile programs, or mobs triggering other mobs
or themself.
~

0 MPCALCULATE~
mpcalculate~
{200}
Syntax: mpcalculate <value> <operator> <value>
{300}
Operators       Priority     Function
------------------------------------------------
*               1            integer multiply
{300}/               1            integer divide
%               1            integer modulo
d               1            integer random dice roll
+               2            integer addition
-               2            integer subtraction
>               4            logical greater than
>=              4            logical greater than or equal
<               4            logical less than
<=              4            logical less than or equal
==              5            logical equal (can use wildcards)
{300}!=              5            logical not equal (can use wildcards)
&&              9            logical and
^^             10            logical xor
||             11            logical or
~

0 MPFORCE~
mpforce~
{200}
Syntax: mpforce <target|all|allgame> <argument>
{300}
mpforce <target> will force the target to do something.
mpforce all      will force all mobiles and players in the room.
mpforce allgame  will force all players in the game.
~

0 MPGOTO~
mpgoto~
{200}
Syntax: mpgoto <roomVnum|mobile|object>
{300}
mpgoto roomVnum will take the mobile to the specified room.
mpgoto mobile   will take the mobile to the specified mobile name.
mpgoto object   will take the mobile to the specified object name.

Special: MPGOTO 3 will transfer the mobile to the junk room, where it will be
purged on the next loop. Use this function in progs as opposed to mpjunk when
a mobile purges itself so it can finish its prog before junking.
~

0 MPGORAND~
mpgorand~
{200}
Syntax: mpgorand <firstRoom> <lastRoom> <offset> <skipSize>
{300}
mpgorand will take the mobile to a random room in the specified vnum range
~

0 MPTRANSFER~
mptransfer~
{200}
Syntax: mptransfer <target|all|pcs> <roomVnum>
{300}
mptransfer target will transfer target to specified room
mptransfer all    will transfer all mobs and players to specified room
mptransfer pcs    will transfer all mobs to specified room
~

0 MPAT~
mpat~
{200}
Syntax: mpat <roomVnum|mobile|object> <command>
{300}
mpat roomVnum will execute a command at the specified room
mpat mobile   will execute a command at the specified mobile name
mpat object   will execute a command at the specified object name
~

0 PEACE~
peace~
{200}
Syntax: peace
{300}
peace will stop all fighting and strip all hating/hunting flags from
all mobiles standing in the room
~

0 SLAY~
slay~
{200}
Syntax: slay <target>
{300}
Slay will kill the target instantly without combat, and without triggering
further programs or awarding experience. NOTE that mobiles can only do this
command against NPCs.
~

0 CONNECT~
connect~
{200}Syntax: connect <direction> <roomVnum> [both]
{300}
connect will connect the specified room in the specified direction
If the 'both' argument is used a 2 way connection will be established
~

0 DOORSET~
doorset~
{200}Syntax: doorset <direction> <field> <argument>

{300}Field being one of:
{078}  desc name flag key
{300}
This command will only set one side of the door.
~

0 MPDAMAGE~
mpdamage~
{200}Syntax: mpdamage <victim|all|pcs|foe> <dam_lo> <dam_hi> <dam_type> <nounce>
{300}
mpdamage can be used to have a mobile do specialized damage, if the damage
dealt equals zero the attack will miss.

all - will hit all targets mobile can attack
pcs - will hit all players mobile can attack
foe - will hit the person the mobile is currently fighting

the argument you set at the end of the line will become the damage used in
the damage message. ie, if you use the words 'whirlwind of blades', then
the echo will say the mobile's whirlwind of blades either misses or damages
the victim(s).
~

0 MPINFECT~
mpinfect~
{200}Syntax: mpinfect <victim|all|pcs|foe> <disease name>
{300}
mpinfect will attempt to infect the target with the named disease. The target
does get a save against the save DC of the mobile.

all - will hit all targets mobile can attack
pcs - will hit all players mobile can attack
foe - will hit the person the mobile is currently fighting
~

0 MPPOISON~
mppoison~
{200}Syntax: mppoison <victim|all|pcs|foe> <poison name>
{300}
mppoison will attempt to poison the target with the named poison. The target
does get a save against the save DC of the mobile.

all - will hit all targets mobile can attack
pcs - will hit all players mobile can attack
foe - will hit the person the mobile is currently fighting
~

0 MAZE~
maze~
{200}
Syntax: maze <x size> <y size> <z size> <total rooms>
{300}
This command will restructure the total rooms, starting count from the room
the mobile stands in, into an x*y*z block. There must be enough available
rooms with none of them missing. The maze will entirely exist of 2 way
connections, so you will likely have to spice it up a little after the maze
command has been executed, or maze up small amounts of rooms.

Example: maze 4 4 4 30 will fit 30 rooms in a 4 by 4 by 4 area.
~

0 RESCALE~
rescale~
{200}
Syntax: rescale <mobVnum> <target> <percentage>
{300}
The level, damage, and hitpoints of the mobile will be rescaled to compare
to the targeted character.
~

0 ECHO MPAREAECHO MPASOUND MPECHO MPECHOAT MPECHOAROUND~
echo commands~
{200}
Syntax: echo                  <string> echo to all players
Syntax: mpareaecho            <string> echo to players in area
Syntax: mpasound              <string> echo to surrounding rooms
Syntax: mpecho                <string> echo to room
Syntax: mpechoat     <target> <string> echo to target
Syntax: mpechoaround <target> <string> echo to room excluding target
{300}
All echos can contain color codes

Except for echo the targets must be awake to see the message, mpareaecho
has some advanced options:
mpareaecho <sleepers|indoors|outdoors> <string>

When referencing a target in an echo, use the $ variable strings.
{a}MPROGS200
~

0 SAVEAREA~
Savearea~
{200}
Syntax:  savearea [n] [forreal]
{078}
This command saves the area normally converting all field numbers to the
flag text.  Using the 'n' argument will save the fields in number format.
The file is also normally saved with a '.are.bak' so it does not write over
the loading file.  The use of the 'forreal' option will overwrite the
current '.are' file.
~

0 $~


#$

XXXXXXXXXX
#Savearea