The first thing you want to do is declare it in tables.c under extra_flags right before: { NULL, 0, 0 } add: { "nodonate", ITEM_NODONATE, TRUE }, what this does is tells the mud that nodonate is the string attached to ITEM_NODONATE Now open merc.h and search for #ITEM_GLOW. You will want to look for the next highest letter. For example A-Z, X is missing. So you can put a ITEM_ there. You can use letters up to (ee). After that no more ITEM_ can be used for that flag. add: #define ITEM_NODONATE (X) Open handler.c and search for the char *extra_bit_name( int extra_flags ) This is what assigns the name to each ITEM_ Add anywhere in this function: if ( extra_flags & ITEM_NODONATE ) strcat( buf, " nodonate" ); This should be all that is required to make the flag work. Now for the hard(er) part As this is right now it is nothing more than a flag. The next step is to make it so when someone tries to donate the object it tells them that the object can't be. Open act_info.c and search for do_donate add somewhere before if (ch->in_room != get_room_index(OBJ_VNUM_PIT)) { act("$n donates {R$p{x.",ch,obj,NULL,TO_ROOM); act("You donate {R$p{x.",ch,obj,NULL,TO_CHAR); } this: if (IS_SET(obj->extra_flags, ITEM_NODONATE) { send_to_char("This item has a nodonate flag on it.\n\r",ch); return; } ------------------------END--------------------------