On Thu, 19 Dec 1996, The Dark One wrote:
> could I do this?
> #define AFF_FLAGS(ch) ((ch)->char_specials.save.affected_by[4])
You wouldn't want to, since that'd still just give you 32 bits.  You
want the following two macros:
  #define FIELD(x)	((x) < 32 ? 1 : (x) / 32)
  #define BIT(x)        ((x) < 32 ? (x) : (x) % 32)
Now we change AFF_FLAGS(ch) to:
  #define AFF_FLAGS(ch, v) ((ch)->char_specials.saved.affected_by[(v)])
And AFF_FLAGGED(ch) to:
  #define AFF_FLAGGED(ch, bit) \
    IS_SET(AFF_FLAGS((ch), FIELD(bit)), (1 << BIT(bit)))
Note that I changed the original posters FIELD/BIT [whatever he named
them] macros.  BIT(x) was original defined as ((x) % 32) which, when the
number was under 32 would return a decimal value [and always equate to
1].  I've still yet to test this, but it seems feasible from where I'm
sitting...
--
Daniel Koepke
dkoepke@california.com
Forgive me father, for I am sin.
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
|   http://cspo.queensu.ca/~fletcher/Circle/list_faq.html   |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST