Looking through the act function the other day, as I needed to add a new
argument to it, I noticed that TO_SLEEP was a hack of sorts (comments in
code).
To me, this didn't make a lot of sense so I converted TO_CHAR, TO_VICT,
TO_NOTVICT, and TO_ROOM to bitvectors, and also TO_SLEEP as well.
So, here's the way I did it, works very well and makes adding arguments
to act easy, because then you don't really need to add an argument, just
pass it a new bitvector along with TO_CHAR, TO_VICT, TO_NOTVICT, and
TO_ROOM:
In comm.h, change the defines for TO_CHAR, etc to:
#define TO_CHAR (1 << 0) /* To Char ACT Bit */
#define TO_VICT (1 << 1) /* To Vict ACT Bit */
#define TO_NOTVICT (1 << 2) /* To Notvict ACT Bit */
#define TO_ROOM (1 << 3) /* To Room ACT Bit */
#define TO_SLEEP (1 << 4) /* If sleeping, send message */
Then in comm.c in act(),
Where it checks if sleep is there and removes it, delete that whole block
of code, and add:
if (IS_SET(type, TO_SLEEP))
sleep = TRUE;
Then just replace all the if (type == TO_<whatever>) to:
if (IS_SET(type, TO_<whatever))
It's what I did, works like a charm and then you can pass whatever else
you want to act by doing:
act("$n smiles at $N.", FALSE, ch, 0, vict, TO_ROOM | TO_<new act define>)
Makes passing this easier :)
Rasdan
=--=--=--=--=--=--=--=--=--=--=
I have done so much,
with so little, James C. Thomas Jr.
for so long, Rasdan
That I can do anything Head Coder of Finality!
with nothing.
=--=--=--=--=--=--=--=--=--=--=
Finality is based upon CircleMUD 3.0, check us out:
finality.mudservices.com 5555
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST