The following 1498 words could not be found in the dictionary of 1150 words (including 1150 LocalSpellingWords) and are highlighted below:
3rd   4k   4s   abilities   ability   able   about   accept   accepted   accidentally   account   across   act   acting   activate   activated   activates   activating   active   actor   actually   Adding   adding   additions   addmprog   adds   affect   affected   affective   affects   affiliation   Again   again   against   ages   aggressive   aggressives   Ahh   align   alignment   alive   allow   allowing   allows   almost   alone   Along   already   altered   Alternatively   always   am   amount   amounts   amp   Another   another   Ansalon   anything   Anytime   appear   Applies   areas   aren   Argument   argument   arguments   armor   around   arrival   arrive   arrived   arriving   ask   Aspects   ass   assist   assistance   Attach   attach   Attaching   attack   attacks   attempt   attitude   automatically   available   avoid   awake   away   back   bad   Balance   bank   Bank   barks   based   basic   Basically   Bastard   battle   Bcommand   Bcommands   bcopper   because   been   before   Begin   begin   beginning   behavior   behaviors   behind   being   believer   belong   belongings   belongs   below   berserk   best   better   Better   between   Beware   bgold   big   bilson   Bilson   bit   Black   blank   bleary   blind   block   boss   both   bottle   bow   boy   bplatinum   Bprograms   Bprogs   brawl   bread   break   bribe   bring   bringing   britches   bsilver   bsteel   buff   building   built   busy   But   but   buy   by   By   Caergoth   call   called   calling   calls   Calm   can   Can   cannot   care   carries   carrying   case   cases   cash   cast   Casting   catch   cause   caused   Causes   causes   caution   certain   chance   changed   changes   changing   char   character   characters   Characters   charm   charmed   chars   check   Check   checked   checking   checks   Checks   Chemosh   clan   clanlevel   clans   class   clblack   clean   cleansing   clears   cleric   clock   Clone   clone   clones   closeup   clred   clwhite   cmd   codes   coins   cold   combat   combinations   Combine   combined   come   comes   Command   command   commands   Commands   commonly   compare   comparison   complain   complete   completed   complex   comprehensive   con   concept   Conclave   connected   considered   constitution   contain   contained   container   containing   continue   continuously   contraptions   Control   convention   conversation   converted   convincing   copper   corpse   correct   counted   coupled   cower   crap   crash   created   creates   creating   creators   Credits   cringe   crowded   Crown   crown   crude   cry   curb   currency   current   curse   customers   dablack   dablue   dagger   dagreen   damage   Damn   Damnit   dances   Dang   dared   dark   Dark   dawhite   day   deactivates   dead   deal   death   debug   decide   default   defined   definitive   Delay   delay   delayed   delicious   delivered   delmprog   demand   departure   depending   desc   described   description   descriptions   deserted   deserve   designated   desired   dest   destination   destroy   destroyed   Destroys   destructing   determine   determines   dex   dexterity   dialogue   did   Didn   didn   dies   different   differently   difficult   dinner   dirt   dirtkick   discriminate   discuss   displayed   Displays   displays   distribute   dock   docks   document   Does   does   dog   doing   dollar   don   done   door   doubt   down   dragon   Dragon   Dragonarmies   Dragonarmy   dragonarmy   drop   drops   drown   dumbfounded   each   Each   easier   easiest   east   East   eat   Echo   echo   echoaround   echoat   edited   editor   effect   effective   effects   eight   either   else   emote   enables   endif   enough   enter   Enter   entering   enters   Enters   entrance   entry   equal   equiped   equipment   equipped   equipping   errors   ers   escort   escorted   especially   essentially   estimate   etc   even   Even   event   ever   every   everyone   everything   everytime   evil   Evil   Exactly   exall   example   Example   Examples   exceeded   exceeds   except   exception   execute   executed   executes   execution   exist   existance   exists   exit   Exits   exits   expanded   expected   expires   Explanation   explanation   explanations   Explanations   explanatory   extra   extracting   eye   eyes   fairly   faking   female   few   fido   field   fight   fighting   figure   find   finish   fire   fireball   five   fix   fixes   flag   flagged   flat   flee   flees   flex   flinger   float   floating   Flow   fly   follower   following   food   fool   for   For   force   forced   Forces   forces   forcing   forget   found   fourth   fresh   from   full   Full   function   functions   further   game   gangplank   gasp   gate   general   Generally   get   Gets   getting   Gforce   give   given   gives   giving   gladly   glance   Global   gnome   gnomish   go   goblin   god   God   godliness   going   gold   Gold   good   Good   goody   got   goto   grall   great   greater   Green   greet   Greet   greetings   greets   grief   ground   group   grow   growls   grpsize   grumble   Gtransfer   guard   guardian   guardians   guards   guide   Ha   ha   had   halls   hand   handled   happen   happened   happens   happy   harm   hastarget   haste   having   hearing   heathen   heavily   heavy   Hehe   her   hero   hers   Hey   him   hints   his   history   hit   hitpoint   hitpoints   Hmm   hobal   hodark   hold   holding   holight   holy   Holy   home   hops   hot   hour   Hours   hours   how   however   However   hp   hpcnt   human   humble   hungry   idea   ie   if   If   ignored   imm   immortal   immortals   imms   immune   Immunities   impassable   implement   implementing   impossible   included   increasing   indeed   indentation   indentations   indicated   indicating   Infinite   infinite   Information   inside   instance   instead   int   integar   integer   intelligence   intelligent   interchange   interpreter   into   inventory   invis   isactive   ischarm   isdelay   isevil   isfollow   isgood   isimmort   isn   isneutral   isnpc   ispc   ispk   issuing   istarget   isvisible   item   items   Its   its   itself   janitor   janitors   Julia   junk   just   Just   keep   keeps   key   keyname   Keyword   keywords   kick   kicking   kill   killed   killer   kind   kisses   kitten   Knight   know   knows   kot   L0   language   lantern   large   last   lately   later   leave   leaves   left   legal   length   Let   let   lethal   lets   Lets   letting   level   levels   Light   light   like   Like   limit   limited   line   lines   link   list   List   listed   listen   little   ll   load   loaded   loading   Loading   Loads   loads   location   log   long   look   looking   looks   loop   looping   loops   lordship   low   lower   lucky   made   mage   magic   make   makes   making   male   mamma   mana   manner   Manual   many   Many   Mariner   match   matched   math   max   maximum   me   Meaning   means   measure   Medit   medit   megs   memory   Memory   merchant   message   messages   metamorphing   midnight   might   Min   min   mind   minimum   minstrels   minute   Miscellaneous   mistake   mload   mloaded   Mmmm   mob   Mob   mobexists   mobhere   mobile   Mobiles   mobiles   Mobprog   mobprog   mobprogs   mobs   Mobs   modified   money   month   more   More   mortal   most   Most   move   Moves   moves   mpedit   Mpedit   mppurge   mprog   mprogs   much   mud   muds   Multiple   murder   my   My   myself   name   named   names   Nasty   naturally   necessary   need   needed   nested   neutral   new   nice   ninny   nod   non   none   None   normal   normally   north   note   Note   now   Now   npcs   null   num   number   numbers   numeric   Nyyaaa   obj   object   object1   object2   Objects   objects   objexists   objhere   objtype   objval   objval0   objval1   objval2   objval3   objval4   obtuse   obvious   occasionally   occurs   off   offensive   Often   often   Oh   old   oload   omitted   on   On   Once   One   one   ones   Only   only   onto   Opens   operator   Operators   operators   opponent   opposite   optional   options   or   Or   order   Order   original   Orlouge   orlouge   others   Otherwise   otherwise   Otransfer   our   out   output   Output   over   own   Paladine   parameter   parameters   parser   part   particular   pass   passed   password   past   patch   pay   pc   pees   pending   people   percent   percentage   percentile   Percheron   perform   performed   performing   Performs   performs   perhaps   perm   permcon   permdex   permint   permstr   permwis   person   personal   personality   phrase   Pick   piece   pill   pitfalls   place   places   plain   platinum   Platinum   Play   played   player   players   playing   please   plus   point   points   pokes   pole   pool   portal   portals   portalto   pos   position   positive   possibility   possible   possibly   pounds   powerful   preceded   preceeded   present   pretty   prevented   primary   prints   Prints   prisons   private   probably   problem   problems   procedure   process   processed   profusely   prog   program   programs   Programs   provided   pseudo   puff   pulse   pulses   purge   purgemaster   purging   push   pushes   put   puts   quest   quests   quick   quickly   quit   Quite   quite   quotes   race   rand   random   Random   range   rate   Rather   rather   re   react   read   real   really   reasons   receive   recruiter   recursions   recursively   Red   redistributed   reduced   refer   reference   referenced   referencing   referred   referring   refers   regardless   reinforcements   release   remember   remove   removed   removes   removing   replace   replaced   replacement   represented   request   requested   required   rescue   reset   resets   response   rest   restored   restores   restriction   result   Reverse   rich   rid   right   ring   Ring   Risks   Rogue   roll   rolled   rom   Rom   room   Room   rooms   rose   Rose   rubbing   running   runs   safe   safety   said   sailor   salute   same   sanctuary   save   saw   say   says   scared   scavenging   scene   scream   script   scroll   second   secondary   see   seeeee   seem   seems   seen   sees   select   self   sell   send   Sends   sense   sentinel   separate   sequence   set   Sets   sets   several   Sex   sex   shall   sharp   she   shoes   shop   shopkeepers   short   Short   should   shout   shown   Shows   shows   shrt   side   sidelong   sign   silent   silently   silvanesti   Silvanesti   silvantesti   silver   similar   simple   simply   simulate   simulates   simultaneously   Since   since   single   sit   sits   sitting   situation   size   slain   slashes   sleeping   slight   slip   small   smile   smiles   sneak   sneaky   sniff   so   socials   Solamnic   some   Some   someone   something   sometime   somewhere   Soooooo   Sorry   sorts   source   south   spaces   span   speak   speaking   special   specific   specified   specify   Specifying   specs   speech   speeds   spell   spells   spider   spit   squash   squat   squire   Stack   staff   staged   stand   standard   standing   starting   statement   states   Stats   stats   status   Steel   steel   stern   still   stock   stops   storage   str   strength   Strength   string   strings   strip   strong   stud   stuff   sub   Subclan   subclan   subclan1   subclan2   Subclans   subclans   subroutine   subroutines   subsequently   subterfuge   successful   such   Summary   summoning   supplied   supplying   sure   surr   surrenders   suspicious   Sword   sword   symbol   table   tailor   takable   take   Takhisis   talk   talking   tarantula   target   target1   target2   tasty   teleport   testing   text   than   thanks   Thanks   that   That   their   themselves   then   There   there   thereafter   These   these   they   They   thief   thier   thing   things   think   thinking   third   this   This   those   three   through   Thus   tick   ticket   ticks   ties   time   Time   timer   timers   times   to   toast   tobacco   told   too   tough   track   training   transfer   transferred   transferring   transfers   tricks   tricky   tries   trigger   Trigger   triggered   triggerings   triggers   Triggers   trivial   trsgp   try   trying   tummy   turn   twiddle   twiddles   two   Tyche   type   Type   types   Types   uh   unconditional   unconditionally   uncouth   undefined   under   understand   unescorted   unique   unless   until   unwanted   up   update   upon   usage   use   used   useful   Useful   uses   using   usual   Usually   usually   vacant   Valid   valid   validity   values   vanish   vanishing   vape   variable   Variable   variables   Variables   ve   vecho   very   Very   Vforce   via   victim   victims   virtual   visibility   visible   vnum   vnums   vs   wait   wake   wandering   wanna   want   wanted   wants   warning   warnings   warrior   watch   water   waving   way   we   We   weapon   wear   wearable   wearing   wears   weather   weigh   weight   Weight   weights   weird   welcome   Welcome   well   west   West   what   whatever   when   whenever   Whenever   where   Wherehaveyoubeen   Whew   which   while   White   whitegold   who   Who   whole   whomever   Wildrunner   will   wimpy   Windrider   Wing   wis   wisdom   wish   wishes   with   With   within   Within   withing   without   Without   wiz   woman   won   wonder   wont   word   words   work   works   world   worn   worried   worry   worrying   worship   would   Wow   xxxxx   yes   yet   yourself   Yum   zone   Zone  

Clear message
Edit History Actions Discussion


Manual For mobprogs On Rom 2.4 

  The object of this document is to help you avoid some of the pitfalls
  that many beginning mprog'ers make, myself heavily included.
  It exists to be a definitive guide to making mobile programs.

Main Aspects:

    Triggers           - Valid Trigger Types
    Variables          - Valid Variables
    If_Checks          - Valid If_Checks with Examples
    Mob Commands       - Valid MOB Commands
    Attaching Programs - How to attach mprog, set trigger, chance etc.
    Loading Mobs       - Risks of loading mobiles
    Miscellaneous      - Some last hints and warnings.
    Credits            - Who built who
How to Begin
  mpedit create (vnum) -  makes a new mprog
  (note: keep vnums within area vnum list, and don't even think about
  trying to trigger a mprog from a different vnum range ;p).
Valid Trigger Types:

    act                bribe              death              entry
    fight              give               greet              grall
    kill               hpcnt              random             speech
    exit               exall              delay

    Trigger         Argument and what must happen to activate trigger

    act             WORDLIST or P WORD_PHRASE to match from act() to mobile
    bribe           INTEGER amount of minimum gold amount given to mobile
    entry           PERCENT chance to check when mobile moves to a new room
    give            FULL OBJECT NAME or ALL to match when obj given to mobile
    greet           PERCENT chance to check if visible char enters mobile's room
    grall           PERCENT chance to check when any char enters mobile's room
    fight           PERCENT chance to check at fight_pulse if mobile is fighting
    hpcnt           PERCENT lower than mobiles hit/max_hit if mobile is fighting
    death           PERCENT chance to check after mobile has been slain
    random          PERCENT chance to check whenever a PC is in the mobiles zone
                    ******** WARNING.. SEE BELOW IN 'NOTE' on Random **********

    speech          WORDLIST or P WORD_PHRASE to match in dialogue to mobile
    kill            PERCENT chance to check when a PC is killed
    delay           INTERGER amount of ticks before activating mprog
    surr            *NOT USED on Ansalon - otherwise if char surrenders to mob
    exit            PERCENT chance to check if visible char exits mobile's room
    exall           PERCENT change to check when any char exits mobiles room

Trigger & Explanations

  Keyword : 'act'
  Argument: string
  The argument is a phrase, a text string. The trigger is activated
  whenever the phrase is contained in the act() message.

  Most general trigger. Applies to almost every event which happens
  in the mud. Anytime the function act() is called with a message
  to be delivered TO_CHAR,TO_VICT,TO_ROOM,etc. the act can be
  triggered.  Basically this will trigger on almost everything
  you'll ever want. Output of "say", "shout" and "emote" do not
  trigger this event.
  IE: 'addmprog (vnum) act "looks at you" 100'


  Keyword : 'speech'
  Argument: (word) or "(string)"

  This is only triggered when the phrase is contained in a
  message which has been said by a PC in the same room as the mob.
  The PC restriction is not necessary, but makes infinite loops
  between two talking mobiles impossible. It also makes it impossible
  for two NPC's to stand and discuss the weather however.
  IE: 'addmprog (vnum) speech "Hello there" 100'
  (then mprog has a speech or action etc, happens 100% of the
  time when someone says 'hello there')

  Keyword : 'random'
  Argument: number (percentage to trigger)

  This trigger is checked at each PULSE_MOBILE and if the argument is
  greater than a percentage roll the trigger is activated. This
  will happen even if there is no PC in the room with the mob,
  but there must be players in the same area.
  It is useful to give mobiles a bit of a personality. For instance
  a janitor who stops to spit tobacco, or complain about the hours,
  or wonder why there are no woman janitors on muds, or a fido which
  barks or growls or pees on the curb is much more alive than one
  which just sits there scavenging.
  Note that this trigger is checked only when there are players in
  the area. If you want this event to be triggered always, you must
  set the ACT UPDATE_ALWAYS flag of the mobile.
  On further testing, using it on an update_always mob causes
  "MAX CALL EXCEEDED" errors profusely. Let's just say the error log was
  4.3 megs for ONE day. If you do decide to use random on an
  UPDATE_ALWAYS mob, set the random to something like 1-3% and DON'T
  make too many of these mobs (like 1 or 2), then hold your britches
  and wait for mprogs to crash your mud. Generally speaking, I've seen
  no need for UPDATE_ALWAYS/Random mprog to be combined, most reasons
  to update without a player present, can be handled by act or specs.

  Keyword : 'greet'
  Argument: number (percentage to trigger)

  Whenever someone enters the room with the mobile, and the mobile saw
  the person enter, this is checked. Good for shopkeepers who want
  to welcome customers, or for pseudo-aggressive mobiles which
  need to discriminate on who they attack. Greet trigger activates
  only when the mobile is not busy (fighting, sitting, sleeping
  etc.). If you want to be sure to catch all players, use grall.
  (note: will only greet if the mob can 'see' the pc.)
  Keyword : 'grall'
  Argument: number (percentage to trigger)

  Like greet, but it can be triggered even if the mobile didn't
  see the arrival (i.e. sneak, invis, etc) or is busy. Most
  useful for faking teleport rooms or for impassable guardians. IE
  'addmprog (vnum) grall 75', mprog triggers 75% of the time when
  pc enters.
  Keyword : 'entry'
  Argument: number (percentage to trigger)

  The opposite of greet trigger. Whenever the mobile
  itself enters a new room, this can be triggered.  Useful for
  looking around, or waving or other things that real PCs do when
  they arrive at a crowded room.
  IMPORTANT: In an entry program, the mobile can only refer to a
  random pc ($r in if checks) -- there's no way to know how many PCs
  exist in the room the mobile enters! Also, you must check visibility
  of the target in your program.
  Keyword : 'exit'
  Argument: number (0:north, 1:east, 2:south 3:west 4:up 5:down)

  The opposite of entry trigger. This is activated when
  PC tries to leave a room through an exit indicated by the
  argument, and the mobile sees the person leave. Useful for
  having a single guardian to watch several exits. An exit trigger
  works better than an entry trigger, since you can refer to a
  specific PC instead of a random PC.
  IMPORTANT: If this event is triggered, the victim will not move
  through the exit. If necessary, you must move the character yourself
  in your program (see MOB TRANSFER/MOB GTRANSFER). Also, this event
  is not triggered when a character flees from combat or the mobile is
  not in its default position.
  IE 'addmprog (vnum) EXIT 0 100' always activates the mprog when a pc
  tries to exit to the north of the mob (if pc is able to be seen by mob)
  Keyword : 'exall'
  Argument: number (0:north, 1:east, 2:south 3:west 4:up 5:down)

  The same as exit trigger, but it can be triggered even if the mobile
  cannot see the person trying to leave the room or if the mobile is busy.
  Keyword : 'give'
  Argument: string or object vnum

  The argument is either the a string containing words to be matched
  against the keywords of the object, or the word "all"; e.g. argument
  "long sword" will match to objects "long bow" and "small sword".
  Alternatively, the argument can be the virtual number of a single
  This is triggered whenever something is given to the mobile.  Often
  used for quests.  Since the first successful trigger is the only one
  of this type which is processed, having an "all" argument in the
  script at the end of the MOB program list is essentially a default
  response. IE 'addmprog (vnum) give food' triggers whenever someone
  gives the mob something with keyname or type food.

  Keyword : 'bribe'
  Argument: number (The argument is any positive integer number.)

  This trigger is activated whenever money is given to the mobile. If
  the amount given exceeds the number, then process the commands. Note
  again, that an argument of '1' would act as a default response. Also
  note that if the script is not triggered (because of too little
  money having been given), the mobile still keeps the money, unless
  you make an if_check for money $i combined with a money purging or
  mob replacement upon trigger. (Gets tricky, don't ask ;p)
  ROM 2.4 NOTE: Since ROM 2.4 has two different types of currency
  (gold and silver [gold and steel in Ansalon] coins), for bribe
  trigger the amount to be given is converted to steel coins with the
  rate of 1 steel = 100 gold. Thus, the number in the argument should
  be the expected amount in gold coins.
  Keyword : 'kill'
  Argument: number (percentage to trigger)

  This trigger is checked whenever a PC attacks the mobile. The check
  occurs only ONCE, in the beginning of combat. Useful for summoning
  assistance etc. (See MOB LOAD).
  Keyword : 'fight'
  Argument: number (percentage to trigger)

  Useful for giving mobiles combat attitude. It is checked every
  PULSE_VIOLENCE when the mobile is fighting. Can be used to cast
  spells (see MOB CAST), curse at the opponent, or whatever. Only the
  first successful one will be processed to save time. Also, this
  means that the mobile wont get lucky and 1. curse, cast a fireball
  and 2. spit on the player, cast another fireball in the same pulse.

  Keyword : 'hpcnt'
  Argument: number  (percentage of hp to trigger)

  Is activated at each PULSE_VIOLENCE when the mobile is fighting. It
  checks to see if the hitpoints of the mobile are below the given
  percentage. Multiple hpcnt triggers should be listed in increasing
  order of percent since a 40% will always be activated before a 20%
  and, only the first successful trigger is performed. (See also MOB
  FLEE). IE 'addmprog (vnum) hpcnt 20' has the mob activate mprog at
  20% or less of hp.

  Keyword : 'death'
  Argument: number (percentage to trigger)

  When the mobile dies, if the random percentage is less than the
  argument the mobile performs the MOB PROGRAM commands rather than
  the usual death_cry() sequence.  This is done before the corpse is
  made, so the commands can be considered the mobiles last gasp. It
  could perhaps destroy the items it was holding (see MOB REMOVE
  and MOB JUNK), or create some (see MOB OLOAD), or cast a spell (see
  MOB CAST) on the killer and the room, or even goto a new location
  (see MOB GOTO) and die there (with a text message, the corpse would
  seem to vanish) The position of the mobile is set to STANDING, and
  so it can do all the normal commands, without worrying about being
  DEAD. However, even if the mobile restores itself to full hit
  points, it will still die. This is not a way to immortal mobiles.
  However, the last thing this mobile does could be to goto some
  vacant room, load a fresh version of itself, drop all its items,
  force the new mobile to get all the items and wear them, send the
  new mobile back to the character who killed it and force the new
  mobile to attack that character. Along with a text message which
  said the mobile restored itself, this might be a convincing effect.
  (Note that your kitten could turn into a dragon this way too).

  Keyword : 'delay'
  Argument: number

  This trigger activates when the delay of a mobile (set with the MOB
  DELAY command) expires. This trigger can be used to create staged
  mobile behavior, for example, a guardian could see a player entering
  a room, give a warning and activate a delay. If the player is still
  present when the delay expires, the guard would attack the player.
  (See also MOB REMEMBER). A mobile can have several delay triggers,
  but every time the delay timer expires, all the triggers are checked
  and the first successful one executed.
   Commands within Mpedit    Explanation
      show [Enter]            - shows current MOB program being edited
      code                    - Enters code editor
    Within code editor
      .s                      - Shows current code
      .r word word            - replace given word
      .r "phrase" "phrase"    - replace strings of words
      .c                      - clears code
      @                       - Exits code editor
      done                    - exits editor
                               (make sure you exit the code editor with '@' first)


   variable               mobile actor victim random     object 2nd_object
      name                $i    $n     $t     $r         $o       $p
      shrt_desc/title     $I    $N     $T     $R         $O       $P
      he/she/it           $j    $e     $E     $J         --       --    '$'symbol=$$
      him/her/it          $l    $m     $M     $L         --       --
      his/hers/its        $k    $s     $S     $K         --       --
      a/an                --    --     --     --         $a       $A
More complete explanation of VARIABLES

  To make things come alive, variables are needed.  These are
  represented in the MOBprograms by using a dollar sign convention
  as in the socials. When the mud command is processed, these
  variables are expanded into the values shown below. Usually, it
  is best to use the short descriptions of mobiles and the names
  of players when speaking them, but if you are performing an
  action to someone almost always you want the name. The title
  field for players is an extra that probably wont often be used.
   VARIABLE         Explanation

      $i            - the first of the names of the mobile itself.
      $I            - the short description of the mobile itself.
      $n            - the name of whomever caused the trigger to happen.
      $N            - the name and title of whomever caused the trigger to happen.
      $t            - the name of a secondary character target (i.e A smiles at B)
      $T            - the short description, or name and title of target (NPC vs PC)
      $r            - the name of a random PC in the room with the mobile
      $R            - the short description, or name and title of the random PC
      $q            - the name of the MOB PROGRAM target (see MOB REMEMBER)
      $Q            - the short description of the MOB PROGRAM target
      $j            - he,she,it based on sex of $i.
      $e            - he,she,it based on sex of $n.
      $E            - he,she,it based on sex of $t.
      $J            - he,she,it based on sex of $r.
      $k            - him,her,it based on sex of $i.
      $m            - him,her,it based on sex of $n.
      $M            - him,her,it based on sex of $t.
      $K            - him,her,it based on sex of $r.
      $l            - his,hers,its based on sex of $i.
      $s            - his,hers,its based on sex of $n.
      $S            - his,hers,its based on sex of $t.
      $L            - his,hers,its based on sex of $r.
      $o            - the first of the names of the primary object (i.e A drops B)
      $O            - the short description of the primary object
      $p            - the first of the names of the secondary object (i.e A puts B in C)
      $P            - the short description of the secondary object

  Also, in if_checks, the accepted variables are the basic ones
  (i,n,t,r,o,p,q).  If a variable is referenced that doesn't
  exist, then the value is simply left blank or replaced with
  "someone"/"something" in output (i.e referring to $o when the
  trigger is: A kisses B)
  If variable $q has not been defined, it is automatically set to
  the last player that has triggered the program being executed
  (i.e. variable $n). Once $q has been defined, it can be modified
  with MOB REMEMBER and MOB FORGET commands in a program. Variable
  $q lets the mobile "remember" a player across different
  programs, which can be useful. Note that $q is set automatically
  only the FIRST TIME the mobile executes a program, every time
  thereafter it must be set with MOB REMEMBER.
  The only problem with the variables is that the secondary object
  and the secondary target are passed by act() in the same
  location.  This means that if you reference $t in an  A puts B
  in C  situation, the result will probably be a happy mud crash
  or some weird side effect, especially if $t is used in an
  if_check (i.e. if isnpc $t in the above situation) The basic fix
  for this is to change everyone who calls the act() procedure to
  specify a secondary object and a secondary character. But that
  is a fairly comprehensive trivial twiddle, so we left it the way
  it is so that, you aren't forced to make all those twiddles to
  use the MOBprograms.
IF_CHECK quick list

   variable        Argument?               Meaning
     pc_str        if pc_str $n >= 14      - is the PC's strength >= 14
     pc_int        if pc_int $n <= 14      - is the PC's intelligence <= 14
     pc_wis        if pc_wis $n == 14      - is the PC's wisdom 14
     pc_dex        if pc_dex $n > 14       - is the PC's dexterity > 14
     pc_con        if pc_con $n < 14       - is the PC's constitution < 14
     pc_permstr    if pc_permstr $n >= 14  - is the PC's perm strength >= 14
     pc_permint    if pc_permint $n <= 14  - is the PC's perm intelligence <= 14
     pc_permwis    if pc_permwis $n == 14  - is the PC's perm wisdom 14
     pc_permdex    if pc_permdex $n > 14   - is the PC's perm dexterity > 14
     pc_permcon    if pc_permcon $n < 14   - is the PC's perm constitution < 14
     pc_hours      if pc_hours $n >= 10    - if the PC has 10 or more hours played
     pc_weight     if pc_weight $n < 250   - PC Weight Check, standard operators
     pc_clanlevel  if pc_clanlevel >= 8    - Is PC's clan level over 8?
     pc_bcopper    if pc_bcopper $n < 250  - PC Bank copper check
     pc_bgold      if pc_bgold $n < 250    - PC Bank Gold check
     pc_bsilver    if pc_bsilver $n < 250  - PC Bank silver check
     pc_bsteel     if pc_bsteel $n > 250   - PC Bank Steel check
     pc_bplatinum  if pc_bplatinum $n < 250- PC Bank platinum check
     pc_subclan1   if pc_subclan1 $n 2     - Subclan clan of PC's main clan is 2?
     pc_subclan2   if pc_subclan2 $n 3     - Subclan clan of PC's secondary clan is 3?
     pc_ispk       if pc_ispk $n           - Is $n (PC's only) a player killer?
     pc_god        if pc_god $n Chemosh    - Is $n's God Chemosh? (PC's only)
     rand          if rand 30              - if random number < 30
     isnpc         if isnpc $n             - is $n a mobile
     ispc          if ispc $n              - is $n a pc
     isgood        if isgood $n            - is $n good
     isevil        if isevil $n            - is $n evil
     isneutral     if isneutral $n         - is $n neutral
     isimmort      if isimmort $n          - is $n immortal
     ischarm       if ischarm $n           - is $n charmed
     isfollow      if isfollow $n          - is $n following, or being escorted
     mobhere       if mobhere fido         - is there a mob name 'fido' here
                   if mobhere 1233         - is there mob vnum 1233 here
     objhere       if objhere bottle       - is there a object named 'bottle' here
                   if objhere 1233         - is there obj vnum 1233 here
     people        if people > 2           - is there over 2 character in room
     players       if players > 1          - does room contain > 1 PCs
     mobs          if mobs > 2             - does room contain > 2 mobiles
     mobexists     if mobexists fido       - is there a fido somewhere
     objexists     if objexists sword      - is there a sword somewhere
     clones        if clones > 3           - are there > 3 mobs of same vnum here
     order         if order == 0           - is mob the first in room
     hour          if hour >= 8            - is the time after or equal to 8 o'clock
     isactive      if isactive $n          - is $n's position != SLEEPING
     pos           if pos $n standing      - is $n standing
     language      if language $n human    - is $n's language human?
     isdelay       if isdelay $i           - does $i have mobprog pending
     isvisible     if isvisible $n         - can mob see $n
     hastarget     if hastarget $i         - does $i have a valid target
     istarget      if istarget $n          - is $n mob's target
     exists        if exists $q            - does $n exist somewhere
     affected      if affected $n blind    - is $n affected by blind
     act           if act $i sentinel      - is $i flagged sentinel
     off           if off $i berserk       - is $i flagged berserk
     imm           if imm $i fire          - is $i immune to fire
     carries       if carries $n sword     - does $n have a 'sword'
                   if carries $n 1233      - does $n have obj vnum 1233
     wears         if wears $n lantern     - is $n wearing a 'lantern'
                   if wears $n 1233        - is $n wearing obj vnum 1233
     has           if has $n weapon        - does $n have obj of type weapon
     uses          if uses $n armor        - is $n wearing obj of type armor
     name          if name $n puff         - is $n's name 'puff'
     clan          if clan $n 'whatever'   - does $n belong to clan 'whatever'
     race          if race $n dragon       - is $n of 'dragon' race
     class         if class $n thief       - is $n a thief (mage, cleric, warrior etc)
     objtype       if objtype $p scroll    - is $p a scroll
     vnum          if vnum $i == 1233      - virtual number check
     hpcnt         if hpcnt $i > 30        - if hit points are below 30%
     room          if room $i == 1233      - room virtual number
     sex           if sex $i == 0          - sex check
     level         if level $n < 5         - level check
     align         if align $n < -1000     - alignment check
     money         if money $n             - does $n have X money?
     objval0       if objval0 > 1000       - object value[] checks 0..4
     grpsize       if grpsize $n > 6       - group size check, if less than
                                             6 in this case

     dagreen       if dagreen $n           - Dragonarmy and in Green (main or second)
     dared         if dared $n
     dablack       if dablack $n
     dablue        if dablue $n
     dawhite       if dawhite $n
     orlouge       if orlouge $n           - Mariner AND Orlouge (main or subclans)
     bilson        if bilson $n
     clwhite       if clwhite $n           - Conclave AND White (main or subclans)
     clblack       if clblack $n
     clred         if clred $n
     hodark        if hodark $n            - Holy Order AND Dark (main or sub)
     hobal         if hobal $n
     holight       if holight $n
     rose          if rose $n              - Solamnic Crown
     crown         if crown $n
     sword         if sword $n

There is now a tick trigger, which triggers everytime a tick happens with a
percentage trigger.  
Along with this is also some if checks for mob programs (minute, day, hour, month)
They all work pretty explanatory (if month > 5), except minute.  
With the minute one its in 4s from 0 up to 95.  4 for instance is 1:00 AM, 0
is midnight, and the like. Its an idea behind hours more than anything.

IF_CHECK Full list with Examples & Syntax

  PC_STR if_check: (Ansalon: not stock mprog code)  
  This check is a value comparison. Is the Strength of the player >=< the
  if PC_STR $n >= 18
    say You are quite buff $N!
    say Better hit the weights $N.
  PC_INT if_check: (Ansalon: not stock mprog code) See PC_STR above. Stats check
  PC_WIS if_check: (Ansalon: not stock mprog code)
  PC_DEX if_check: (Ansalon: not stock mprog code)
  PC_CON if_check: (Ansalon: not stock mprog code)
  PC_PERMSTR if_check: (Ansalon: not stock mprog code)  
  This check is a value comparison. Is the Strength of the player >=< the
  if PC_PERMSTR $n >= 18
    say You are naturally very strong $N!
    say Better hit the weights $N.
  PC_PERMINT if_check: (Ansalon: not stock mprog code) See PC_PERMSTR above.
  PC_PERMWIS if_check: (Ansalon: not stock mprog code) Check of PERM stats.
  PC_PERMDEX if_check: (Ansalon: not stock mprog code)
  PC_PERMCON if_check: (Ansalon: not stock mprog code)
  PC_HOURS if_check: (Ansalon: not stock mprog code)
  This check is a value comparison. Is the Hours played of the player >=< the
  if PC_HOURS $n >= 200
    say Holy crap $N! You've been playing for ages.
    say Play a while $N, you might like the place.
  PC_BCOPPER if_check: (Ansalon: not stock mprog code)
  This check is a value comparison. Is the bank steel of the player >=< the
  if PC_BCOPPER $n >= 200
    say Holy crap $N! You have over 200 steel in the bank!
    say You don't have very much money in the bank $N.
  PC_BGOLD if_check: (Ansalon: not stock mprog code) check vs their bank
  PC_BSILVER if_check: (Ansalon: not stock mprog code)
  PC_BSTEEL if_check: (Ansalon: not stock mprog code)
  PC_BPLAT if_check: (Ansalon: not stock mprog code)
  PC_WEIGHT if_check: (Ansalon: not stock mprog code)
  This check is a value comparison. Is the Weight check of the player >=< the
  if PC_WEIGHT $n >= 600
    say Holy crap $N, you weigh over 600 pounds!
    say You aren't too heavy yet $N.
  PC_CLANLEVEL if_check: (Ansalon: not stock mprog code)
  This check is a value comparison. Is the clanlevel check of the player >=< the
  if PC_CLANLEVEL $n >= 8
    say You are a recruiter $N.
    say You better go talk to the boss $N.
  PC_Subclan if_check: (Ansalon: not stock mprog code)
  This check looks to see which subclan a player is in, only on PC's.
  Solamnic:   Crown     = subclan1 = 1
              Sword     = subclan1 = 2
              Rose      = subclan1 = 3
  Conclave:   White     = subclan1 = 1
              Red       = subclan1 = 2
              Black     = subclan1 = 3
  Dragonarmy  GREEN     = subclan1 = 1
              WHITE     = subclan1 = 2
              BLACK     = subclan1 = 3
              BLUE      = subclan1 = 4
              RED       = subclan1 = 5
  Holy Order: Light     = subclan1 = 1
              Balance   = subclan1 = 2
              Dark      = subclan1 = 3

  Mariner:    Orlouge   = subclan1 = 1
              Bilson    = subclan1 = 2
  Wildrunner: Windrider = subclan1 = 1
  Rogue:      No subclans

  Use subclan1 for primary clan, subclan2 for secondary clan.
  if clan $n dragonarmy
    if pc_subclan1 $n 1
      say Welcome You Green Bastard $N!
      if pc_subclan1 $n 2
        say Welcome You White DA stud $N!
        if pc_subclan1 $n 3
          say Welcome You Black dog, you $N!
          say I can't figure out what subclan you are $N.
    say You aren't in Dragonarmies $N!

  NOTE: You can use either subclan1 or the subclan name for the argument.
  PC_ISPK if_check: (Ansalon: not stock mprog code)
  This check is simple, is the player a player killer?
  if pc_ispk $n
    say You are a player killer!!!
    cringe $n
    say Hmm, scared of a little battle $n?
  RAND if_check:
  This check is a value comparison. Is the a random number >= the argument.
  if pc_god $n Paladine
    say You worship the Platinum Dragon!!!
    bow $n
    say Hello there non-believer!
  RAND if_check:
  This check is a value comparison. Is the a random number >= the argument.
  if RAND 30
    say Hey, I got 30 or under in my roll!
    say I rolled over 30.
  ISNPC if_check:
  This check is simple, Is the victim a mob?
  if ISNPC $n
    say Hey, you're a mob, go away.
    say You're a player!
  ISPC if_check:
  This check is simple, Is the victim a player character?
  if ISPC $n
    say You're a player!
    say Hey, you're a mob, go away.
  ISGOOD if_check:
  This check is a value comparison, Is the victim good? (alignment number check)
  if ISGOOD $n
    say You're a goody two-shoes, You're a goody two-shoes.
    emote dances around
    emote pokes you in the eye.
    say You aren't a goody goody.
  ISEVIL if_check:
  This check is a value comparison, Is the victim evil? (alignment number check)
  if ISEVIL $n
    say You are Soooooo Evil $N!!
    cower $n
    say You aren't bad at all $N.
  ISNEUTRAL if_check:
  This check is a value comparison, Is the victim neutral? (alignment number
    say You are quite neutral $N.
    say You must be good or evil $N.
    emote looks at you with a suspicious sidelong glance.
  ISIMMORT if_check:
  This check is a value comparison, Is the victim's level above hero? (102+)
  if ISIMMORT $n
    say Hello there your godliness $N.
    say You are a mortal!
    say You will DIE $N!!!
    mob kill $n

  NOTE: Very useful if you have a GRALL program and don't want immortals to
        have it trigger. Or have a program to damage players, leaves imms alone.
  ISCHARM if_check:
  This check is simple, Is the victim charmed?
    say Not thinking for yourself lately I see, who's your master $N?
    say You have much free will $N.
  ISFOLLOW if_check:
  This check is simple, Is the victim following someone here?
  if ISFOLLOW $n
    nod $n
    say You may pass, but don't come here unescorted $N.
    say You don't belong here $N!!
    mob transfer $N pole

  NOTE: This is useful for clans (escort), for prisons etc.
  MOBHERE if_check:
  This check is simple, Is a certain mob here?
  if MOBHERE tarantula
    mob force tarantula mob kill $n
    say Damn, if my spider was here, you'd be toast $N.

  NOTE: You can interchange the name with a vnum to be more specific.
  OBJHERE if_check:
  This check is simple, Is a certain object here?
  if OJBHERE table
    sit table
    say Damn, did you take my table $R.

  NOTE: You can interchange the name with a vnum to be more specific.
  PEOPLE if_check:
  This check is a value comparison, are there argument PC's + NPC's here?
  if PEOPLE >= 5
    say Wow, we're getting full in here.
    say The place seems pretty deserted doesn't it $N?

  NOTE: You can be more specific with MOBS or PLAYERS checks, to determine
        numbers of PC's or NPC's.
  PLAYERS if_check:
  This check is a value comparison, are there argument players here?
  if PLAYERS >= 2
    say Quite a few players here.
    say You're the only player here $N.
  MOBS if_check:
  This check is a value comparison, are there argument mobs here?
  if MOBS >= 2
    say Quite a few mobs here $N.
    say Why don't you kill some?
    say Not very many mobs here $N.
  MOBEXISTS if_check:
  This check is simple, is there a mob called/number argument in existance?
  if MOBEXISTS Julia
    say You should go talk to Julia $N.
    say Julia must not be around $N.
  OBJEXISTS if_check:
  This check is simple, is there an object called/number argument in existance?
  if OBJEXISTS whitegold
    say Sorry $N, you can't have one, someone already has a White Gold Ring.
    say Oh sure, take my nice ring $N.
    mob oload 1342134 0 none
    give ring $n.
  CLONES if_check:
  This check is a value comparison, are there argument of the same mob here?
if clones >= 4
  say More than four!
  if clones == 3
    say Exactly three, plus me!
    if clones == 2
      say Exactly two, plus me!
      if clones == 1
        say Just one clone of me!
        if clones == 0
          say Not just me!
          say Just me!


  Clone can be used with the usual operators > < >= <= ==.
  It checks for clones of itself, so if clones == 1, means
  there is ONE mob JUST like it in the room, it's clone.
  If clones can be used to check IN ROOM only.
  It's useful for a guard loading more guards, but only
  if there are only say less than 8 in the room.
  ORDER if_check:
  This check is a value comparison, is victim the argument in line?
  if ORDER $n >= 2
    say Why don't you ask your master $N?
    say Ahh, you are the boss $N.

  NOTE: This one is useful for letting the mob only listen to the first person
        to come into the room, or to attack the person if they are second etc.
  HOUR if_check:
  This check is a value comparison, does the time >=< the argument?
  if HOUR >= 8
    say Wow, it's past eight already.
    say Sorry, I don't do squat until 8 am $N.

  NOTE: This check can be used to have the mob do certain things at certain
        times, like closeup shop, sell certain items at certain times (via
        mob oload etc). All sorts of uses.
  ISACTIVE if_check:
  This check is simple, is victim NOT sleeping?
  if ISACTIVE $i
    say Hey, I'm awake already.
    emote looks around with bleary eyes.

  NOTE: This check can be used to have the mob do certain things based on its
        position, like wake if it's sleeping, or not attack if it has a grall etc.
  LANGUAGE if_check:
  This check is a value check, is victim's language the same as the argument?
  if language $i goblin
    say I'm speaking goblin, you fool you can't understand me.
    say I'm uh, not speaking goblin!
  A good way to use this particular one is to check the target, then say
  something else, this simulates subterfuge. Or have the target ONLY accept
  the command in the language it wants!

  If language $n silvanesti
    say My greetings $n, that is the correct password.
    MOB TRANS $n 1234
    language silvantesti
    say I only speak Silvanesti you uncouth heathen.
  POS if_check:
  This check is a value check, is victim in the position argument?
  if POS $i fighting
    say Hey, I'm kind of busy here $N, please come back later.
    say Hey, I'm not fighting, wanna brawl $N?

  NOTE: This check can be used to have the mob do certain things based on its
        position, or check others, like 'if pos $N fighting' say Calm down $N! etc.
        Or if position $r sleeping, wake $r, say No sleeping $R!!
  ISDELAY if_check:
  This check is simple, does <actor> have a delay?
  if ISDELAY $i
    say Sorry $N, I'm busy already.
    mob remember $n
    mob delay 20

  NOTE: This check is very useful for having mobs act out things via delay.
        It keeps them from changing the delay, or starting it over before they
        finish the first one. Also, other mobs can see if a certain mob is busy etc.
  ISVISIBLE if_check:
  This check is simple, is victim able to be seen by the mob?
    say I can seeeee you!
    say Hey, who's there?

  NOTE: Useful for having mobs not try to do something with someone they can't see.
  HASTARGET if_check:
  This check is simple, does <actor> have a target? ($q)
    say Hey, have you seen $Q $N?
    say Hey, I'll remember you $N!
    mob remember $n

  NOTE: This one is great for mobs checking first to see if they are already
        after someone etc.
  ISTARGET if_check:
  This check is simple, is victim the target of $i?
  if ISTARGET $n
    say Hey, just the man I've been looking for $Q!
    mob kill $Q
    mob forget
    say You're not who I'm looking for $N, I'm after $Q.

  NOTE: This one works with HASTARGET well to determine who the mob is after etc.
  EXISTS if_check:
  This check is simple, does $q exist?
  if EXISTS $q
    mob at $q mob echoat $q Time to come home $Q.
    mob at $q mob echoaround $q $I comes to take $Q home for dinner.
    mob at $q mob transfer $q 12151
    say My victim has left the game.
    mob forget.

  NOTE: Useful for having mobs not error when looking for a target that has
        quit the game. You can also use it with a name of obj/mob etc.
  AFFECTED if_check:
  This check is a value check, is victim affected by argument?
  if AFFECTED $n fly
    mob echo You float across the water.
    mob echo You begin to drown in the pool!
    mob damage $n 100 200 lethal

  NOTE: Can also be used to have the mob see if it is affected by spells etc.
        IE. if AFFECTED $i haste
              eat pill
  ACT if_check:
  This check is a check against the victim for how they act.
  if ACT $i warrior
    say I'm a tough warrior.
    mob kill $n
    say I'm much to wimpy to fight you $N.

  NOTE: This is useful if you are using the same mprog on a few mobs and want
        them to react differently depending on how thier 'act's are set.
  OFF if_check:
  This check is a check against the victim for what offensive behaviors 
  are set for them.
  if OFF $i dirtkick
    emote looks at the ground.
    dirt $n
    say You know, I'd kick dirt on you if I could.

  NOTE: This is useful if you are using the same mprog on a few mobs and want
        them to react differently while fighting depending on how thier 'OFF's are
  IMM if_check:
  This check is a check against the victim what Immunities they have.
  if IMM $n magic
    say Damnit, my magic can't harm you $N.
    emote slashes at you with a dagger instead.
    say Ha ha!
    mob cast fireball $n

  NOTE: This works well for mobs fighting to not make the mistake of trying
        damage mobs/pc's with things those mobs/PC's are immune to. IE, IMM cold
        so the mob loads a different weapon that isn't flagged cold, etc.
  CARRIES if_check:
  This check looks to see if the victim carries or wears the argument (vnum or
  if CARRIES $n sword
    say That's a nice sword you have there $N.
    say You should go buy a sword.

  NOTE: This check only checks to see if they are equiped with or have the
        item in thier inventory. If it's inside a container, it will not
        trigger (will do the else statement).
  WEARS if_check:
  This check looks to see if the victim wears(has equipped) the argument (vnum or
  if WEARS $n holy symbol
    bow $n
    say Welcome to our humble sanctuary $N.
    say You shouldn't be here $N.
    mob force $N south

  NOTE: This check only checks to see if they are equiped the item. If it's inside
        a container, or just in inventory, it will not trigger (will do the else
  HAS if_check:
  This check looks to see if the victim carries,wears, or has the argument (vnum
  or name)
  if HAS $n dagger
    if WEARS $n dagger
      say That dagger looks real sharp $N.
      say Your dagger would be better used in your hand $N.
      mob force $n wear dagger
    say You should go buy a dagger $N.

  NOTE: This check checks to see if they are equiped with, have the
        item in thier inventory, or inside a container. Just flat out, do
        they 'have' one?
  USES if_check:
  This check looks to see if the victim is wearing the TYPE of argument.
  if USES $n light
    say Not so dark is it $N?
    say Nyyaaa, it's dark and you can't see me!

  NOTE: This check checks to see if they are EQUIPPED with a certain TYPE of
        object. Rather than the name or vnum of it, it looks for object type.
  NAME if_check:
  This check checks the name of an object/victim.
  if NAME $o pie
    say Yum, what a tasty pie!
    eat pie
    say Hey, this is an $O, I wanted a pie!

  NOTE: This check looks at the name of a victim or object, useful for personal
        rooms with a NAME check to make sure it's the right person going in.
        Or an exact object they are looking for etc.
  CLAN if_check:
  This check checks the CLAN of the victim.
  if CLAN $n kot
    salute $n
    say Welcome home $N.
    say Hey, you aren't a Knight of Takhisis!!
    mob kill $n

  NOTE: This check looks at the clan affiliation of the victim.
  RACE if_check:
  This check checks the RACE of the victim.
  if RACE $n gnome
    say Wherehaveyoubeen$N?
    say You aren't a gnome, want to see the flinger?

  NOTE: This check looks at the race of the victim.
  CLASS if_check:
  This check is simple. Is the player class of $N = the argument.
  if CLASS $n thief
    say You are a thief, come on in and take my stuff!
    say Whew, you aren't a thief, you had me worried $N.

  NOTE: Useful for training halls etc.
  OBJTYPE if_check:
  This check checks the type of object of the victim.
  if OBJTYPE $o food
    say Thanks, I was very hungry!
    eat $o
    say Mmmm, that $O was delicious $N!
    say This isn't food!
    drop $o
    emote hops around rubbing $k tummy.
  VNUM if_check:
  This check checks the virtual number of the victim.
  if VNUM $i 12345
    say I am a strong guard.
    say I am a ninny squire!
    say I wish I was a guard.

  NOTE: This is useful if you wish to make a complex mprog for a few mobs, then
        have it so the mob's own vnum determines what it does based on the prog.
  HPCNT if_check:
  This check checks the type of hit point percentage of the victim.
  if HPCNT $i >= 30
    say Damn $N, you're kicking my ass!
    say I'm not quite dead!

  NOTE: Useful for making mobs flee, or bring in reinforcements. Combine with
        a if POS $n/$i fighting, for an effective program.
  ROOM if_check:
  This check checks the virtual number of the room the victim is in.
  if ROOM $i == 12345
    say I am standing in the East Wing.
    push $n west
    if ROOM $i == 12346
      say I am standing in the West Wing.
      push $n east
      say I'm not in my room.

  NOTE: This is useful if you wish to make a complex mprog for a few rooms, then
        have it so the mob's room determines what it does based on the prog.
  SEX if_check:
  This check checks the sex of the victim.
  Syntax: (1 is male, 2 is female, 0 is 'IT')
  if SEX $n == 1
    say Hey there big boy.
    if SEX $n == 2
      say Hey there hot mamma.
      say Oh my god!
      say You're an IT!!!!

  NOTE: Sex check, works well for different actions based upon sex of the PC.
  LEVEL if_check:
  This check checks the level or level range of the victim.
  if LEVEL $n >= 5
    say You're sure getting up there in levels $N.
    say You need to go level $N!
  ALIGN if_check:
  This is a value comparison. The program checks the alignment number of the
  if ALIGN $n >= 0
    say You aren't so bad.
   say You aren't so good.

  NOTE: This check is more specific than the ISGOOD/EVIL/NEUTRAL check, allowing
        you to select exact numbers other than -333 0 and 333.
  ONEY if_check:
  This is a value comparison. The program checks the combined money of the victim.
  if MONEY $i >= 300
    say I'm pretty rich
    say Dang, I dont have much money.
    emote Opens a safe.
    mob oload 12314 0 room
    get coins
    say Now I'm rich!

  NOTE: This check can be used to see if players have enough cash to pay for
        something, before they attempt it. Or give the mobs more cash etc.
  OBJVAL0-4 if_check:
  This is a value comparison. The program checks the value of the object.
  if OBJVAL $o >= 300
    say This is quite nice.
    say This is a piece of junk.
    say Who would want a $O?
  GRPSIZE if_check:
  This is a value comparison. The program checks the group size of the victim.
  if GRPSIZE $n >= 7
    say Hello there your lordship.
    say Hehe, you don't look so tough.
    mob kill $n

  NOTE: This check can be used to have the mob estimate a group size, either
        it's own group (and load more mobs), or the victims group, and fight
        (or not fight, or load more mobs ;p).

     Most of the basic numeric operators are legal and perform the same
  function as in C.
      ==       is equal to
      !=       is NOT equal to
      >        is greater than
      <        is less than
      >=       is greater than or equal to
      <=       is less than or equal to
   If_Checks In Control Flow (Summary)

     The provided list of if_checks and their arguments are below.  They
  should all be fairly obvious in what they do, but some of the more obtuse
  deserve a slight explanation. Any '==' operator can be replaced with any of
  the available ones described above.  The argument $* refers to any of the
  variables which make sense for that if_check (i.e. for an if_check which is
  referencing a person the only valid variables would be $i, $n, $t, $r or $q)
  A value type of string is a sequence of characters. It does not need to be
  included in quotes or anything like that (i.e. if name $n fido )
  There are five types of if checks:
   Type 1: Keyword/value               Explanation

      rand      num                    - Is random percentage less than or equal to num
      mobhere   vnum                   - Is a NPC with this vnum in the room
      mobhere   name                   - Is a NPC with this name in the room
      objhere   vnum                   - Is an object with this vnum in the room
      objhere   name                   - Is an object with this name in the room
      mobexists name                   - Does NPC 'name' exist somewhere in the world
      objexists name                   - Does object 'name' exist somewhere in the world
   Type 2: Keyword/compare/value       Explanation

      people     ==    integer         - Is the number of people in the room equal to integer
      players    ==    integer         - Is the number of PCs in the room equal to integer
      mobs       ==   integer          - Is the number of NPCs in the room equal to integer
      clones     ==    integer         - Is the number of NPCs in the room with the same
                                         vnum as the NPC who activated the program equal
                                         to integer
      order      ==    integer         - Is the order (of several similar NPCs) of the NPC
                                         who activated the trigger equal to integer
      hour       ==    integer         - Is the hour (game time) equal to integer
   Type 3: Keyword/actor               Explanation

      isnpc      $*                    - Is $* an NPC
      ispc       $*                    - Is $* a PC
      isgood     $*                    - Does $* have a good alignment
      isneutral  $*                    - Does $* have a neutral alignment
      isevil     $*                    - Does $* have an evil alignment
      isimmort   $*                    - Is $* an immortal (level of $* > LEVEL_HERO)
      ischarm    $*                    - Is $* affected by charm
      isfollow   $*                    - Is $* a follower with their master in the room
      isactive   $*                    - Is $*'s position > POS_SLEEPING
      isdelay    $*                    - Does $* have a delayed MOB PROGRAM pending
      isvisible  $*                    - Is $* visible to NPC who activated the program
      hastarget  $*                    - Does $* have a MOB PROGRAM target in the room
      istarget   $*                    - Is $* the target of NPC who activated the program
   Type 4: Keyword/actor/value         Explanation

      affected   $*   'affect'         - Is $* affected by 'affect'
      act        $*   'act'            - Is $*'s ACT bit 'act' set
      off        $*   'off'            - Is $*'s OFF bit 'off' set
      imm        $*   'imm'            - Is $*'s IMM bit 'imm' set
      carries    $*   'name'           - Is $* carrying object 'name'
      wears      $*   'name'           - Is $* wearing object 'name'
      has        $*   'type'           - Does $* have object of item_type 'type'
      uses       $*   'type'           - Is $* wearing object of item_type 'type'
      name       $*   'name'           - Is $*'s name 'name'
      pos        $*   'position'       - Is $*'s position 'position' (sleeping etc.)
      clan       $*   'name'           - Does $* belong to clan 'name'
      race       $*   'name'           - Is $* of race 'name'
      class      $*   'name'           - Is $*'s class 'name'
      objtype    $*   'type'           - Is $*'s item_type 'type'
  Type 5: Keyword, actor, comparison and value

      vnum       $*      == integer     - Is $*'s virtual number equal to integer
      hpcnt      $*      == integer     - Is $*'s hitpoint percentage equal to integer
      room       $*      == integer     - Is vnum of the room $* is in equal to integer
      sex        $*      == integer     - Is $*'s sex equal to integer
      level      $*      == integer     - Is $*'s level equal to integer
      align      $*      == integer     - Is $*'s alignment equal to integer
      money      $*      == integer     - Does $* have money (in gold) equal to integer
      objval#    $*      == integer     - Is $*->value[#] equal to integer (# from 0-4)


Mob Command List

  Each MOBcommand must be preceeded by "MOB"
  For Example: 
  MOB ECHOAT $n [string]

MOB Command      argument_list          Explanation

MLOAD           (mobile)               - Lets the mobile load another mobile.
OLOAD   (obj vnum) (level) (location)  - Lets the mobile load an object
                                            2ND ARGUMENT
                                            #    - the level to load the object at
                                                   Use 0 if you wish to continue building.
                                            3RD ARGUMENT
                                            None - inventory
                                            R    - in room (can also use Room)
                                            W    - on mob (must be hold/wearable)
KILL            (victim)               - Lets the mobile kill any player or mobile
                                         without murder
ASSIST          (victim)               - Lets the mobile assist another mob or player
MPDUMP          (vnum)                 - Displays the source code of a given MOB PROGRAM
ECHO            (text_string)          - Prints the message to the room at large
ECHOAT          (victim) [string]      - Prints the message to only the victim
ECHOAROUND      (victim) [string]      - Prints the message to everyone in the room other
GECHO           (text_string)          - Prints the argument to all active players
ZECHO           (text_string)          - Prints the argument to all players in the
                                         same area as the mob
ASOUND          (text_string)          - Prints the argument to all the rooms around the mobile
                                         than the mob and victim
PURGE           (target)               - Lets the mobile purge all objects and other
                                         npcs in the room, or purge a specified object
                                         or mob in the room. The mobile can
                                         purge itself, but it must be the last command.
GOTO            (dest)                 - Lets the mobile goto any location it wishes
                                         that is not private.
AT              (location) [commands]  - Lets the mobile do a command at another location.
TRANSFER      (target|'all') [location]- Lets the mobile transfer people.  The 'all'
                                         argument transfers everyone in the current
                                         room to the specified location
                                         (room vnum or mobile name)
SLIP          (target|'all') [location]- Lets the mobile slip people.  The 'all'
                                         argument transfers everyone in the current
                                         room to the specified location
                                         (room vnum or mobile name)
                                         NOTE: This is a transfer, but there is no
                                         'look' so the PC won't know it happened.
GRTRANSFER      (victim) [location]    - Lets the mobile transfer all chars in same group
                                         as the victim.
OTRANSFER       (item name) [location] - Lets the mobile to transfer an object. The object
                                         must be in the same room with the mobile.
REMOVE     (victim) [object vnum|'all']- Lets the mobile to strip an object or all objects
                                         from the victim. Useful for removing e.g.
                                         quest objects from a character.
JUNK            (object)               - Lets the mobile destroy an object in
                                         its inventory
                                       - it can also destroy a worn object and
                                         it can destroy items using all.xxxxx
                                         or just plain all of them
FORCE           (victim) [commands]    - Lets the mobile force someone to do something.
                                         Must be mortal level and the all argument only
                                         affects those in the room with the mobile.
GFORCE          (victim) [commands]    - Lets the mobile force a group something. Must be
                                         mortal level.
VFORCE          (vnum) [commands]      - Forces all mobiles of certain vnum to do something
CAST            (spell) [target]       - Lets the mobile cast spells --
                                         Beware: this does only crude checking on the target
                                         validity and does not account for mana etc., so
                                         you should do all the necessary checking in your
                                         mob program before issuing this cmd!
DAMAGE      (victim) [min] [max] (kill)- Lets mob cause unconditional damage to someone.
                                         Nasty, use with caution.
                                         Also, this is silent, you must show your own
                                         damage message... If kill parameter is omitted,
                                         this command is "safe" and will not kill the victim.
REMEMBER        (victim)               - Lets the mobile to remember a target. The target can
                                         be referred to with $q and $Q codes in MOBprograms.
                                         See also "mob forget".
FORGET          (victim)               - Reverse of "mob remember".
DELAY           (pulses)               - Sets a delay for MOB PROGRAM execution. When the
                                         delay time expires, the mobile is checked for a
                                         Mob program with DELAY trigger, and if one is
                                         found, it is executed. Delay is counted in PULSE_MOBILE
CANCEL                                 - Reverse of "mob delay", deactivates the timer.
CALL [vnum] [victim|'null'] [object1|'null'] [object2|'null']
                                       - Lets the mobile to call another MOB PROGRAM withing
                                         a MOB PROGRAM.
                                         This is a crude way to implement subroutines/
                                         functions. Beware of nested loops and unwanted
                                         triggerings... Stack usage might be a problem.
                                         Characters and objects referred to must be in
                                         the same room with the mobile.
FLEE                                   - Forces the mobile to flee.

STATUS                                 - An integar the mob can set/change on itself.
PORTALTO     (vnum to) (portal used)    - This command let's a mob create a portal 
                                         between the room it's in, and  the room you specify 
                                         (if you specify a portal then it uses THAT one, so 
                                         you can use a specific gangplank, door etc. Otherwise
                                         it uses the standard 'gate' and timers it for 15).

GOTORESET                                No argument used, this will take the mob back to
                                         the room that it loaded in, it's reset room.

      MOBcommands are special commands that allow mobiles to perform
  immortal-like actions within a MOB PROGRAM (transferring players
  or loading items, for example). Most MOBcommands them are wiz
  commands which have been changed to allow for mobiles to perform
  the commands. In this version of MOBprograms, players have been
  prevented from using these commands by adding a separate
  interpreter for MOBcommands. This also speeds up (in most cases)
  MOB PROGRAM execution when MOBcommands are used. All MOBcommands
  are preceded with the word 'MOB' on the command line.
  MOB STATUS [int]
  MPSTATUS lets you put mobiles in different states, this is
  simply an integar you attach to them, and can check on them.

  Syntax Example:
  if STATUS $i == 0
    say My status is 0, going to 1
  if STATUS $i == 1
    say My STATUS is 1, going to 2
  if STATUS $i == 2
    say My STATUS is 2, going to 0
  Note: (the 'end' in each check, good thing, or the mob will keep going)
  This command can make the mob MUCH more intelligent to react with.
  Many thanks to Tyche.

  MOB ASOUND [string]
  MOB ZECHO  [string]
  MOB GECHO  [string]

  ASOUND prints the text string to the rooms around the mobile in
  the same manner as a death cry. This is really useful for
  powerful aggressives and is also nice for wandering minstrels or
  mobiles like that in concept. (Or certain gnomish contraptions ;0)
  ZECHO prints the string to all players in the same area with the
  mobile. Short for Zone Echo.
  GECHO prints the string to all players in the game. Short for Global Echo.

  MOB ECHO [string]
  MOB ECHOAT [victim] [string]
  MOB ECHOAROUND  [victim] [string]

  ECHO displays the string to everyone in the room.
  ECHOAT displays the string to the victim only.
  ECHOAROUND displays the string to everyone except the victim.
  The three options let you tailor the message to goto victims or
  to do things sneaky like having a merchant do: mob at guard mob
  echoat guard rescue_please This coupled with a guard act trigger
  on rescue_please to: mob goto $n mob echo $I has arrived. It is
  an affective way of quickly bringing guards to the scene of an
  attack. (Note that the merchant has to be the only one of its
  kind in the game or have a unique name, otherwise the guard
  might go to different mobile...).

  MOB MLOAD [vnum]
  MOB OLOAD [vnum] {'room'|'wear'} 
                   (without second argument, loads in inventory)
  IE: MOB OLOAD 16203 0 WEAR // Loads it, wears It if possible
  IE: MOB OLOAD 16203 0 ROOM // Loads it in the ROOM
  IE: MOB OLOAD 16203 0 NONE // Loads it in it's inventory

  MLOAD creates a mobile and places it in the same room with the
  mobile. OLOAD loads the object into the inventory of the mobile.
  Even if the item is non-takable, the mobile will receive it in
  the inventory. This lets a mobile distribute a quest item or
  load a key or something. The optional 3rd parameter can be
  specified; 'room' means to load the object to the room, 'wear'
  means to force the mobile to wear the object loaded (useful for
  equipping mobiles on the fly).

  MOB KILL [victim]

  Lets a mobile kill a player without having to murder. Many
  MOBprograms end up with mob kill $n commands floating around. It
  works on both mobiles and players.


  Causes a mobile to unconditionally flee from combat. Can be used
  for example with the hit point percentage trigger to simulate
  "wimpy" behavior.

  MOB REMOVE [victim] [vnum|'all']

  Lets the mobile to strip an object of given vnum from the
  victim. Objects removed are destroyed. If the vnum is replaced
  with "all", the whole inventory of the victim is destroyed. This
  command is probably most useful for extracting quest items from
  a player after a quest has been completed.

  MOB JUNK [object]

  Destroys the object referred to in the mobile's inventory. It
  prints no message to the world and you can do things like junk
  all.bread or junk all. This is nice for having janitor mobiles
  clean out their inventory if they are carrying too much (have a
  MOB PROGRAM trigger on the 'full inventory')

  MOB PURGE [argument]

  Destroys the argument from the room of the mobile. Without an
  argument the result is the cleansing of all NPC's and items from
  the room with the exception of the mobile itself.  However,
  mppurge $i will indeed purge the mobile, but it MUST be the last
  command the mobile tries to do, otherwise the mud cant reference
  the acting mobile trying to do the commands and bad things

  MOB AT [location] [command]

  Performs the command at the designated location. Very useful for
  doing magic slight of hand tricks that leave players dumbfounded..
  such as metamorphing mobiles, or guard summoning, or corpse

  MOB GOTO [location]

  Moves the mobile to the room or mobile or object requested. It
  makes no message of its departure or of its entrance, so these
  must be supplied with echo commands if they are desired.

  MOB TRANSFER  [victim/'all'] [location]
  MOB GTRANSFER [victim] [location]
  MOB OTRANSFER [object] [location]

  Sends the victim to the destination or to the room of the mobile
  as a default.  if the victim is "all" then all the characters in
  the room of the mobile are transferred to the destination.  Good
  for starting quests or things like that.  There is no message
  given to the player that it has been transferred and the player
  doesn't do a look at the new room unless the mob forces them to.
  Gtransfer works like transfer, except that the group the victim
  belongs to is transferred with the victim. Otransfer
  transfers an object in the room.

  MOB FORCE  [victim/'all'] [command]
  MOB GFORCE [victim] [command]
  MOB VFORCE [vnum] [command] ***** Didn't seem to work on Ansalon

  Forces the victim to do the designated command. The victim is
  not told that they are forced, they just do the command so
  usually some MOB ECHO message is nice.  You can force players to
  remove belongings and give them to you, etc.  The player sees
  the normal command messages (such as removing the item and
  giving it away in the above example)  Again, if the victim is
  "all" then everyone in the mobiles room does the command. Gforce
  works like force except that it affects the group the victim
  belongs to.
  Vforce affects all mobiles with given vnum in the game world.
  This is useful for, for example, purging certain type of NPCs
  from the game (by forcing them to purge themselves).

  MOB CAST [spell] [victim]

  Lets the mobile to cast spells. Beware, this does only crude
  validity checking and does not use up any mana. All spells are
  available regardless of the race or other abilities of the
  mobile. Casting the spell occurs silently, but spell effects are
  displayed normally.

  MOB DAMAGE [victim/'all'] [min] [max] {lethal}

  Causes unconditional damage to the victim. Specifying "all" as
  victim causes damage to all characters in the room except the
  mobile. Min and max parameters define the minimum and maximum
  amounts of damage caused. By default, the damage is non-lethal,
  but by supplying the optional 'lethal' parameter, the damage can
  kill the victim. This command is silent, you must echo all
  messages yourself in the program. Useful for implementing
  special attacks for mobiles.


  MOB DELAY sets the time in PULSE_MOBILE after which the mobile's
  delay trigger is activated. If the mobile has a program defined
  for delay trigger, the program is executed when the timer expires.
  MOB CANCEL resets the delay timer.

  MOB REMEMBER [victim]

  This command enables the mobile to remember a player for future
  reference in a MOB PROGRAM. The player can subsequently be
  referred as '$q' in programs activated by the mobile. MOB FORGET
  clears the target. Note that if the first time the mobile runs a
  program, $q is automatically set to the player who triggered the
  event. Most commonly this command is used in delayed programs,
  where the mobile has to remember the player who triggered the
  original event, for example to continue conversation.

  MOB CALL [vnum] {victim} {target1} {target2}

  This command lets you call MOBprograms from within a running
  one, i.e. to call a MOB PROGRAM subroutine. The first parameter
  is the vnum of the program to execute, the second is the
  victim's name (for example $n), and the third and fourth are
  optional object names. All other parameters except vnum can be
  replaced with word 'null' indicating ignored parameter.
  MOBprograms can be called recursively, but as a safety measure,
  parser allows only 5 recursions (unless altered).

  MOB PORTALTO [vnum][portal vnum]

  This command lets mobs link areas with portals, if you don't
  specify a portal (or use #25) it will vape in 10 ticks.
  Example: We have a new gangplank portal named gangplank trsgp
  (Pick a UNIQUE name if you want the mob to be able to find/purge old ones)

  if objexists trsgp
    mob at trsgp mob purge trsgp
   if objexists trsgp
     mob at trsgp mob purge trsgp
   say Thanks, we're just arriving at the docks of Caergoth now!
   mob portalto 16200 13610
   mob echo A sailor pushes a gangplank off the stern onto the docks at Caergoth.
   mob vecho 16200 A sailor ties off the Percheron and pushes a gangplank to the dock.
   mob junk ticket

  Adding the Mobprog to the MOB

   Commands within Medit (while editing a mob, AFTER mprog created)
      addmprog [vnum] [trigger] [phrase]
  Example: (with a mob being edited)(medit)
   addmprog 13456 greet 80          - This adds mprog 13456 to the mobile,
                                      which greets pc's when they enter
                                      80% of the time.  
       delmprog 0 (or 1,2,3 etc)    - removes an mprog from a mob.

      [vnum]      The vnum of the mob program (mpedit)
      [trigger]   List of valid triggers and explanations above
      [phrase]    A single word, or a phrase within quotes
                  (example: "looks at you" or "yes" etc)
                  Or a percentile (ie '80' happens 80% of the time)

Loading Mobiles and Objects

  No doubt you want to load objects and mobiles in your MOBprograms
  with "mob oload" and "mob mload". There are two problems connected
  to this. One is that mloaded mobiles will appear without equipment
  and the other is that it is difficult to keep track of the number of
  created mobiles and objects.
  If you want to mobiles to appear in your area as a result of the
  players' action, create a "storage room". Define resets for the
  mobiles as usual (equipment etc.) and place them in the storage
  room. When you need to use the mobiles, just "mob transfer" them to
  the location you want. This is better than creating mobiles on the
  fly, since you don't have to worry about creating too many mobiles
  or equipping them, area resets take care of all that.
  If you have a MOB PROGRAM that creates new mobiles, you might want
  to make the mobiles "self-destructing". This is easiest to do with a
  random trigger that checks if the mobile is doing anything useful
  and possibly does 'mob purge $i'.
  Another possibility is to use a "purgemaster". Create a storage room
  with a single mobile. Attach a random trigger that does 'mob purge'
  to that mobile. Now, when you need to get rid of anything, just 'mob
  transfer' the mobile or item to purgemaster, and it will be
  destroyed sometime later.

Miscellaneous Information

  There is really no limit to the number of MOBprograms a given mobile
  can have. However, the length of a single command block is limited
  by the value of MAX_STRING_LENGTH.  In my version it was around 4k,
  so that is probably about 100 lines.  The indentation spaces shown
  in the example above are NOT required, but do make it easier to read
  (and debug). HOWEVER, all spaces and indentations are loaded into
  memory as a part of the program, so you're using up memory. 
  Memory usage can also be reduced by using subroutines
  (see MOB CALL).
  It IS possible to accidentally make mobiles which can trigger in
  loops. Infinite loops have been prevented, but in case of a loop,
  the mobile behavior is undefined. An example of a looping action
  would be using a RANDOM mprog with an UPDATE_ALWAYS mob, this
  doesn't actually loop, but may cause this error: 
  [*****] BUG: MOBprogs: MAX_CALL_LEVEL exceeded, vnum #
  (note: vnum refers to calling mob's vnum NOT mprog vnum)
  this is when too many mprogs are being called simultaneously, and
  the rom can't deal with them, happens with UPDATE_ALWAYS and RANDOM
  trigger combinations, especially when there are 20 of the mob, each
  with 3 random mprogs each, you do the math.
  The list of variables and triggers and if_checks will grow
  continuously as mud creators demand the ability to do certain
  things. If you have a request or if you have a new one, I don't mind
  hearing about them, and if you find bugs, I shall gladly attempt to
  squash them for you. As additions or fixes are made, the code will
  occasionally be redistributed. However, if you want a current
  version, please feel free to ask. When the code is redistributed, a
  file containing the change history from the original release will be
  provided (when possible) to allow you to patch in the changes with
  low grief. 
  - Note: Who do we call again? If someone knows, please let the
  immortal staff know.