== 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