== Tyche's MPStatus command for Mobprogs ==

This snippet allows you to store and read state in MobProgs.  
A very simple but powerful addition to MobProgs.

In mob_prog.c add this define...

#define CHK_STATUS      (53)

In the fn_keyword[] table add this...

  "status",  /* if status $n == 1000  - checks status value on mob */

In cmd_eval() near the end after case CHK_GRPSIZE: add...

  case CHK_STATUS:
    lval = lval_char->mprog_status;
    break; 

Add the following to the CHAR_DATA structure in merc.h

  int   mprog_status;

Add an entry to mob_cmd_table[] in mob_cmds.c

  {"status", do_mpstatus},

Add this routine or similar to mob_cmds.c

void do_mpstatus (CHAR_DATA * ch, char *argument)
{
  char arg[MIL];
  char errbuf[MIL];

  if (ch == NULL)
    return;

  one_argument (argument, arg);
  if (!is_number (arg)) {
    sprintf (errbuf, "MpStatus: invalid arg from mob vnum %d.",
        ch->isNPC() ? ch->pIndexData->vnum : 0);
    wiznet (errbuf, NULL, NULL, WIZ_PROGS, 0, 0);
    return;
  }
  ch->mprog_status = atoi (arg);
}

Get it working and now your mprogs have the capability to save and query state.
The following fight trigger is an example of usage:

if status $i == 0
  poke $n
  say You look delicious, $n.
  mob status 1
  end
endif
if status $i == 1
  say I have a feeling your flesh will be rather tough.
  mob echo A bolt of energy flies from $I's hand!
  mob cast 'force bolt' $n
  chortle
  mob status 2
  End
endif
if status $i == 2
  if rand 25
    mob status 0
  endif
endif
end