> > void update_priest_flag (object *god, object *exp_ob, uint32 flag) { > > if(QUERY_FLAG(god,flag)&&!QUERY_FLAG(exp_ob,flag)) > SET_FLAG(exp_ob,flag); > else if(QUERY_FLAG(exp_ob,flag)&&!QUERY_FLAG(god,flag)) > { > if (!(QUERY_FLAG(arch_to_object(exp_ob->arch),flag))) > CLEAR_FLAG(exp_ob,flag); > }; > } Err, arch_to_object should not be used, as that ends up creating a nice memory leak (one for each functiion call). What you really want to be doing is something like: if (!(QUERY_FLAG(exp_ob->arch->clone,flag))) or the like (not sure if it should be .clone there). Theres already enough memory leaks out there - we don't want to be adding more.