> From: Julian Buckley <s348266@student.uq.edu.au>
>
> This really has me stumped. I'd appreciate all help.
>
> Okies, take your normal stock do_load function, but more importantly the
> obj_loading section. Okies, now inside that, I have placed a call so
> that if the PC is < LVL_GOD, they get called back and are not allowed to
> load the item. i.e....
> ***SNIP***
> obj = read_object(r_num, REAL);
> if (GET_OBJ_EXTRA(obj) = ITEM_LIMITED && GET_LEVEL(ch) < LVL_GOD) {
if (IS_OBJ_STAT(obj, ITEM_LIMITED) && (GET_LEVEL(ch) > LVL_GOD)) {
>
> Now, assume the item has GLOW HUM LIMITED as its extra flags. With code
> the way it is, when I load this item, all the extra flags get cleared
> once it gets loaded. The item still has all of it's stats etc, but the
> extra flags get wiped. If I change GET_OBJ_EXTRA(obj) = ITEM_LIMITED to
> use a "==", the item keeps its flags, but any immortal with the load
> command can load it. If I move that bit of code above the obj =
If you use '=' you assign ITEM_LIMITED to the extra flag variable.
If you use '==' the check will work, if the only extra flag is
ITEM_LIMITED. If the object has more flags, you are doing is
checking if '1 == 3'.
What you should use is IS_OBJ_STAT, as I have shown above. The macro
will check if the ITEM_LIMITED bit is set in the extra flags variable.
/Johan
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST