cdirt/ascii/
cdirt/data/BULL/
cdirt/data/ZONES/PENDING/
cdirt/pending/
cdirt/src/utils/
cdirt/utils/
---------------------------------------------------------------------
USING THE MUD PARSER
---------------------------------------------------------------------

Thought i would include this little file to explain the parser the mud
uses, because i rewrote it and noticed my new one may be different from
the old one....


Parse stage 1: 

Macros are expanded, and other misc. functions are run.
(example: !, 0-7, ', :...)

Parse stage 2:

When the parser assigns pl1, pl2, ob1, ob2, item1 & item2, it looks up
the player's current pronouns and uses the correct values.  Thus give
him longsword will expand to give <player> longsowrd.  also, the parser
will autmagically skip prepositions {to from out of...}


mkglobals
---------------

<verb> <word1> <word2> <remainder>

example: 'chat I am the Lizard king'

verb: number taken from the verb list (20 or whatever)
txt1: assigned to beginning of word1  ("I am the lizard king")
txt2: assigned to beginning of word2  ("am the lizard king")
item1: assigned to word1 ("I")
item2: assigned to word2 ("am")
ob1: word1's object number or -1  ("am" == -1)
ob2: word2's object number or -1  ("the" == -1)
pl1: word1's player number or -1  ("am" == -1)
pl2: word2's player number or -1  ("the" == 1)


----------------------------------------------------------------------------
PLAYER INDEX FUNCTIONS
----------------------------------------------------------------------------

In addition, fpbns (find player by name short) and fpbn (find player by name)
have been rewritten into two functions, fmbn (find mob/player by name) &
fpbn (find player by name).

fpbn will only check players
fmbn will check players & mobiles
player names in both of these functions may be abbreviated


----------------------------------------------------------------------------
USING INTSET NUMBERS
----------------------------------------------------------------------------

Intsets aren't really that complicated.  They are basically the following:

p->len    [an integer describing the length of list]
p->list   [the list of numbers, a malloc'd array of characters]
p->maxlen [the max length of the list before a resize is needed]

So the values go into p->list[0]... p->list[p->len - 1]
You can reference things in intsets by doing something like the following:

for (i = 0; i < lnumchars(ploc(mob)); i++)
  bprintf("Mob number = %d.\n", lmob_nr(i, ploc(mob)));

So it is's a basic loop done to each of the characters in the 
mob-intset for the room of the mobile.  lmob_nr(i, ploc(mob)) goes
to the room data and picks out the i-th mobile's number.  the same
sort of thing is done with inventories and zones too... pnumobs()
pobj_nr...

The advantage to doing it this way is that lnumchars is recalculated
each time, and it allows you to delete things effectively.  the
current value was removed.

Giancarlo